如何在没有附加约束的情况下固定变量值

时间:2020-03-04 00:21:49

标签: python pulp

我需要进行Fix&Optimize启发式操作,并且需要修复某些变量的最后一个值,但没有附加约束,因为问题很大,而且约束更严重。

我不想要的示例:

prob.addConstraint(Y [m,j,t,o] == 154,56。

我在变量[dict]中具有初始值,并使用

        for k, v in varsdict.items():
            k.setInitialValue(v) 

用于定义值,但需要修复几乎一个。

我使用solve>

求解器=纸浆.CPLEX_CMD(msg = 1,mip_start = 1,时限='3600') prob.solve(solver)

感谢社区

2 个答案:

答案 0 :(得分:0)

您可以直接修改变量的边界,请参见以下相关问题:How do I change the bounds of a LpVariable in PuLP dynamically?

因此,您可以将变量的下限和上限设置为相同的值,变量将被固定。

答案 1 :(得分:0)

谢谢您的回答丹尼尔,我尝试了这种方法,但是解决方案在启发式方法上有所变化。我每次都运行5个修复所有变量以进行测试检查,并且目标值不同。

   for k, v in varsdict.items():
                k.setInitialValue(v) 
                k.lowBound= v
                k.upBound=v                                                                                                                  prob.solve.pulp.CPLEX_CMD(msg=1, timelimit = time_limit)                                                     

解决方案是:运行FO

1   202397489,1

2   202397489,1

3   265216100

4   202397489,1

5   265216100
相关问题