线性规划的python的pulp包

作为编程小白,最快的成长方式就是有人压迫你去学。例如上司!
线性规划的python实现。原理我是懂的,本以为简单的代码就可以实现。但实际上遇到很多问题,几近崩溃。上网搜了相当多的文献资料,都是简单的代码实现,对于我这个变量不定、限制条件超多的需求来说,毫无作用。后来查看官方文档后,曲线救国!!
话不多说,直接说过程以及代码。有不对的地方欢迎批评斧正!

官方的pulp包给出的案例为两个:一个简单的两个变量以及两个限定条件。这个有很多案例,我就不再细说。我主要说一下利用字典来进行线性规划的方式。

最后附有代码:这是我做的小案例,其中限定条件很多都是重复的(太懒了)。
遇到的主要问题如下:
1.一开始我将变量设定成list,结果导致直接报错,大概就是列表不是适用的格式。看完官方文档,考虑到没有这个案例,所以将list全部改为dict.(划重点):一定将所有的dict 统一成一样的key!后面会说到他的重要性。

2.设置变量时候有个lowBound = ,upBound = 。因为我的变量这个时候x = tf.LpVariable.dicts(“Ingr”,name,[list])中name是列表格式,所以我理所应当的将上下限设置成list格式(每个变量的上线下限都有不同的要求)。但实际上根本运行不了,而官网上的是直接将下限设为0,我个人觉得这个这个包的一个bug。也有可能是我还不懂,需要大家多多给出建议。无奈我只能曲线救国,首先将下限设为0,然后准备放在限制条件中。

3.每个限定条件后面的,[字符串]一定不能省略且不能重复。我一开始按照官网的格式写下来就是不对,排除其他问题后还是不行。我之后将官网的demo下载下来,然后将自己的代码一点点填上。结果运行出结果了。(当时真是百思不得解,现在觉得自己好low)我真的是一点点在那对代码,没问题啊?最后我想不会是因为备注吧?(当时真以为是备注)。结果加上后,结果就出来了!哈哈哈……我真傻真的……

4.这里就要说到统一key的重要性了。普通的几个变量直接pulp.LpVariable()即可,但字典需要pulp.LpVariable.dicts().而且出来的变量名称和x1、x2……完全不一样。这里有需要的直接运行就知道了(后面结果中也有呈现)。我觉得这个简直太好了,特别容易识别。

for i in 
  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Windows 7上安装pulp和glpk步骤: 亲测环境: Windows 6.1.7601 Service Pack 1 Build 7601 x64 Python 2.7.11 PuLP 1.6.8 GLPK 4.34 安装步骤: 1、下载PuLP安装:前提是,已安装python2.6以及2.6以上版本,在网页(https://pythonhosted.org/PuLP/main/installing_pulp_at_home.html)上点击PuLP zipfile下载pulp,当然,也可以在我的资源里下载 2、安装PuLP:将zipfile解压缩,并在命令行窗口中,进入解压缩的目录,然后输入命令:setup.py install 3、下载glpk安装:在网页(https://sourceforge.net/projects/gnuwin32/files/glpk/4.34/)上,下载glpk-4.34-setup.exe(也可以在我的资源里下载),然后双击默认安装 4、按照以上步骤,安装完以后,写一个.py的脚本并运行,脚本内容: from pulp import * pulp.pulpTestAll() 然后,会看到以下类似输出结果: D:\002-Task_150524\117-17data_thesis\004-code\testPulp.py Testing zero subtraction Testing inconsistant lp solution Testing continuous LP solution Testing maximize continuous LP solution Testing unbounded continuous LP solution Testing Long Names Testing repeated Names Testing zero constraint Testing zero objective Testing LpVariable (not LpAffineExpression) objective Testing Long lines in LP Testing LpAffineExpression divide Testing MIP solution Testing MIP solution with floats in objective Testing MIP relaxation Testing feasibility problem (no objective) Testing an infeasible problem Testing an integer infeasible problem Testing column based modelling Testing dual variables and slacks reporting Testing fractional constraints Testing elastic constraints (no change) Testing elastic constraints (freebound) Testing elastic constraints (penalty unchanged) Testing elastic constraints (penalty unbounded) * Solver pulp.solvers.PULP_CBC_CMD passed. Solver pulp.solvers.CPLEX_DLL unavailable Solver pulp.solvers.CPLEX_CMD unavailable Solver pulp.solvers.CPLEX_PY unavailable Solver pulp.solvers.COIN_CMD unavailable Solver pulp.solvers.COINMP_DLL unavailable Testing zero subtraction Testing inconsistant lp solut

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值