我目前正在使用 google OR-tools CP-SAT 求解器来解决规划问题。我使用 IntVars 作为日期的表示。所有这些 IntVar 都在字典中。我有一些可以正常工作的约束,但 **我想强制求解器使大约 2/3 的 Intvars 低于 400。 **
我尝试使用 BoolVars 解决问题,但没有成功,并且我没有办法强制 2/3 的值低于 400。 有人能想到解决办法吗?
我不确定这是一个好的商业规则,
无论如何
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)