手术后设置约束

时间:2018-09-02 16:49:38

标签: python optimization pulp

我正在学习使用纸浆,但不确定是否可以制作自己的模型。

目标是最小化 x + y

但是,要获得x或y,我需要再进行一些操作。例如,要获取x,我需要对向量 T

进行运算

x =Σ|(Tj-Tmean)| ,其中Tmean是向量 Tj 的平均值。 j 是索引。

要获得Tj,我需要另一个摘要。

Tj =Σsi* Wij ,其中 s 是常数向量。 W 是一个变量矩阵,将用 0 1 填充。

向量 T 有一个条件,即 Tj ,其中k是常数。

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”。 我不确定该如何解决。

0 个答案:

没有答案