前言:
- CSDN博客和公众号“ManTou馒头”同步发布博文、推文,都是学习交流所得,水平有限~
- CSDN交流有延时,通常一两天才能看到粉丝的评论和私信,私信还只能发三条~
- 公众号不只是ManTou本人运营,大家关注自己想关注的内容就可以啦~
Gurobi:Python API
小声哔哔:ManTou也是用到才去看的,不足之处大家指正
Gurobi参考手册
Gurobi随软件安装有指导手册,refman和example,文件路径是:Gurobi安装路径\gurobi903\win64\docs。
大家可以参考官方手册使用Gurobi
关键函数使用
- Model(name=“”)
- name是模型的名称, 返回值是一个model对象,初始情况下没有变量和约束条件
- 调用方式:
model1 = Model()
- Model.addVar(lb, ub, obj, vtype, name,column)
- lb是下限,ub是上限,obj是目标的优化系数,vtype是变量类型,name是变量的名称,column是变量参与的约束以及优化系数。
- 所有的参数都是可选的,不指定就是默认值
- 变量的类型有GRB.CONTINUOUS, GRB.BINARY, GRB.INTEGER, GRB.SEMICONT, or GRB.SEMIINT
- Model.addConstr( lhs, sense=None, rhs=None, name="" )
- lhs是约束的右侧,rhs是约束的左侧,sense是约束的类型,有(GRB.LESS_EQUAL, GRB.EQUAL, or GRB.GREATER_EQUAL
- name是约束的名称
- Model.addConstrs( generator, name="" )
- generator是Python表达式。这种表达方式比 2 直观一点,返回值是tupledict类型的
- 例:model.addConstrs(x[i] + x[j] <= 1 for i in range(5) for j in range(5))
- 注意:generator表达式只能由一个比较关系。
- Model.update()
- 对修改了的模型进行更新
- Model.setObjective(expr, sense)
- 设置模型的优化函数
- expr是优化目标表达式,sense是优化类型,优化类型有GRB.MINIMIZE和GRB.MAXIMIZE,如果省略sense可以使用ModelSense函数来指定优化的类型。
- Model.write(filename)
- 将优化模型,解向量,基向量,起始向量或参数设置写入文件,文件的类型有.mps, .rew, .lp .rlp,也可以只保存的模型的一部分,详见refman
- Model.getVars()
- 返回模型中的所有变量
更多复杂的使用方法参考fefman和examples