Я хочу рассчитать максимальную ценность конкретного пользователя на основе его интереса | Популярность | как интерес, так и популярность, используя следующее уравнение задачи линейного программирования (LPP)
с использованием пакета pulp в python3.7.
У меня 4 списка
ПРОЦЕНТ = [5,10,15,20,25]
ПОПУЛЯРНОСТЬ = [4,8,12,16,20]
ПОЛЬЗОВАТЕЛЬ = [1,2,3,4,5]
стоимость = [2,4,6,8,10]
и 2 значения переменных как
е = 0,5; е может принимать (0 или 1 или 0,5)
бюджет = 20
а также
i = от 0 до n; n - длина списка
означает, что суммирование нужно выполнить для всех значений списка.
Здесь, если e == 0 означает, что процент будет равен 0; если e == 1 означает, что популярность будет равна 0; если e == 0,5 означает, что интерес и популярность будут учитываться при определении максимального значения
Также xi принимает 0 или 1; если xi == 1, тогда пользователь будет рассматриваться, иначе если xi == 0, тогда пользователь не будет рассматриваться.
и мой код целлюлозы, как показано ниже
from pulp import *
INTEREST = [5,10,15,20,25]
POPULARITY = [4,8,12,16,20]
USER = [1,2,3,4,5]
cost = [2,4,6,8,10]
e=0.5
budget=10
#PROBLEM VARIABLE
prob = LpProblem("MaxValue", LpMaximize)
# DECISION VARIABLE
int_vars = LpVariable.dicts("Interest", INTEREST,0,4,LpContinuous)
pop_vars = LpVariable.dicts("Popularity",
POPULARITY,0,4,LpContinuous)
user_vars = LpVariable.dicts("User",
USER,0,4,LpBinary)
#OBJECTIVE fUNCTION
prob += lpSum(USER(i)((INTEREST[i]*e for i in INTEREST) +
(POPULARITY[i]*(1-e) for i in POPULARITY)))
# CONSTRAINTS
prob += USER(i)cost(i) <= budget
#SOLVE
prob.solve()
print("Status : ",LpStatus[prob.status])
# PRINT OPTIMAL SOLUTION
print("The Max Value = ",value(prob.objective))
Теперь я получаю 2 ошибки как
1) строка 714, в addInPlace для e в другом:
2) строка 23, в строке: prob + = lpSum (INTEREST [i] e для i в INTEREST) + lpSum (POPULARITY [i] (1-e) для i в POPULARITY) IndexError: вывод списка индекса диапазона
Что я сделал не так в своем коде. Помогите мне решить эту проблему. Заранее спасибо.