如何为Gurobi中基于距离矩阵D的x[i,j,k]高效添加非负约束?
Gurobi批量添加变量下界约束的高效方法
针对大规模矩阵下给变量x[i,j,k]添加x[i,j,k]≥0约束效率低的问题,有两种高效方案:
方案一:创建变量时直接指定下界
Gurobi的addVars方法支持通过lb参数批量设置变量下界,无需事后循环添加约束。修改你的代码如下:varsGurobi = [(i,j,k) for i in range(len(D)) for j in range(len(D[i])) for k in range(len(D[i][j])) if D[i][j]] x = model.addVars(varsGurobi, vtype=gp.GRB.INTEGER, lb=0)这种方式在变量初始化阶段就完成下界设置,Gurobi内部会批量处理,效率远高于循环添加约束。
方案二:已创建变量时批量修改下界
如果变量已经创建完成,可以使用setAttr方法批量设置所有变量的下界,避免逐个循环操作:x.setAttr('LB', 0)该方法会一次性对所有变量应用下界设置,同样能大幅提升效率。
内容的提问来源于stack exchange,提问作者kGame
相关产品推荐
相关产品推荐

