采用Gurobi(python)求解优化问题的主要结构如下:
1.引入Gurobi环境:from gurobipy import *
2.创建Gurobi模型:Model()
3.声明变量:Model.addVar()
4.输入约束:Model.addConstr()
5.输入目标函数:Model.addConstr()
6.模型求解:Model.optimize().
eg:求解如下数学模型
求解代码如下:
from gurobipy import * # 模型名称 Dcx = Model() # 声明变量 x1 = Dcx.addVar(lb = 0,ub = GRB.INFINITY, name = "x1") x2 = Dcx.addVar(lb = 0,ub = GRB.INFINITY, name = "x2") x3 = Dcx.addVar(lb = 0,ub = GRB.INFINITY, name = "x3") x4 = Dcx.addVar(lb = 0,ub = GRB.INFINITY, name = "x4") x5 = Dcx.addVar(lb = 0,ub = GRB.INFINITY, name = "x5") # 添加约束 Dcx.addConstr(x1 + 2*x2 + x4 == 100, "CON1") Dcx.addConstr(2*x3 + 2*x4 + x5 == 100, "CON2") Dcx.addConstr(3*x1 + x2 + 2*x3 + 3*x5 == 100, "CON3") # 建立目标函数 Dcx.setObjective(0*x1 + 0.1*x2 + 0.2*x3 + 0.3*x4 + 0.8*x5,GRB.MINIMIZE) # 输出名为‘dcx’的 .lp文件 Dcx.write("dcx.lp") # 模型求解 Dcx.optimize() print('***************************') print('最优解: ') print('Z = ',Dcx.ObjVal) # 输出目标值 print('x1 =',x1.x) # 输出 X1 的值 print('x2 =',x2.x) print('x3 =',x3.x) print('x4 =',x4.x) print('x5 =',x5.x) print('***************************')
求解结果如下:
LP文件如下:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)