快速处理强制值排序列表
回答你好,
我正在使用的问题gurobipy一些变量只能来自一个特定的值列表,同样不分开,但排序,例如:
sortedlist = (0.20, 0.33, 0.45, 0.61, 0.80, 0.85)
然后我执行Gurobi使用这些值通过引入二进制值为每个允许价值和约束,一个应该选择:
binValues = model.addVars (len (sortedlist) vtype = GRB.BINARY)
值= model.addVar ()
模型。addConstrs (((binValues[我]= = 1)> >(值= = sortedlist[我])我的范围(len (sortedlist))))
model.addConstr (gp。quicksum (binValues[我]我的范围(len (sortedlist))) = = 1)
此外,我有一个约束条件的值应该小于某一其他变量:
模型。addConstr(值< = value2)
如果我们将value2= 0.4,目标是最大化值,我假设Gurobi仍在列表中的其他值即使它认为0.45是不可行的。
首先,我的问题是,如果这是真的吗?如果是的,有办法告诉Gurobi停止处理排序列表在这一点上,为了减少计算时间吗?
0
-
官方的评论
我们的解手机万博登录算器不依赖枚举是否点是可行的。事实上,这种方法并不现实问题,他们通常有一个天文数字的可行的解决方案。
简而言之,我们的解决者认为可行域(即数手机万博登录学对象代表可行点的集合)。几何,每个约束线性规划被定义作为一个超平面或半空格;可行域,这恰好是一个凸集,只是这些的交集。然后,它考虑了目标函数得到最大改善的方向(又名梯度)的点(s)在这个可行域优化给定的标准。任何最佳点总是躺在一个顶点或边(即凸组合的顶点)的可行域。单纯形法由在来访的有前途的顶点,直到没有改善。
最后,当你实现看起来是正确的,有一个选择:不是为每个元素指定一个指标约束在列表中,您可以指定一个约束,迫使变量值等于重之和的二进制变量,其中每个重量是在列表中相应的元素。
-
嗨,胡安,
谢谢你的清楚的解释和建议的另一种方式制定这个问题。
0
请登录留下你的评论。
评论
2的评论