python 之pulp 线性规划介绍及举例

10人阅读 评论(0) 收藏 举报
分类:

原文:https://www.cnblogs.com/shizhenqiang/p/8274806.html

安装:conda install pulp

pulp http://pythonhosted.org/PuLP/main/basic_python_coding.html

供水问题

1问题

供水公司三个水库分别为A,B,C向四个小区甲乙丙丁供水,AB向所有小区供水,C仅向甲乙丙供水,水库最大供水量(千吨

 

水库

A

B

C

最大供水量(千吨)

50

60

50

 

小区用水情况为

小区

基本用水量(千吨)

30

70

10

10

额外用水量(千吨)

50

70

20

40

 

水库供水收入900/千吨支出费用为:其他费用450/千吨,引水管理费:

由水库到小区引水费用:

元/千吨

A

160

130

220

170

B

140

130

190

150

C

190

200

230

 

 

 如何分配水库供水量,公司才能获利最多。

解题思路

使引水管理费最小,则利润最高

水库i向小区j的供水量为,引水管理费为Z

目标函数为:z = 160.0*x11 + 130.0*x12 + 220.0*x13 + 170.0*x14 + 140.0*x21 + 130.0*x22 + 190.0*x23 + 150.0*x24 + 190.0*x31 + 200.0*x32 + 230.0*x33

求的值,使Z最小。

约束条件为:

 

 

 

 

 

复制代码
 1 # coding=utf-8
 2 
 3 from pulp import *
 4 
 5 
 6 def get_re():
 7     pass
 8 
 9 
10 def getresult(c, con):
11 
12 # 设置对象
13     prob = LpProblem('myPro', LpMinimize)
14 # 设置三个变量,并设置变量最小取值
15 
16     x11 = LpVariable("x11", lowBound=0)
17     x12 = LpVariable("x12", lowBound=0)
18     x13 = LpVariable("x13", lowBound=0)
19     x14 = LpVariable("x14", lowBound=0)
20     x21 = LpVariable("x21", lowBound=0)
21     x22 = LpVariable("x22", lowBound=0)
22     x23 = LpVariable("x23", lowBound=0)
23     x24 = LpVariable("x24", lowBound=0)
24     x31 = LpVariable("x31", lowBound=0)
25     x32 = LpVariable("x32", lowBound=0)
26     x33 = LpVariable("x33", lowBound=0)
27 
28     X = [x11, x12, x13, x14, x21, x22, x23, x24, x31, x32, x33]
29 
30     #c = [160, 130, 220, 170, 140, 130, 190, 150, 190, 200, 230]
31 
32 
33 
34 
35 
36 
37 # 目标函数
38     z = 0
39     for i in range(len(X)):
40         z += X[i]*c[i]
41     #print(z)
42     prob += z
43 
44 # 载入约束变量
45     prob += x11+x12+x13+x14 == con[0]# 约束条件1
46     prob += x21+x22+x23+x24 == con[1]
47     prob += x31+x32+x33 == con[2]
48 
49     prob += x11+x21+x31 <= con[3]
50     prob += x11+x21+x31 >= con[4]
51 
52     prob += x12 + x22 + x32 <= con[5]
53     prob += x12 + x22 + x32 >= con[6]
54 
55     prob += x13 + x23 + x33 <= con[7]
56     prob += x13 + x23 + x33 >= con[8]
57     prob += x14 + x24 <= con[9]
58     prob += x14 + x24 >= con[10]
59 
60 # 求解
61 
62     status = prob.solve()
63 
64     print(status)
65     print(LpStatus[status])
66     print(value(prob.objective))  # 计算结果
67 
68 
69 # 显示结果
70 #     for i in prob.variables():
71 #         print(i.name + "=" + str(i.varValue))
72     for i in prob.variables():
73         print(i.varValue)
74 
75 
76 if __name__ == '__main__':
77     c = [160, 130, 220, 170, 140, 130, 190, 150, 190, 200, 230]
78     con = [50, 60, 50, 80, 30, 140, 70, 30,10, 50, 10]
79     getresult(c, con)

 

输出结果:

复制代码

1
Optimal
24400.0
0.0
50.0
0.0
0.0
0.0
50.0
0.0
10.0
40.0
0.0
10.0


查看评论

线性规划的python的pulp包

利用pulp包实现线性规划。
  • weixin_39979546
  • weixin_39979546
  • 2017-09-04 14:35:09
  • 637

Python中使用pulp进行线性规范计算

Pulp,用python来做线性规划 入门程序: 1 2 3 4 5 max: 2 * x1 + 5 * x2 约束: 1.  2 * x1 - x2 ...
  • Cyuhong
  • Cyuhong
  • 2016-03-12 15:50:07
  • 2708

用python-pulp解决线性规划问题

Linux环境下,要是用python的pulp涉及先安装pulp(easy_install)和调试安装glpk(更改源,在命令行中下载即可)...
  • MartaYang
  • MartaYang
  • 2017-05-09 09:38:38
  • 2503

python pulp包求解整数线性规划和线性规划

以整数线性规划为例 # -*- coding: utf-8 -*- import pulp as pulp def solve_ilp(objective , constraints) : ...
  • conggova
  • conggova
  • 2018-02-06 11:26:11
  • 245

Python PuLP 求解“鸡兔同笼”问题

  • 2012年08月19日 07:20
  • 450B
  • 下载

Python PuLP and Glpk 安装步骤

PuLP 是一个 Python 的线性规划库,使用起来相当的简单方便: http://pypi.python.org/pypi/PuLP/1.5.3 还需要 GLPK (GNU Linear ...
  • belldeep
  • belldeep
  • 2012-08-19 07:11:10
  • 3862

安装线性规划库glpk及其Python/R语言的封装库

线性规划算法 1. windows版本需要安装glpk应用 2. glpk是GNU的一个项目GNU Linear Programming Kit,是c/c++代码,需要编译安装,网...
  • leafwin_wj
  • leafwin_wj
  • 2016-04-04 22:48:37
  • 1936

scip的python

  • 2016年12月18日 02:53
  • 3.82MB
  • 下载

python求线性规划

"""#需要安装pip install numpy-1.12.1rc1+mkl-cp35-cp35m-win32.whl,numpy_mkl地址 不然提示    from numpy._distr...
  • li1367356
  • li1367356
  • 2017-03-13 11:22:16
  • 644

用python pulp的线性规划方法计算满足营养所需的最少食物

1. 问题描述 食物的单位成本 巧克力松糕: $0.50 (每片) 巧克力冰激凌:$0.20 (每份) 可乐: $0.30 (每瓶) 菠萝芝士蛋糕:$0.80 (每片) 每天的食物需求 500 卡路...
  • huxuanlai
  • huxuanlai
  • 2017-05-10 14:00:36
  • 527
    个人资料
    专栏达人 持之以恒
    等级:
    访问量: 88万+
    积分: 2万+
    排名: 343
    博客专栏
    最新评论