最近开始用gurobi解模型了,分享一下我的小白学习笔记。
Gurobi建模过程归纳成几步走:
- 创建全部的变量
- 创建目标函数
- 创建约束条件
- 更新与程序运行
注意:变量和约束之间不要混合,比如写一部分变量,写一部分约束条件。
归纳一下每个步骤的具体代码:
#gurobi 建模常用 """ 1.创建模型 m=Model() #m即为创建的模型 2.创建变量 x=m.addVar(lb=0,ub=5,vtype=GRB.CONTINUOUS,name="x") #添加单个变量,其中lb为变量上限,ub为变量下限,vtype为变量的数据类型,name为变量名称 GRB.CONTINUOUS 表示大于等于零的连续型实数 GRB.INTEGER 表示整数型 GRB.BINARY 表示0-1型 y=m.addVars(3,3,lb=0,ub=5,vtype=GRB.CONTINUOUS,name="x") #添加多个变量,其中3,3指变量的索引,其他的与addvar相同l 即:addVars( **indices, lb,ub,vtype = GRB.CONTINUOUS, name = " " ) 创建变量示例:
z_ij=m.addVars(4,3,vtype=GRB.BINARY,name="z_ij") #此处i=0,1,2,3
q_i=m.addVars(4,vtype=GRB.BINARY,name="q_i")
和range同样,也是取不到stop
3.增加约束
m.addConstr(x+y<=5,"constr name")
4.目标函数
m.setObjective(x+y+2*z,GRB.MAXIMIZE)
5.优化求解
m.update() #更新模型
m.optimiza() #模型求解
6.输出结果
m.write("sum1.lp") #将模型输出为名称为sum1的lp文件
print(m.getVars()) #输出最后的变量结果
用这几步就可以做到简单的优化模型的求解了