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

how to implement a 'nested' cost function in Gecode?

本文关键字:嵌套 函数 实现 Gecode      更新时间:2023-10-16

一般来说,我对编码和约束编程是新手。

到目前为止,我还没有遇到太多的麻烦来挑选gecode,它很棒。但我想知道执行"嵌套"成本函数的最佳方法是什么。具体来说,我想求X的最小值,但在X等于的解的空间里,更喜欢Y最小的解吗?我也许可以通过定义一个像X*large_number+Y这样的成本函数来破解它,但如果有一个好的解决方案,我更愿意这样做。

如果有人能告诉我如何在Gecode中实现这个,那将是非常有帮助的。谢谢!

您可以使用Gecode中空格中的约束成员定义任何类型的优化标准。参见《用Gecode建模和编程》第2.5节中的示例。在您的示例中,直接的方法是添加一个约束成员,该成员在之前的最佳解决方案答案和当前空间之间添加字典约束。

也就是说,一般来说,基于字典顺序的优化可能是浪费的(太多的搜索)。通常最好先运行优化第一个组件(在您的例子中是X)的搜索。之后,使用固定的第一个组件值(X设置为最佳可能值)重新运行搜索,并优化第二个值(在您的示例中为Y)。根据需要迭代成本中的所有元素