Мне нужно решить задачу линейного программирования на python и наткнулся на PuLP.Однако у меня есть некоторые сомнения относительно того, как я могу простым способом решить проблему с различным количеством входов.
У меня есть следующие массивы, все с одинаковыми размерами:
a = [a0, a1, ..., an] (неизвестные переменные)
u = [u0, u1, ..., un]
v = [v0, v1, ..., vn]
(эти значения известны)
и я хочу максимально: a0 * u0 + a1 *u1 + ... + an * un
в зависимости от:
a0 + a1 + ... + an = 1
a0 * v0 + a1 * v1 + ... + an * vn> = 0
Я могу сделать это с ограниченным числом переменных (например, 3):
prob = LpProblem("Decision",LpMaximize)
a = list()
a.append(pulp.LpVariable("a0", 0, 1))
a.append(pulp.LpVariable("a1", 0, 1))
a.append(pulp.LpVariable("a2", 0, 1))
u = np.array([1, 3, 2])
v = np.array([1, -1, 0])
prob += a[0]*u[0] + a[1]*u[1] + a[2]*u[2], "Expected Utility"
prob += a[0]+a[1]+a[2] == 1, "PercentagesSum"
prob += a[0]*v[0] + a[1]*v[1] + a[2]*v[2] >= 0, "MinimalOutcome"
Однако я хочу иметь динамическое число уф, я думаюрешение может заключаться в использовании LpVariable.dicts () , но у меня ничего не получилось.