【发布时间】:2023-04-07 14:36:01
【问题描述】:
我正在使用 Choco Solver 并给定一个 int var 数组,我想要一个约束来检查数组中的至少一个 var 是否等于静态值...
类似于IntConstraintFactory#count 但带有以下文档:
/**
* Let N be the number of variables of the VARIABLES collection assigned to value VALUE;
* Enforce condition N >= LIMIT to hold.
* <p>
*
* @param VALUE an int
* @param VARS a vector of variables
* @param LIMIT a variable
*/
public static Constraint at_least(int VALUE, IntVar[] VARS, IntVar LIMIT) {
return new Constraint("At least", /* help here ? */);
}
有人知道它是否存在或我如何有效地实现它吗?
【问题讨论】:
-
一种适用于大多数优化原语(SAT、MIP、CP)的通用方法:引入指标约束,标记变量
hits是否为目标值。然后添加一种可能的可用基数方法(或者在你的情况下只是一个OR)。 -
这个约束在 CP 社区的一个通用名称是 GCC(全局基数约束),也许这会帮助你找到答案(我对 choco 不太熟悉)
标签: constraint-programming choco