基础线性规划实现---python
目录
一、问题
何为线性规划问题:
二、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相关推荐
- 线性规划单纯形法python实现与代码详细解读
线性规划单纯形法python实现与代码详细解读 1 单纯形法(Simplex method) 2 编程思路 3 python实现原理解读 4 python代码 5 后记 1 单纯形法(Simplex ...
- 如何零基础学习python语言_零基础如何入门Python语言?有哪些学习建议?
众所周知,Python目前是最受欢迎的编程语言之一,尤其是对于零基础的初学者来说,Python语言更是十分的友好.因此,不少初学者常常会有这样一个共同的疑惑,零基础如何入门Python语言?本文就来给 ...
- 如何零基础开始自学Python编程
0. 明确目标 我是真正零基础开始学Python的,从一开始的一窍不通,到3个月后成功搭建了一个动态网站(没有用任何框架).相比于计算机大牛,我更加知道一个小白将会遇到什么坑,遇到哪些难点.我把我的学 ...
- 零基础入门学习Python,我与python的第一次亲密接触后的感受!
前言:Python是适合初学者入门最好的语言 Python适合初学者入门最好的语言 人工智能用Python?高考要加入Python?现在连微软官方Excel都要把Python作为官方语言!Python ...
- 零基础学python语言_零基础如何入门Python语言?有哪些学习建议?
众所周知,Python目前是最受欢迎的编程语言之一,尤其是对于零基础的初学者来说,Python语言更是十分的友好.因此,不少初学者常常会有这样一个共同的疑惑,零基础如何入门Python语言?本文就来给 ...
- python零基础看什么视频和书籍-资料│最适合大学生零基础学的Python视频+电子书...
原标题:资料│最适合大学生零基础学的Python视频+电子书 月最热资源下载 (▲点击阅读) 已经不少童鞋跟播妞咨询了python的资源 今天播妞将整理好的部分python资源发布 是最适合零基础大学 ...
- 零基础入门学python 第二版-《零基础入门学习Python》第二版和第一版的区别在哪里呢?...
第一版 时光荏苒,一晃间,距离<零基础入门学习 Python>出版(2016年11月)已经过去两年多了,在这段时间里, Python 逐步走入了大家的视野,这门语言因其简洁的语法风格,在云 ...
- python自学多久可以找到工作-零基础如何自学Python并且找到工作,其实也就这3点,4点...
做Python开发多年,给大家详细分析一下这个问题 首先告诉你的是,应届生零基础开始学习Python肯定难,Python的专业程度本身就不简单,学习这事本来就是一件非常煎熬的事情,人都不愿意学习,可是 ...
- python入门基础知识教程-Python基础知识入门,这三个原则是你要知道的,还有教程...
很多人都说Python是最容易入门的编程语言,但是入门Python,你必须要明白这三个原则. 否则,你一定很难入门Python. 第一,一定要从最简单的开始(尾部还有最简单的入门教程) 我接触过一些想 ...
最新文章
- 鸿蒙电视哔哩哔哩,[4K视频] 65寸智能电视只要3299元?荣耀智慧屏X1开箱
- 【异常-举例6:finally】
- ubuntu 14.04 安装qq 2015
- 人工神经网络——笔记摘抄2
- React对标签属性进行限制(props)
- 同一个ip能否两次加入组播_组播IGMPv1/v2/v3精华知识汇总
- word文档打印 自动编码_办公室文件打印有哪些技巧 办公室文件打印技巧介绍【图文】...
- matlab安装第三方库,Matlab调用cpp+第三方库
- ci php view,CI映射(加载)数据到view层的方法,ciview_PHP教程
- httpservletrequest 设置请求头_大部分程序员不知道的 Servelt3 异步请求,原来这么简单?
- opencv php,OpenCV应用实例
- 23种Python设计模式之工厂方法模式详解
- TSC打印bmp图片命令
- Matlab 实现两种读取文件夹内所有图像的方法
- Excel十八个快捷键
- GPIO输入输出各种模式(推挽、开漏、准双向端口)详解
- 关于收发邮件中的一些概念解释(收件人 抄送人 密送人 回复 回复全部)
- VB 获取文件名后缀
- Medusa(美杜莎)--参数及常见命令
- swing-组件Collapse折叠面板2