赞
踩
一、优化求解器
从编程的角度,大家可以把它理解为一个专门求解优化/整数规划模型的算法包,你可以用任何编程语言(C/C++、Java、Python)去调用这个包里的方程,只要你把你要求解的整数规划模型目标方程和系数矩阵输入进去(告诉它你要求解的具体问题),它就会给你求解出结果。
二、IBM ILOG Cplex
为线性规划、混合整数规划、二次规划和二次约束规划问题提供灵活的高性能数学规划求解器。这些求解器包括用于混合整数规划的分布式并行算法,支持利用多台计算机来解决难题。是一种商业整数规划求解器。
网址:IBM ILOG CPLEX Optimization Studio
支持模型:混合整数(平方)规划、约束规划问题(Constraint programming)
支持语言:C/C++、Java、Python、Matlab等
特点:支持Benders分解模块(仅此一家)、速度Top2
三、安装
四、求解模型
在Python环境下只需如下四步:
import cplex
prob = cplex.Cplex() # 此处的prob可以是任意变量名
prob.objective.set_sense(...) # 设置目标方程的取值方向:求最大值/最小值
prob.variables.add(...) # 添加变量
prob.linear_constraints.add(...) # 添加约束条件
prob.solve()
print("Solution value = ", prob.solution.get_objective_value())
print(prob.solution.get_values())
# The MIP problem solved in this example is:
#
# Maximize x1 + 2 x2 + 3 x3 + x4
# Subject to
# - x1 + x2 + x3 + 10 x4 <= 20
# x1 - 3 x2 + x3 <= 30
# x2 - 3.5x4 = 0
# Bounds
# 0 <= x1 <= 40
# 0 <= x2
# 0 <= x3
# 2 <= x4 <= 3
# Integers
# x4
import cplex
prob=cplex.Cplex()
prob.objective.set_sense(prob.objective.sense.maximize)【minimize】
my_obj = [1, 2, 3, 1]
my_ub = [40, cplex.infinity, cplex.infinity, 3]
my_lb = [0, 0, 0, 2]
my_ctype = "CCCI"
my_names = ["x1", "x2", "x3", "x4"]
prob.variables.add(obj=my_obj, lb=my_lb,ub=my_ub,types=my_ctype,names=my_names)
my_rhs = [20, 30, 0]
my_rownames = ["r1", "r2", "r3"]
my_sense = "LLE"
rows = [[["x1", "x2", "x3", "x4"], [-1, 1, 1, 10]],
[["x1", "x2", "x3"], [1, -3, 1]],
[["x2", "x4"], [1, -3.5]]]
prob.linear_constraints.add(lin_expr=rows, senses=my_sense,rhs=my_rhs, names=my_rownames)
prob.solve()
print("Solution value = ", prob.solution.get_objective_value())
print(prob.solution.get_values())
四、实际应用
短期水火电调度属于大规模、离散、非线性且非凸的数学规划问题。系统决策变量包括了离散和连续变量;每台机组都有各自的运行约束和物理约束,水电系统中还有库容约束。因此,这一问题在数学上是一个复杂的混合整数规划问题,也是一个NP难题。由于问题的困难性,直接寻找最优解几乎不可能。目前较多采用的为次优化算法,即寻找一个满意的解而不是最优解。近年众多研究表明Lagrange松弛法是一种求解此类问题的有效算法,它的主要优点包括:能够灵活处理多种约束;计算量随着问题规模的增大仅呈线性增长;得到的对偶间隙可以定量评价可行调度方案的优劣;Lagrange乘子有着重要的经济意义等。
但是,即使在这种算法框架下,水电调度子问题仍然没有有效的求解方法。然而,正如上文所述,CPLEX综合了多种算法的优点,它可以在较短的时间内解决多变量的、复杂的、混合整数规划问题,尤其是其中的混合整数优化程序对很多实际的混合整数规划问题的求解都是行之有效的。
五、其他优化求解器
国外: Gurobi
网址:Gurobi - The Fastest Solver - Gurobi
支持模型:混合整数(平方)规划、Constraint programming
支持语言:C/C++、Java、R、Python、Matlab等
特点:速度Top1、价格最高
国内:杉数科技的Cardinal
Cplex的几种使用方法总结2019-05-07 - 简书 (jianshu.com)
用CPLEX写个数学模型就这么难? - 简书 (jianshu.com)
用户手册:CPLEX 的示例 - IBM 文档
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。