gpt4 book ai didi

c++ - Gecode:使用浮点值约束整数变量

转载 作者:行者123 更新时间:2023-11-28 01:23:18 25 4
gpt4 key购买 nike

我通过它的 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 是一个 float ,但被 rel 转换为整数。

因此我只能将 positive_bags_ 限制为 2, 3, ... 比 negative_bags_ 大几倍但是我的实验需要将 gmin 定义为 1.5 例如。

我检查了文档,没有找到同时使用 Boolean/IntegerFloatlinear 定义> 变量。

有没有什么方法可以使用 float gmin 来定义这个约束?

提前致谢!

最佳答案

如果您的因子 gmin 可以表示为一个相当小的有理数 n/d(在您的示例中为 3/2),那么您可以用

d * sum(positive_bags_) >= n * sum(negative_bags_)

作为你的约束。如果没有合适的小有理,那就需要channel你的变量到 FloatVars 并使用 FloatVar linear constraint .

关于c++ - Gecode:使用浮点值约束整数变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55160439/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com