单纯形法
线性规划一般形式
在约束条件下、寻找目标函数 z 的最大值
max(or min) z=j=1∑ncjxjs.t.⎩⎨⎧j=1∑naij ≤ (or =,≥) bi(i =1,...,m)xj ≥ 0 (j =1,...,n)
线性规划的标准形式
标准形需要满足的条件:
- 目标函数求最大值 max
- 约束条件均为等式
- 所有决策变量均为非负约束
- 约束条件右端常数项 bi 全为非负值
一般来说,规定线性规划的标准形式为:
max z=j=1∑ncjxjs.t.⎩⎨⎧j=1∑naij = bi(i =1,...,m)xj ≥ 0 , bi ≥ 0(j =1,...,n)
可以写成矩阵形式:
max z =CXAX = bX ≥ 0A = a11⋮am1a12⋮am2⋯⋱⋯a1n⋮amn
将一般线性规划问题化为标准型:
- 目标函数极大化。(可通过取相反数实现)
- 将不等式约束条件通过添加松弛变量得到方法华为等式
- 约束条件为 ≤ 不等式,则在约束条件的左端加上一个非负的松弛变量;
- 约束条件为 ≥ 不等式,则在约束条件的左端减去一个非负的松弛变量。
- 取值无约束的变量:
- 若存在无约束的变量xk,可令 xk =xk′ − xk′′,其中 xk′,xk′′ ≥ 0。
单纯形法求解
几个基本定理:
- 若线性规划问题存在可行解,则问题的可行域是凸集
- 引理:线性规划问题的可行解 X = (x1,⋯,xn)T 为基可行解的充要条件是 X 的正分量所对应的系数列向量是线性无关的。
- 线性规划问题的基可行解 X 对应线性规划问题可行域(凸集)的顶点
- 若线性规划问题有最优解一定存在一个基可行解是最优解
单纯形法求解过程:
- 化为标准型(要求 b≥0),确定初始基B,建立初始单纯行表(假设A矩阵中存在单位矩阵)

- 其中:
θ = min(aikbi ∣ aik > 0)
- 若 σj ≤0 (j = m+1,⋯,n),则已得到最优解,否则转入下一步
- 若在 j = m+1,⋯,n 中,存在 σk > 0, 而 Pk < 0,则无最优解。
- 确定换入变量和换出变量
- 由 max(σk>0) = σk,确定 xk 为换入变量
- 由
θ = min(aikbi ∣ aik > 0) =alkbl
确定 xl 为换出变量。
5. 以 alk 为主元进行迭代
即将
Pk=a1k⋮alk⋮amk迭代成0⋮010⋮0→l行
- 重复 2~5 步骤
单纯形法进一步讨论
- 人工变量法(大M法)
- 凑单位矩阵添加人工变量
- 目标函数中人工变量的系数为足够大的一个负值,用“−M”表示
- 两阶段法
- 第一阶段实现求解一个目标函数中只包含人工变量的线性规划问题(令目标函数中其他变量的系数取零),人工变量的系数取某个正的常数(一般取1),在保持原问题约束条件不变的情况下求这个目标函数的极小值
- 当人工变量取值为0时,目标函数值也为0,这时的最优解就是原线性规划问题的的一个可行解
- 如果第一阶段求解结果表明最优解的目标函数值不为0,即最优解的基变量中含有人工变量,则表明原线性规划问题无可行解
- 第一阶段表明问题有可行解时,第二阶段从第一阶段的最终单纯形表出发,去掉人工变量,并按问题原来的目标函数,继续寻找问题的最优解