我是gecode和约束编程的新手。
到目前为止,拾起gecode并没有很多麻烦,这很棒。但是我想知道执行“嵌套”成本函数的最佳方法是什么。具体来说,我正在寻求最小化X,但是在X相等的解决方案范围内,我希望最小化Y?我可能可以通过定义一个看起来像X * large_number + Y的成本函数来破解它,但是如果有一个好的解决方案,我宁愿正确地做到这一点。
如果有人可以指点我解释如何在Gecode中实现这一点,那将非常有帮助。谢谢!
最佳答案
您可以在Gecode中使用空格中的约束成员来定义任何类型的优化条件。有关示例,请参见Modeling and Programming with Gecode中的2.5节。在您的情况下,直接的方法是添加一个约束成员,该成员在先前的最佳解决方案答案和当前空间之间添加词典顺序约束。
话虽这么说,基于字典顺序的优化通常是浪费的(搜索太多)。最好先运行搜索来优化第一个组件(在您的情况下为X),这样通常会更好。之后,在第一个成分值固定(X设置为最佳值)的情况下重新运行搜索,并优化第二个值(在您的情况下为Y)。根据需要对成本中的所有元素进行迭代。