【发布时间】:2019-04-13 16:36:24
【问题描述】:
我需要在 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"
但是我希望能够拥有一个动态的 u.v.,我认为解决方案可能是使用 LpVariable.dicts() 但我没有成功。
【问题讨论】:
标签: python linear-programming pulp