计算变量和约束 PuLP 和 CP-Sat

Posted

技术标签:

【中文标题】计算变量和约束 PuLP 和 CP-Sat【英文标题】:Count variables and constraints PuLP and CP-Sat 【发布时间】:2021-01-10 15:37:47 【问题描述】:

有谁知道如何打印在 Python CP-Sat 和 PuLP 中创建的每个优化问题中创建的变量和约束的数量?

谢谢

【问题讨论】:

【参考方案1】:

我不熟悉 CP-sat,但在 PuLP 中,LpProblem 类有一个方法 numVariables(),它将返回变量的数量。

例如:

import pulp

prob = pulp.LpProblem("minimize",pulp.LpMinimize)

single_var = pulp.LpVariable('single_var')
set_of_var = pulp.LpVariable.dicts("x_i,j", ((i, j) for i in range(3) for j in range(2)))

print(prob.numVariables())

# Add objective
prob += single_var + pulp.lpSum([set_of_var[i, j] for i in range(3) for j in range(2)])
print(prob.numVariables())

# Solve
prob.solve()
print(prob.numVariables())

将返回:

0
0
7

请注意,只有在将变量添加到模型(在目标或约束中)并且模型已经求解后,才会计算变量。

【讨论】:

【参考方案2】:

你可以这样做:

count=0
for v in prob.variables():
    count+=1

【讨论】:

以上是关于计算变量和约束 PuLP 和 CP-Sat的主要内容,如果未能解决你的问题,请参考以下文章

将 CP-SAT Solver 用于非线性目标函数

CP-SAT 平衡任务分配

使用 CP-SAT 预测 300 万个布尔变量

PuLP:规范化多个决策变量并分配权重

Or-Tools CP-SAT 求解器导出/导入:加载模型后如何访问变量?

约束中可能的整数溢出:线性