我正在学习使用纸浆,但不确定是否可以制作自己的模型。
目标是最小化 x + y
但是,要获得x或y,我需要再进行一些操作。例如,要获取x,我需要对向量 T
进行运算x =Σ|(Tj-Tmean)| ,其中Tmean是向量 Tj 的平均值。 j 是索引。
要获得Tj,我需要另一个摘要。
Tj =Σsi* Wij ,其中 s 是常数向量。 W 是一个变量矩阵,将用 0 或 1 填充。
向量 T 有一个条件,即 Tj
Tmean =ΣTj/ N
y 与 x 类似,但其他变量。
到目前为止,我有这个:
prob = pulp.LpProblem( "Miminize result", pulp.LpMinimize )
W=pulp.LpVariable.dicts( "W", indexs=(n,n),lowBound=0, upBound=1, cat='Integer') ##I'm guessing it needs to start as a variable
T=pulp.LpVariable.dicts("T",range(n),0,k,cat='Integer')
Tprom=pulp.LpVariable("Tprom")
prob += x+y
for j in range (n):
prob += T[j]==pulp.lpSum( [ s[i]*W[i][j] for i in range(n) ] )
prob += Tprom==pulp.lpSum(G)/n
prob += x==pulp.lpSum( [ abs(T[i]-Tprom) for i in range(n) ])
我知道在目标之后需要向概率添加约束,我不确定是否可以添加其余操作,以及我写的内容是否正确。
运行在带有abs的行上给出错误: 概率+ = x == pulp.lpSum([i在范围(n)中的abs(T [i] -Tprom)]) TypeError:abs()的操作数类型错误:“ LpAffineExpression”。 我不确定该如何解决。