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