最优化算法涵盖线性规划、非线性规划、整数规划、组合规划、图论、网络流、决策分析、排队论、可靠性数学理论、仓储库存论、物流论、博弈论、搜索论和模拟等分支。
python基础:列表、元组、字典、集合、程序控制语句、函数、类与实例、迭代
gurobi基础:multidict 、tuplelist、 tupledict、 addVar、 addVars、 addConstr、 addConstrs、optimize、MINIMIZE、MAXIMIZE、update、obj、GRB.INFINITY、GRB.CONTINUOUS、GRB.BINARY、GRB.INTERGER
LP
### version1
import gurobipy as grb
m = grb.Model()
#决策变量
x = m.addVars(3,lb=-grb.GRB.INFINITY,ub=grb.GRB.INFINITY,name ="d")
#目标函数
m.setObjective(x[0]+3*x[1]+3*x[2],grb.GRB.MINIMIZE)
#添加约束
m.addConstr(x[0]+2*x[1]>=3,"con1")
m.addConstr(x[2]+ x[1]>=5,"con2")
m.addConstr(x[0]+ x[2]==4,"con3")
m.update()
# 求解
m.optimize()
m.write("LP_Expression1.lp")
#最优解
m.x
### version2
from gurobipy import *#在Python中调用gurobi求解包
M_LP=Model("LP_Exam") # 创建模型
#变量声明
#OF =M LP.addVar(lb=-GRB.INFINITY,ub=GRB.INFINITY,name="OF")
x1 =M LP.addVar(lb=-GRB.INFINITY,ub=GRB.INFINITY, name="x1")
x2 =M_LP.addVar(lb=-GRB.INFINITY,ub=GRB.INFINITY,name="x2")
x3 =M_LP.addVar(lb=-GRB.INFINITY,ub=GRB.INFINITY, name="x3")
#设置目标函数
M_LP.setObjective(x1+3*x2+3*x3,GRB.MINIMIZE)
#添加约束
M_LP.addConstr(x1+2*x2>=3,"Con1")
M LP.addConstr(x2+x3>=5,"Con2")
M_LP.addConstr(x1+x3==4,"Con3")
# Optimize model
M_LP.optimize()
# 输出名为‘LP_Expression'的.Ip文件
M_LP.write("LP_Expression1.lp")
#输出结果
print('**************')
print(' The optimal solution ')
print('**************')
print('OF is :',M_LP.ObjVal) #输出目标值
print('x1 is :',x1.x) # 输出X1 的值
print('x2 is :',x2.x)
print('x3 is :',x3.x)
两个版本的线性规划求解,一个代码少点,一个代码多点,当然在业务场景中,代码越
少越好。
上一条:GraphPad Prism 打击盗版软件声明
下一条:GUROBI数学规划优化器