如何在 Gecode 中实现"嵌套"成本函数?
how to implement a 'nested' cost function in Gecode?
一般来说,我对编码和约束编程是新手。
到目前为止,我还没有遇到太多的麻烦来挑选gecode,它很棒。但我想知道执行"嵌套"成本函数的最佳方法是什么。具体来说,我想求X的最小值,但在X等于的解的空间里,更喜欢Y最小的解吗?我也许可以通过定义一个像X*large_number+Y这样的成本函数来破解它,但如果有一个好的解决方案,我更愿意这样做。
如果有人能告诉我如何在Gecode中实现这个,那将是非常有帮助的。谢谢!
您可以使用Gecode中空格中的约束成员定义任何类型的优化标准。参见《用Gecode建模和编程》第2.5节中的示例。在您的示例中,直接的方法是添加一个约束成员,该成员在之前的最佳解决方案答案和当前空间之间添加字典约束。
也就是说,一般来说,基于字典顺序的优化可能是浪费的(太多的搜索)。通常最好先运行优化第一个组件(在您的例子中是X)的搜索。之后,使用固定的第一个组件值(X设置为最佳可能值)重新运行搜索,并优化第二个值(在您的示例中为Y)。根据需要迭代成本中的所有元素
相关文章:
- 通过两个嵌套函数传递C++函数的名称
- 使用嵌套函数数组是个好主意吗?
- C++运行时构建嵌套函数
- C++ 中深度嵌套函数的单个捕获全部语句?
- 不能做嵌套函数,有什么办法呢?
- LLVM - 如何使嵌套函数看到外部函数的变量
- 为什么链表中的数据在嵌套函数中会更改/损坏?
- 为什么编译器会在二进制中留下嵌套函数的实现
- Switch语句-嵌套函数-C++
- 在C++中,是否存在将结束父函数的嵌套函数的返回
- 在c++线程中嵌套函数调用
- 嵌套函数或方法调用会降低应用程序的性能
- C++中嵌套函数声明的范围
- 使用lambda执行嵌套函数
- 如何在C++的嵌套函数中使用指针
- (C++) 使用 lambda 作为嵌套函数,甚至用作通用函数
- 退出嵌套函数中的线程
- 在我的解释器中绑定嵌套函数的更好方法
- 临时对象的生命周期:嵌套函数调用中指向临时向量的迭代器
- c++中的嵌套函数