我正在使用Choco求解器並給定了一個int變量數組,我想要一個約束來檢查數組中的至少一個var是否等於靜態值......類似IntConstraintFactory#count
但有下列文檔使用喬科解算器至少有一個Var等於Var陣列中的X
東西:
/**
* 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)的通用方法:引入指示符 - 約束條件,它標記變量是否「命中」它是目標值。然後添加一個可能的基數方法(或者在你的情況下只是一個'''OR'''')。 – sascha
CP社區中這個約束的通用名稱是GCC(全局基數約束),也許這會幫助你找到答案(我對choco並不熟悉) – tobyodavies