Python编程利用单纯形法和scipy库对比分析求解线性规划最大值和最优解问题
一、单纯形法介绍
1、什么是单纯形法
单纯形法 simplex method 求解线性规划问题的通用方法。单纯形是美国数学家G.B.丹齐克于1947年首先提出来的。它的理论根据是:线性规划问题的可行域是 n维向量空间Rn中的多面凸集,其最优值如果存在必在该凸集的某顶点处达到,顶点所对应的可行解称为基本可行解。
2、单纯形法求解思路
先找出一个基本可行解,对它进行鉴别,看是否是最优解;若不是,则按照一定法则转换到另一改进的基本可行解,再鉴别;若仍不是,则再转换,按此重复进行。因基本可行解的个数有限,故经有限次转换必能得出问题的最优解。如果问题无最优解也可用此法判别。 根据单纯形法的原理,在线性规划问题中,决策变量(控制变量)x1,x2,…x n的值称为一个解,满足所有的约束条件的解称为可行解。使目标函数达到最大值(或最小值)的可行解称为最优解。这样,一个最优解能在整个由约束条件所确定的可行区域内使目标函数达到最大值(或最小值),求解线性规划问题的目的就是要找出最优解。
3、单纯形法步骤
(1)把线性规划问题的约束方程组表达成典范型方程组,找出基本可行解作为初始基本可行解。
(2)若基本可行解不存在,即约束条件有矛盾,则问题无解。
(3)若基本可行解存在,从初始基本可行解作为起点,根据最优性条件和可行性条件,引入非基变量 取代某一基变量,找出目标函数值更优的另一基本可行解
(4)按步骤3进行迭代,直到对应检验数满足最优性条件(这时目标函数值不能再改善),即得到问题的 最优解。
(5)若迭代过程中发现问题的目标函数值无界,则终止迭代。
注意:用单纯形法求解线性规划问题所需的迭代次数主要取决于约束条件的个数。现在一般的线性规划问题都是应用单纯形法标准软件在计算机上求解,对于具有106个决策变量和104个约束条件的线性规划问题已能在计算机上解得。
4、最优解可能出现的情况
(1)存在着一个最优解
(2)存在着无穷多个最优解
(3)不存在最优解
注意:不存在最优解只在两种情况下发生,即没有可行解或各项约束条件不阻止目标函数的值无限增大(或向负的方向无限增大)
二、具体题目实例
求解以下约束条件的线性规划的最大值和最优解

一般解题步骤:
(1)线性规范-标准化:引入松弛变量:s1,s2,s3

(2)提取系数,填入表格

上图区域解答:

其中,s1、s2、s3作为基:

(3)从初始基本可行解X0迭代出另一个基本可行解X1,并判断X1是否为最优解

该题最优解为:Z=27500,X1=50,X2=250,S1=50,s2=s3=0
三、利用单纯形法求解线性规划最优解和最大值
1、编写数据文档,填入线性回归分析标准化模型
新建txt文档,填入线性回归分析标准化模型

2、编写Python代码
导入库
import numpy as np
定义列出线性回归系数模型函数
def pivot(d,bn):
l = list(d[0][:-2])
jnum = l.index(max(l)) #转入编号
m = []
for i in range(bn):
if d[i][jnum] == 0:
m.append(0.)
else:
m.append(d[i][-1]/d[i][jnum])
inum = m.index(min([x for x in m[1:

本文详细介绍了使用单纯形法和Python的scipy库求解线性规划问题的方法,包括求解思路、步骤、代码实现及结果对比分析。
最低0.47元/天 解锁文章
2051

被折叠的 条评论
为什么被折叠?



