gpt4 book ai didi

python - 具有不同大小参数的 PuLP 线性规划

转载 作者:行者123 更新时间:2023-12-01 01:02:28 30 4
gpt4 key购买 nike

我需要用 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() 但我没有成功。

最佳答案

如果你的变量像你一样设置为列表中的变量对象(使用n=len(mylist)),那么使用类似(list comprehension)的东西是很自然的:

prob += lpSum([a[i] * u[i] for i in range(n)]), "Expected Utility"

其他组件也是如此。当然,您也可以将变量保存在字典中并遵循类似字典的访问。

核心思想只是使用python的功能来收集数据,并使用pulplpSum来总结数据。

关于python - 具有不同大小参数的 PuLP 线性规划,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55667659/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com