【发布时间】:2019-03-14 10:41:25
【问题描述】:
我通过它的C++ API 使用Gecode 在一种带有正面和负面例子的学习环境中。
在这种情况下,我有两个BoolVarArray:positive_bags_ 和negative_bags_。
而我想做的似乎很简单:我想根据用户参数gmin 以最小的增长率约束来约束这些袋子。
因此,约束应如下所示:sum(positive_bags_) >= gmin * sum(negative_bags_)。
它使用rel 函数定义如下:rel(*this, sum(positive_bags_) >= gmin * sum(negative_bags_)) 但我的问题是在我的情况下gmin 是一个浮点数,但被rel 转换为整数。
因此,我只能将 positive_bags_ 限制为 2、3、... 比 negative_bags_ 大几倍,但我需要在实验中将 gmin 定义为 1.5。
我检查了文档并没有找到同时使用Boolean/Integer 和Float 变量的linear 的定义。
有没有办法使用浮点gmin 来定义这个约束?
提前致谢!
【问题讨论】:
-
请指向“sum”方法的文档。似乎您的变量正在被隐式转换,这会产生问题。
标签: c++ constraint-programming gecode