加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

线性规划单纯形法及python实现

(2020-03-04 12:54:59)
标签:

单纯形法

python

分类: 大数据处理
      在解决线性规划问题中(比如下面的问题)
线性规划单纯形法及python实现

      通过图解法如下可以计算得到最优解,高中的知识(上题与下图不一致的,只是为了说明意思)。
线性规划单纯形法及python实现

      但是计算机无法通过图解法去获得最优解,一般使用单纯形法求解线性规划问题。它的理论依据是:线性规划问题的可行域是n维向量空间Rn中的多面凸集,其最优值如果存在必在该凸集的某顶点处达到(必定在边界获得)。对应上面的图片,就是最优解必然是在A1,A2,A3这3个中取一个。
      单纯形法的基本思想是:先找出一个基本可行解,对它进行鉴别,看是否是最优解;若不是,则按照一定法则转换到另一改进的基本可行解,再鉴别;若仍不是,则再转换,按此重复进行。因基本可行解的个数有限,故经有限次转换必能得出问题的最优解。
线性规划单纯形法及python实现

线性规划单纯形法及python实现

线性规划单纯形法及python实现

线性规划单纯形法及python实现

线性规划单纯形法及python实现

线性规划单纯形法及python实现

线性规划单纯形法及python实现

      对于上面内容,我个人的笔记和推导如下:
线性规划单纯形法及python实现

线性规划单纯形法及python实现

python代码实现:

import numpy as np
from scipy import optimize

z = np.array([-4, -1])
a = np.array([[-1, 2], [2, 3], [1, -1]])
b = np.array([4, 12, 3])

x1_bound = x2_bound = (0, None)

res = optimize.linprog(z, A_ub=a, b_ub=b, bounds=(x1_bound, x2_bound))
print(res)

最后的结果是:
     fun: -18.0
 message: 'Optimization terminated successfully.'
     nit: 2
   slack: array([ 5.8,  0. ,  0. ])
  status: 0
 success: True
       x: array([ 4.2,  1.2])
与手工推导的结果是一致的。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有