【发布时间】:2019-08-18 01:07:27
【问题描述】:
我正在研究模块 PulP 的线性规划问题。
在这个问题中,我们有一个 (i x j) 矩阵--A。目标函数是最小化 A 和另一个 (j x i) 矩阵--B 之间的产生。 A是我们要最小化的目标,B是一个常数矩阵。
我的问题是如何限制矩阵 A 中 j 列中的 n 列全为零。 n
prob 是我的 LpProblem,test 是矩阵 A,pri 是矩阵 B。 我知道如何创建每行之和必须为 1 的约束。
for i in range(pri.shape[1]):
prob+=lpSum(test[i,:])==1
以下代码是我如何尝试使矩阵 A 中 j 列的约束 n 全部为零。虽然,它失败了,只是创建了一个我无法理解原因的虚拟变量。
count=0
for i in range(pri.shape[0]):
if lpSum(test[:,i])==0:
count +=1
prob += count==n
prob.solve()
for v in prob.variables():
print(v.name, "=", v.varValue)
输出:
__dummy = None
a_(1,_1) = 1.0
a_(1,_2) = 0.0
a_(2,_1) = 1.0
a_(2,_2) = 0.0
a_(3,_1) = 1.0
a_(3,_2) = 0.0
纸浆在网上并不那么受欢迎。我找不到与我的问题相关的示例代码。谢谢你的回答。
【问题讨论】:
-
我认为您将数据与决策变量混淆了。我建议先写一个数学模型。
标签: python linear-programming pulp