Я использую Gecode
через C++
API в своего рода учебном контексте с положительными и отрицательными примерами.В этом контексте у меня есть два 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
,
Я проверил документацию и не нашел определения linear
, в котором используются переменные Boolean
/ Integer
и Float
.
Есть ли способ определить это ограничение с помощью числа с плавающей запятой gmin
?
Заранее спасибо!