今天我在写列生成代码时遇到一个问题,因为变量是按列生成的,所以目标函数其实是随着变量的增加变化的,这时候原本用来设置目标函数的语句:(MP是我gurobi模型的名称)
MP.setObjective(obj, GRB.MAXIMIZE)
在这里就不适用了,所以怎样直接改变模型的优化方向呢。
我经过一番探索终于找到了这个属性ModelSense
。通过以下三种方法的任意一种,就可以改变min或者max啦!
MP.setAttr('ModelSense', GRB.MAXIMIZE)
MP.setAttr(GRB.Attr.ModelSense, GRB.MAXIMIZE)
MP.setAttr(GRB.Attr.ModelSense, -1) # -1最大,1最小
另外,还有模型中许多参数可以查阅或调整,均通过Model.setAttr('名称',取值)
以及Model.getAttr('名称')
就可以轻松实现啦!可调整及不可调整的属性列在下表中。