gpt4 book ai didi

python - 有没有更快的方法使用 pulp 为线性规划定义变量?

转载 作者:行者123 更新时间:2023-12-04 17:15:14 25 4
gpt4 key购买 nike

我试图建立一个涉及 3 个工厂和 4 个配送中心的线性规划问题。目标是最大限度地降低成本,但每个工厂配送中心组合都有不同的相关成本。

是否有更好的方法来使用 pulp 或其他库创建变量,这样我就不必写那么多了。目前我的看起来像这样。

from pulp import *  
#define the problem
prob=LpProblem('transportation', LpMinimize)
#create Variables
plant1_center1 = LpVariable('plant1_center1', lowBound=0, cat='Integer')
plant1_center2 = LpVariable('plant1_center2', lowBound=0, cat='Integer')
plant1_center3 = LpVariable('plant1_center3', lowBound=0, cat='Integer')
plant1_center4 = LpVariable('plant1_center4', lowBound=0, cat='Integer')
plant2_center1 = LpVariable('plant2_center1', lowBound=0, cat='Integer')
plant2_center2 = LpVariable('plant2_center2', lowBound=0, cat='Integer')
plant2_center3 = LpVariable('plant2_center3', lowBound=0, cat='Integer')
plant2_center4 = LpVariable('plant2_center4', lowBound=0, cat='Integer')
plant3_center1 = LpVariable('plant3_center1', lowBound=0, cat='Integer')
plant3_center2 = LpVariable('plant3_center2', lowBound=0, cat='Integer')
plant3_center3 = LpVariable('plant3_center3', lowBound=0, cat='Integer')
plant3_center4 = LpVariable('plant3_center4', lowBound=0, cat='Integer')

它有效,但我讨厌每次都必须创建这样的变量。

最佳答案

如何对行(植物)和列(配送中心)使用字符串插值和几个循环:

from pulp import *

def make_var(i, j):
return LpVariable(f"plant{i}_center{j}", lowBound=0, cat="Integer")

n_plants = 3
n_dist_centers = 4
prob = LpProblem("transportation", LpMinimize)
plants = [
[make_var(i, j) for j in range(n_dist_centers)]
for i in range(n_plants)
]

for row in plants:
print(row)

我已经对其进行了零索引,因此您可以使用 plants[plant_number][dist_center_number] 访问特定的 plant,但您应该能够对其进行 1 索引如果您需要使用 range(1, n_plants + 1),这很容易。

参见 A Transportation Problem它提供了您可以尝试的类似模式。

关于python - 有没有更快的方法使用 pulp 为线性规划定义变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68840732/

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