繁体   English   中英

Python:纸浆设定目标function

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM