PuLP Макс двух переменных в целевой функции - PullRequest
0 голосов
/ 01 мая 2020

У меня есть функция абсолютного значения, используемая в целевой функции, но она не работает.

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, но это не позволяет мне сделать это. Может кто-нибудь помочь мне найти альтернативный путь?

1 Ответ

1 голос
/ 01 мая 2020

Таким образом, цель (игнорируя другие части):

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

С помощью дополнительных переменных y [i] это можно записать как:

 min sum(i, y[i])
     y[i] >= z[i]
     y[i] >= 0
...