从 OR-Tools 设置 CP-SAT 求解器的 IntVar 值

问题描述 投票:0回答:1

我目前正在使用 google OR-tools CP-SAT 求解器来解决规划问题。我使用 IntVars 作为日期的表示。所有这些 IntVar 都在字典中。我有一些可以正常工作的约束,但 **我想强制求解器使大约 2/3 的 Intvars 低于 400。 **

我尝试使用 BoolVars 解决问题,但没有成功,并且我没有办法强制 2/3 的值低于 400。 有人能想到解决办法吗?

python solver or-tools cp-sat
1个回答
0
投票

我不确定这是一个好的商业规则,

无论如何

  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)
© www.soinside.com 2019 - 2024. All rights reserved.