如何在Gecode中实现'嵌套'成本函数?

时间:2011-09-13 22:34:12

标签: c++ algorithm constraint-programming gecode

我不熟悉gecode和约束编程。

到目前为止,我在拾取地理代码时没有遇到太多麻烦,这很棒。但我想知道执行“嵌套”成本函数的最佳方法是什么。具体来说,我希望最小化X,但在X相等的解决方案的空间内,更喜欢最小化Y的解决方案?我可以通过定义一个看起来像X * large_number + Y的成本函数来破解它,但如果有一个很好的解决方案,我更愿意这样做。

如果有人能指出我解释如何在Gecode中实现这一点,那将非常有帮助。谢谢!

1 个答案:

答案 0 :(得分:2)

您可以使用Gecode空间中的约束成员定义任何类型的优化条件。有关示例,请参阅Modeling and Programming with Gecode中的第2.5节。在您的情况下,直接的方法是添加一个约束成员,在先前的最佳解答和当前空间之间添加一个词典约束。

话虽如此,一般来说,基于词典顺序的优化可能是浪费(搜索太多)。首先运行搜索优化第一个组件(在您的情况下为X)通常会更好。之后,重新运行搜索,并修复第一个组件值(X设置为最佳可能值),并优化第二个值(在您的情况下为Y)。根据需要对成本中的所有元素进行迭代。