Python CP-SAT解算器是否支持;“反思”;方法,例如x.Min()和x.Max()?
我正在将我的旧工具(从2010年开始)或CP解算器模型移植到CP-SAT解算器(在Python3中)。这些系统之间有很多不同之处,但大多数都很容易移植到CP-SAT解算器 但是,我在CP-SAT解算器文档中没有发现旧CP解算器支持的“反射”方法,例如获取决策变量的上下限。例如Python CP-SAT解算器是否支持;“反思”;方法,例如x.Min()和x.Max()?,python,reflection,or-tools,cp-sat-solver,Python,Reflection,Or Tools,Cp Sat Solver,我正在将我的旧工具(从2010年开始)或CP解算器模型移植到CP-SAT解算器(在Python3中)。这些系统之间有很多不同之处,但大多数都很容易移植到CP-SAT解算器 但是,我在CP-SAT解算器文档中没有发现旧CP解算器支持的“反射”方法,例如获取决策变量的上下限。例如 # Old CP solver code solver = pywrapcp.Solver("Name") x = solver.IntVar(0,10, "x")
# 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
# ...
然后可以使用变量的这些上下限来实现其他约束。(下面是一个CP解算器,使用Min
和Max
方法实现累积
约束:)
CP-SAT解算器是否支持此类反射方法?您可以通过基础变量访问域
x.Proto().domain
第一个值是min
,最后一个值是max
x_lb=x.Proto().domain[0]
x_ub=x.Proto().domain[-1]
PS:也许您可以在这里使用约束。您可以通过基础变量访问域
x.Proto().domain
第一个值是min
,最后一个值是max
x_lb=x.Proto().domain[0]
x_ub=x.Proto().domain[-1]
PS:也许你可以在这里使用约束。我不这么认为,你可以做
x.Proto().domain[0]
和x.Proto().domain[-1]
。附言:你的博客的忠实粉丝@斯特拉迪瓦里啊,这是一个很好的建议,可能正是我想要的!(谢谢你的好话!)嗨!好久不见了。@LaurentPerron嗨Laurent!那肯定是很长时间了!将我的旧CP解算器模型移植到CP-SAT早就应该完成了,但我现在正在进行这项工作。:-)使用x.Proto().domain
似乎工作得很好:(不过我可能会用其他方式调整模型)谢谢@Stradivari!如果你写一个答案,我会接受。我不这么认为,你可以做x.Proto().domain[0]
和x.Proto().domain[-1]
。附言:你的博客的忠实粉丝@斯特拉迪瓦里啊,这是一个很好的建议,可能正是我想要的!(谢谢你的好话!)嗨!好久不见了。@LaurentPerron嗨Laurent!那肯定是很长时间了!将我的旧CP解算器模型移植到CP-SAT早就应该完成了,但我现在正在进行这项工作。:-)使用x.Proto().domain
似乎工作得很好:(不过我可能会用其他方式调整模型)谢谢@Stradivari!如果你写一个答案,我会接受的。谢谢。我还将在另一个模型中使用AddCumulative
。构建累积(带有“反射”)的分解是学习过程的一部分,也是测试CP系统支持什么的一部分…谢谢。我还将在另一个模型中使用AddCumulative
。构建累积(带有“反射”)的分解是学习过程的一部分,也是测试CP系统支持什么的一部分。。。