关于建设网站的合作合同范本,google收录网站,wordpress 文章列表页,网址搜索器目录
一、问题
何为线性规划问题#xff1a;
二、python进行求解
1.通过观察matlab解线性规划步骤进行求解 2.python求解步骤
1#xff09;求解用到的模块#xff08;scipy 和 numpy#xff09;#xff1a;
2#xff09;对 max z2x13x2-5x3 该问题确定c如下
二、python进行求解
1.通过观察matlab解线性规划步骤进行求解 2.python求解步骤
1求解用到的模块scipy 和 numpy
2对 max z2x13x2-5x3 该问题确定c如下
3) 对于不等式 2x1-5x2x310 ; x13x2x312
4对于等式 x1x2x37 应该单写为
5对于限条件 x1,x2,x30 可写为
6)求解
7求解过程遇到的问题
完整代码如下
求解结果如下
总结 一、问题
何为线性规划问题
线性规划(Linear Programming也称为LP)是一种运筹学技术当当所有的目标和约束都是线性的(在变量中)并且当所有的决策变量都是连续的时使用。线性规划是最简单的运筹学方法。
例如 二、python进行求解
这个问题必须表述为一个最小化问题。不等式必须表示为≤ 。
1.通过观察matlab解线性规划步骤进行求解
线性规划求解主要分 两个部分目标函数maxmin和约束条件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 z2x13x2-5x3 该问题确定c如下
c [2, 3, -5]
3) 对于不等式 2x1-5x2x310 ; x13x2x312
先将其化成 -2x15x2-x310 ; x13x2x312
因为该不等式结构类似所以写成如下
A np.array([[-2,5,-1],[1,3,1]])
b np.array([-10,12])
4对于等式 x1x2x37 应该单写为
Aeq np.array([[1,1,1]])
beq np.array([7])
5对于限条件 x1,x2,x30 可写为
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(suppressTrue)
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(suppressTrue)
# 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博客