目录

一、问题

何为线性规划问题:

二、python进行求解

1.通过观察matlab解线性规划步骤进行求解

2.python求解步骤

1)求解用到的模块(scipy 和  numpy):

2)对  max z=2x1+3x2-5x3  该问题确定c如下:

3) 对于不等式 2x1-5x2+x3>=10 ; x1+3x2+x3<=12

4)对于等式 x1+x2+x3=7 应该单写为:

5)对于限条件  x1,x2,x3>0  可写为:

6)求解

7)求解过程遇到的问题

完整代码如下:

求解结果如下:

总结:


一、问题

何为线性规划问题:

线性规划(Linear Programming,也称为LP)是一种运筹学技术,当当所有的目标和约束都是线性的(在变量中)并且当所有的决策变量都是连续的时使用。线性规划是最简单的运筹学方法。

例如:

二、python进行求解

这个问题必须表述为一个最小化问题。不等式必须表示为≤ 。

1.通过观察matlab解线性规划步骤进行求解

线性规划求解主要分 两个部分,目标函数(max,min)和约束条件(s.t.),求解时一般要化为MATLAB标准形式:

x = linprog(f,A,b) 求解 min f'*x 约束条件为 A*x ≤ b.
x = linprog(f,A,b,Aeq,beq) 求解上述问题,但是增加了约束条件,即将: Aeq*x = beq. 如果没有等式存在可以用:A = [] and b = []
x = linprog(f,A,b,Aeq,beq,lb,ub) 定义变量x的下界lb和上街ub,使得x始终在该范围内,即lb ≤ x ≤ ub。若没有约束条件,则设: Aeq = [] and beq = []

2.python求解步骤

1)求解用到的模块(scipy 和  numpy):

from scipy import optimize as opt
import numpy as np#引用无穷符号 inf
#from numpy import inf

2)对  max z=2x1+3x2-5x3  该问题确定c如下:

c = [2, 3, -5]

3) 对于不等式 2x1-5x2+x3>=10 ; x1+3x2+x3<=12

先将其化成   -2x1+5x2-x3<=10 ; x1+3x2+x3<=12

因为该不等式结构类似,所以写成如下:

A = np.array([[-2,5,-1],[1,3,1]])
b = np.array([-10,12])

4)对于等式 x1+x2+x3=7 应该单写为:

Aeq = np.array([[1,1,1]])
beq = np.array([7])

5)对于限条件  x1,x2,x3>0  可写为:

lim1=(0,inf)
lim2=(0,inf)
lim3=(0,inf)
#如果没有定义无穷 inf 则可写成
# lim1=(0,None)
# lim2=(0,None)
# lim3=(0,None)

6)求解

res = opt.linprog(-c,A,b,Aeq,beq,bounds=(lim1,lim2,lim3))
print(res)

7)求解过程遇到的问题

笨小孩初始求解时i,所得结果总是科学计数法,如果还有小伙伴也遇到了如下情况可以试试这些

解决方法:在导入库后,求解前写入如下代码试试

import pandas as pd
np.set_printoptions(suppress=True)
pd.set_option('display.float_format', lambda x: '%.2f' % x)

完整代码如下:

#导入包
from scipy import optimize as opt
import numpy as np
from numpy import inf# #解决结果是科学计数法的问题
# import pandas as pd
# np.set_printoptions(suppress=True)
# pd.set_option('display.float_format', lambda x: '%.2f' % x)#确定c,A,b,Aeq,beq
c = np.array([2,3,-5])
A = np.array([[-2,5,-1],[1,3,1]])
b = np.array([-10,12])
Aeq = np.array([[1,1,1]])
beq = np.array([7])
#限制
lim1=(0,None)
lim2=(0,None)
lim3=(0,None)
#求解
res = opt.linprog(-c,A,b,Aeq,beq,bounds=(lim1,lim2,lim3))
#输出结果
print(res)

求解结果如下:

 重点关注的就是fun和最后一行了,fun是最优值,最后一行是每个x的最优解。

至于第一行为什么是负的呢?

原来这个函数其实是求最小值的,那么求最大值,怎么办呢?

很简单,仔细观察的人应该发现,之前的函数里面,我写的是-c,而不是c。

为什么这么写?

这是由于python库的设定。

因此这个函数的出来的结果其实就是-c的最小值,但很明显这恰恰是c最大值的相反数。那么答案就是14.5714了

总结:

经过一段时间学习,不但巩固了所学新知识,更是在实践中发现了自己的不足,真心很感谢这次机会!如有不当之处,请大家多多指点,非常感谢!!!

本次博客紧随建模学习打卡第一天_菜菜笨小孩的博客-CSDN博客

基础线性规划实现---python相关推荐

  1. 线性规划单纯形法python实现与代码详细解读

    线性规划单纯形法python实现与代码详细解读 1 单纯形法(Simplex method) 2 编程思路 3 python实现原理解读 4 python代码 5 后记 1 单纯形法(Simplex ...

  2. 如何零基础学习python语言_零基础如何入门Python语言?有哪些学习建议?

    众所周知,Python目前是最受欢迎的编程语言之一,尤其是对于零基础的初学者来说,Python语言更是十分的友好.因此,不少初学者常常会有这样一个共同的疑惑,零基础如何入门Python语言?本文就来给 ...

  3. 如何零基础开始自学Python编程

    0. 明确目标 我是真正零基础开始学Python的,从一开始的一窍不通,到3个月后成功搭建了一个动态网站(没有用任何框架).相比于计算机大牛,我更加知道一个小白将会遇到什么坑,遇到哪些难点.我把我的学 ...

  4. 零基础入门学习Python,我与python的第一次亲密接触后的感受!

    前言:Python是适合初学者入门最好的语言 Python适合初学者入门最好的语言 人工智能用Python?高考要加入Python?现在连微软官方Excel都要把Python作为官方语言!Python ...

  5. 零基础学python语言_零基础如何入门Python语言?有哪些学习建议?

    众所周知,Python目前是最受欢迎的编程语言之一,尤其是对于零基础的初学者来说,Python语言更是十分的友好.因此,不少初学者常常会有这样一个共同的疑惑,零基础如何入门Python语言?本文就来给 ...

  6. python零基础看什么视频和书籍-资料│最适合大学生零基础学的Python视频+电子书...

    原标题:资料│最适合大学生零基础学的Python视频+电子书 月最热资源下载 (▲点击阅读) 已经不少童鞋跟播妞咨询了python的资源 今天播妞将整理好的部分python资源发布 是最适合零基础大学 ...

  7. 零基础入门学python 第二版-《零基础入门学习Python》第二版和第一版的区别在哪里呢?...

    第一版 时光荏苒,一晃间,距离<零基础入门学习 Python>出版(2016年11月)已经过去两年多了,在这段时间里, Python 逐步走入了大家的视野,这门语言因其简洁的语法风格,在云 ...

  8. python自学多久可以找到工作-零基础如何自学Python并且找到工作,其实也就这3点,4点...

    做Python开发多年,给大家详细分析一下这个问题 首先告诉你的是,应届生零基础开始学习Python肯定难,Python的专业程度本身就不简单,学习这事本来就是一件非常煎熬的事情,人都不愿意学习,可是 ...

  9. python入门基础知识教程-Python基础知识入门,这三个原则是你要知道的,还有教程...

    很多人都说Python是最容易入门的编程语言,但是入门Python,你必须要明白这三个原则. 否则,你一定很难入门Python. 第一,一定要从最简单的开始(尾部还有最简单的入门教程) 我接触过一些想 ...

最新文章

  1. 鸿蒙电视哔哩哔哩,[4K视频] 65寸智能电视只要3299元?荣耀智慧屏X1开箱
  2. 【异常-举例6:finally】
  3. ubuntu 14.04 安装qq 2015
  4. 人工神经网络——笔记摘抄2
  5. React对标签属性进行限制(props)
  6. 同一个ip能否两次加入组播_组播IGMPv1/v2/v3精华知识汇总
  7. word文档打印 自动编码_办公室文件打印有哪些技巧 办公室文件打印技巧介绍【图文】...
  8. matlab安装第三方库,Matlab调用cpp+第三方库
  9. ci php view,CI映射(加载)数据到view层的方法,ciview_PHP教程
  10. httpservletrequest 设置请求头_大部分程序员不知道的 Servelt3 异步请求,原来这么简单?
  11. opencv php,OpenCV应用实例
  12. 23种Python设计模式之工厂方法模式详解
  13. TSC打印bmp图片命令
  14. Matlab 实现两种读取文件夹内所有图像的方法
  15. Excel十八个快捷键
  16. GPIO输入输出各种模式(推挽、开漏、准双向端口)详解
  17. 关于收发邮件中的一些概念解释(收件人 抄送人 密送人 回复 回复全部)
  18. VB 获取文件名后缀
  19. Medusa(美杜莎)--参数及常见命令
  20. swing-组件Collapse折叠面板2

热门文章

  1. win7电脑上的文件打开方式选错了怎么办
  2. Spring的ApplicationEvent的使用
  3. 图文详解mina框架
  4. java8 Map新增方法的使用
  5. Jsp和Servlet有什么区别?
  6. 江西事业单位计算机管理岗怎么样,江西省直事业单位招聘出现不少冷门岗
  7. Kafka Shell 基本操作
  8. GenseeSDK 使用Kotlin要注意TODOAndroid Studio关闭TODO
  9. Android9.0 http网络请求失败问题的处理
  10. Java8 函数式对齐约定————Eclipse自定义代码风格