我目前正在使用Google OR工具CP—SAT求解平面化问题.我使用IntVars作为日期的表示.所有这些国际文书都在一本字典里.我有几个约束可以正常工作,但**我想强制求解器有大约2/3的Intvars低于400. **
我试着用BoolVars解决这个问题,但没有成功,我用完了如何强制2/3的值低于400的 idea . 有人可以想到一个解决方案吗?
我目前正在使用Google OR工具CP—SAT求解平面化问题.我使用IntVars作为日期的表示.所有这些国际文书都在一本字典里.我有几个约束可以正常工作,但**我想强制求解器有大约2/3的Intvars低于400. **
我试着用BoolVars解决这个问题,但没有成功,我用完了如何强制2/3的值低于400的 idea . 有人可以想到一个解决方案吗?
我不确定这是一个好的商业规则,
反正
int_vars = [...]
bool_vars = []
for v in int_vars:
is_less_than_400 = model.new_bool_var('')
model.add(v <= 400).only_enforce_if(is_less_than_400)
model.add(v > 400).only_enforce_if(~is_less_than_400)
bool_vars.append(is_less_than_400)
threshold = len(bool_var) * 2 // 3
model.add(sum(bool_vars) <= threshold)