我正在寻找使用PULP在Python中设置约束检查。假设我有变量A1,...,Xn和约束(AffineExpression)A1X1 + ... + AnXn< = B,其中A1,..,An和B都是常量。
给定X的赋值(例如X1 = 1,X2 = 4,... Xn = 2),如何检查约束是否满足?我知道如何使用Numpy对矩阵进行此操作,但想知道是否可以使用PULP让库来处理工作。
我希望这是我可以检查特定的变量赋值。我不想对问题运行优化算法(例如prob.solve())。
PULP可以这样做吗?有不同的Python库会更好吗?我考虑过谷歌的OR-Tools,但发现文档比PULP更难解析。
答案 0 :(得分:1)
看起来可以执行以下操作:
请注意,这几乎肯定比使用numpy和Ax< = b慢。制定问题可能会更容易,但由于PULP如何运行这些检查,性能将受到影响。
答案 1 :(得分:0)
你可以保持numpy并完成这个。查看矩阵中的单行,您可以将 A 行设置为等于向量,然后创建一个行总和,以便检查索引并查找是否为真。例如:
a = A[0, :]
row_sum = a*x
sum(row_sum) <= B[0]
最后一行只返回True
或False
。然后,如果要更改单个索引,可以使用
row_sum
数组
row_sum[3] = a[3]*new_val
再次运行您的分析。