【问题标题】:how to implement a 'nested' cost function in Gecode?如何在 Gecode 中实现“嵌套”成本函数?
【发布时间】:2011-09-13 22:34:12
【问题描述】:

我一般是地理编码和约束编程的新手。

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

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

【问题讨论】:

  • 您似乎正在尝试执行一种多目标优化。我不确定 GeoCode 是否支持它。例如,Minion 明确表示它只支持一个目标函数(或根本不支持)。

标签: c++ algorithm constraint-programming gecode


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-26
    • 2017-12-29
    • 2012-12-09
    • 2020-07-16
    相关资源
    最近更新 更多