[英]Python: Setting the objective function in pulp
我试图设定目标 function,即最大化销售额,
df.index = ['City 1', 'City 2', 'City 3', 'City 4', 'City 5', 'City 6', 'City 7',
'City 8', 'City 9', 'City 10', 'City 11', 'City 12', 'City 13']
df['Sales'] = [372.0, 404.0, 319.0, 212.0, 206.0, 287.0, 181.0, 483.0, 376.0, 269.0,
354.0, 278.0, 333.0]
df['Cost'] = [178.56, 311.08, 102.08, 116.60, 160.68, 192.29, 128.51,
236.67, 251.92, 78.01, 233.64, 100.08, 183.15]
CITY_SALES = {k:v for k,v in zip(df.index, df['Sales'])}
CITY_COST = {k:v for k,v in zip(df.index, df['Cost'])}
from pulp import *
PROB = LpProblem('MAX_PROB', LpMaximize)
CITY_VARS = LpVariable.dicts('city', df.index, lowBound=0, cat=0) #Decision Vars
PROB += lpSum(CITY_COST[c] * CITY_VARS[c] for c in df.index) #Objective Function
print(PROB)
Output:
> KeyError Traceback (most recent call last)
<ipython-input-55-ecd06f0a5060> in <module>()
17 PROB += lpSum(CITY_COST[c] * CITY_VARS[c] for c in df.index) #Objective Function
18
---> 19 print(PROB)
/usr/local/lib/python3.7/dist-packages/pulp/pulp.py in __repr__(self)
1388 s += "VARIABLES\n"
1389 for v in self.variables():
-> 1390 s += v.asCplexLpVariable() + " " + const.LpCategories[v.cat] + "\n"
1391 return s
1392
KeyError: 0
我期待看到一些总结,但我得到了一个 KeyError,我在哪里弄错了? 如何使目标 function 工作?
在您的变量声明中,您声明cat=0
?? 我认为这在pulp
中造成了一些内部灾难
唯一有效的选项是Continuous, Integer, Binary
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.