Gurobi条件约束
前几天刷到一个公众号上的推文,关于CVRP的两索引的建模,其中有一个约束是条件约束。
之前我遇到条件约束都是手工转成线性约束,然后输入gurobi中,一方面是锻炼自己线性化的能力,另一方面是懒的翻手册查找方法。
然后发现Gurobi是真好用,内置了条件约束的添加方法。
条件约束的广义形式见文章末尾的参考来源,这里只是举一个例子, 如下:
上面的约束表明只有在的情况下,才成立,其中是决策变量。
Gurobi添加的约束如下(python):
1 | m.addConstrs((X[i,j] == 1) >> (Y[i] + demand[j] == Y[j]) for i,j in A if i!=1 and j!= 1) |
方法不止这一种,上述的是重载的形式,原来的形式应该使用addGenConstrIndicator
这个方法,详见参考链接。
参考文章:
https://gurobi.com/documentation/current/refman/py_model_agc_indicator.html