【发布时间】:2021-08-19 00:37:58
【问题描述】:
我试图建立一个涉及 3 个工厂和 4 个配送中心的线性规划问题。目标是最大限度地降低成本,但每个工厂配送中心组合都有不同的相关成本。
有没有更好的方法来使用纸浆或其他库创建变量,这样我就不必写那么多了。 目前我的看起来像这样。
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')
它有效,但我讨厌每次都必须创建这样的变量。
【问题讨论】:
-
您可以在字典中添加所有变量
{'plant{}_center_{}'.format(p,c):LpVariable('plant3_center4', lowBound=0, cat='Integer') for p in range(1,5) for c in range(1,5)} -
@Nagakiran 好建议,不过我认为应该是
{f'plant{p}_center_{c}': LpVariable(f'plant{p}_center{c}', lowBound=0, cat='Integer') for p in range(1,4) for c in range(1,5)}