提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
目录
前言
本文代码参考《运筹学教程》(第四版)中的第一章第四节中所介绍的单纯形法理论基础所实现,其中的各种符号表示与书中的符号对应。
其次,本文中只考虑模型有最优解的情况,不考虑模型无最优解或无限最优解。
一、单纯形法理论基础
单纯形法的理论可以在网上搜索到许多相关资料,在此不多赘述,直接进入正题。
二、Python代码实现
单纯形法的实现可以分为以为几个模块:循环、最优性检验、结果输出
1.循环求解
这里是单纯形法的主体部分,主要是分为以下几个步骤:求解检验数σ、确定换入基变量、确定换出基向量、对矩阵A进行高斯变换。以此循环。
代码如下:
def pivot(j,a,b):
Cb=[c[i] for i in j] #更新Cb
# 对sigma进行求解
sigma = np.array([0]*a.shape[1]).astype(float) #求解sigma,用做后续的判定
for i in range(a.shape[1]):