在 Google 的 OR 工具中动态增加下限

Dynamically increasing lower bound in Google's OR tools

提问人:MrKhonsu 提问时间:11/15/2023 最后编辑:AndreasMrKhonsu 更新时间:11/15/2023 访问量:54

问:

我想知道是否有办法动态增加方法中变量的下限?on_solution_callback(self)

这只是我想到的一种方法。

我有一个变量数组:

vars = [model.NewIntVar(0, suitableUpperBound, f'x{i}') for i in range(some_number)]

问题是,一旦我为特定的数组配置(比如,[0,1,4,5]是一个解决方案)找到了解决方案(使用我所拥有的约束),我不希望算法搜索具有相同vars[-1]elemenent的解决方案(即相同的最后一个元素)。我希望它增加到“6”并寻找解决方案。

我想到的一种方法是每次找到解决方案时动态改变下限(因此它从另一个位置开始搜索),但是有没有更严格的数学方法来实现这一目标?

python 或工具 约束编程 运筹学

评论


答:

1赞 Laurent Perron 11/15/2023 #1

一旦开始求解。该模型是只读的。

解决方案回调不允许修改模型。

您可以修补模型以更改变量的边界。这里有一些关于如何做到这一点的轻微提示。