PuLP 目标函数中两个变量的最大值

问题描述 投票:0回答:1

我在目标函数中使用了一个绝对值函数,但它不工作。

set_I = range(0,data_analysis_values.shape[0])
prob = LpProblem("Deliverable 1", LpMinimize)
X = pulp.LpVariable.dicts("X", set_I, cat='Continuous')
prob += 0.5*lpSum([X[i] for i in set_I])
prob += 0.5*lpSum([lpSum([max(simulation_data_without_text[i][j]-X[i],0)for j in range(200)]) for i in set_I])/200 
for i in set_I:
    prob += X[i] >= 0 
    prob += X[i] <= data_analysis_values[i][8]
prob.solve()
solution = np.array([X[i].varValue for i in set_I])

我想取最大的simulation_data_without_text[i][j]-X[i]和0的所有j在200范围内,并在所有的I集I和,但它不允许我这样做。谁能帮我找到一个替代方法?

python linear-programming pulp
1个回答
1
投票

所以目标是(忽略其他部分)。

 min sum(i, max(z[i],0))

在附加变量y[i]的帮助下,可以写成:

 min sum(i, y[i])
     y[i] >= z[i]
     y[i] >= 0
© www.soinside.com 2019 - 2024. All rights reserved.