OR-tools CP-SAT 求解器是否支持 x.Min() 和 x.Max() 等"reflection"方法?



我正在将我的旧(从2010年开始)OR-tools CP求解器模型移植到CP- sat求解器(在Python3中)。这些系统之间有相当多的差异,但大多数都很容易移植到CP-SAT求解器。

然而,我在CP-SAT求解器文档中没有发现的一件事是"反射"。旧的CP求解器支持的方法,如获得决策变量的下界/上界。例如

# Old CP solver code
solver = pywrapcp.Solver("Name")
x = solver.IntVar(0,10, "x") 
# ....
x_lb = x.Min()  # lower bound
x_ub = x.Max()  # upper bound
# ... 

然后可以使用变量的下界/上界来实现其他约束。(这是一个使用MinMax方法实现cumulative约束的CP求解器:http://hakank.org/or_tools/furniture_moving.py)

CP-SAT求解器支持这些反射方法吗?

您可以通过底层变量Proto访问域。

x.Proto().domain

第一个值是min,最后一个值是max

x_lb = x.Proto().domain[0]
x_ub = x.Proto().domain[-1]

PS:也许你可以在这里使用AddCumulative约束。

相关内容

  • 没有找到相关文章

最新更新