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

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

1 单纯形法(Simplex method)

  1. 单纯形法是线性规划求解的经典方法之一,它的理论基础在于线性规划的解一定可以在顶点,即基可行解处取得。
  2. 举个简单例子,大家熟悉的二元线性规划中,目标函数的直线在坐标系上移动,在与可行域的交界处会取得最优解,即使目标函数与边界线相重合,也必然会有顶点位于该重合的直线上,即在顶点处必然会取得最优解。
  3. 基于以上论述,单纯形法就是从一个基可行解开始,通过一次改变一个基变量,从而实现从当前顶点转至下一个顶点的过程,结合基变量的模型表达式如下:
    m a x c B X B + c N X N max\quad c_B X_B+c_N X_N maxcBXB+cNXN
    s . t . B X B + N X N = b s.t.\quad B{X}_{B}+N{X}_{N}=b s.t.BXB+NXN=b
    X B ≥ 0 , X N ≥ 0 \qquad X_{B}\ge0,X_{N}\ge0 XB0,XN0

2 编程思路

对于单纯形法的编程实现,其主要基于单纯形表,即约束系数矩阵,约束常数项以及检验数组成,通过初等行变换不断构建列线性无关的基,观察检验数的变化,当检验数表示其他变量入基不会带来更好的目标时,也就达到了最优解,具体的过程解读以及内在含义将在下方结合代码说明。

3 python实现原理解读

鉴于博主也为算法小白,源代码参考于运筹系列1:线性规划单纯形法python代码
原博主的代码实现方式非常简洁,但对于初学者而言还是会相对难以理解,本文也旨在对其做较为详细的说明与解读。

  1. 数据准备
    该算法的输入为一个已有一组基的单纯形表,目标函数取最大值,如下表

( 1 14 6 0 0 0 0 0 1 1 1 1 0 0 0 4 1 0 0 0 1 0 0 2 0 0 1 0 0 1 0 3 0 3 1 0 0 0 1 26 ( x 1 x 2 x 3 x 4 x 5 x 6 x 7 b ) ) \quad\quad\quad\quad\quad\quad\quad\quad\begin{pmatrix} 1&14&6&0&0&0 &0&0\\\\ 1&1&1&1&0&0 &0&4\\\\ 1&0&0&0&1&0 &0&2\\\\ 0&0&1&0&0&1 &0&3\\\\ 0&3&1&0&0&0 &1&26\\\\ (x_1&x_2&x_3&x_4&x_5&x_6 &x_7&b)\\\\ \end{pmatrix}

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值