1:描述

线性规划指的是在一组线性约束条件下,求解目标函数最优解的问题,而单纯形算法是解决线性规划问题的一个有效的算法。

2:一般形式

在约束条件下,寻找目标函数Z的最大值Max Z

                                                                          

目标规划 Python 目标规划的单纯形法_最优解

3:可行域

满足线性规划问题的约束条件所有的顶点所组成的区域集合就是线性规划的可行域,如果可行域是有界的,线性规划问题的目标函数最优解一定在可行域的顶点上。

单纯形法就是通过设置不同的基向量,经过矩阵的线性变换,求得基可行解(可行域顶点),并判断该解是否最优,否则继续设置另一组基向量,重复执行以上步骤,直到找到最优解。所以,单纯形法的求解过程是一个循环迭代的过程。

目标规划 Python 目标规划的单纯形法_最优解_02

 

4:标准形式和矩阵形式

目标规划 Python 目标规划的单纯形法_目标规划 Python_03

                             

目标规划 Python 目标规划的单纯形法_目标规划 Python_04

                        标准形式                                                                                      矩阵形式

标准形式:

目标函数要求Max Z,约束条件均为等式,决策变量为非负约束

 

普通线性规划转换成标准型

1:若目标函数为最小化,可以通过取负,求最大化

2:约束不等式<= 不等式,可以在左端加入非负松弛变量,转变为等式,例如:

                                                        

目标规划 Python 目标规划的单纯形法_线性规划_05

      约束不等式>= 不等式,可以在左端j减去非负松弛变量,转变为等式

3:若存在取值无约束的变量,可转变为两个非负变量的差,比如

目标规划 Python 目标规划的单纯形法_线性规划_06

 

例如:

目标规划 Python 目标规划的单纯形法_最优解

                    转换成标准形式                    

目标规划 Python 目标规划的单纯形法_最优解_08

普通的线性规划                                                                                  标准形式的线性规划

 

5:单纯形算法

几何意义

在标准形中,有m个约束条件(不包括非负约束),n个决策变量,且(n>=m)。首先,选取m个基变量

 ,基变量对应约束系数矩阵的列向量线性无关。通过矩阵的线性变换,基变量可由非基变量表示:                                                             

目标规划 Python 目标规划的单纯形法_约束条件_09

如果令非基变量等于0,可求得基变量的值 :

目标规划 Python 目标规划的单纯形法_目标规划 Python_10

如果为可行解的话,Ci大于0。那么它的几何意义是什么呢?

目标规划 Python 目标规划的单纯形法_最优解_11

X1=0表示可行解在x轴上;X4=0表示可行解在x1+2x2=9的直线上。那么,求得的可行解即表示这两条直线的交点,也是可行域的顶点,

 所以,通过选择不同的基变量,可以获得不同的可行域的顶点。