运筹学——线性规划及单纯形法求解
运筹学——线性规划及单纯形法求解
1. 线性规划的概念
线性规划是研究在一组线性不等式或等式约束下使得某一线性目标函数取最大(或最小)的极值问题。
2. 线性规划的标准形
![clip_image002 clip_image002](https://images.cnblogs.com/cnblogs_com/6DAN_HUST/WindowsLiveWriter/928c35026a54_9CD4/clip_image002_thumb.gif)
特点:目标函数求极大;等式约束;变量非负。
则线性规划标准形的矩阵表达式为:
![clip_image008 clip_image008](https://images.cnblogs.com/cnblogs_com/6DAN_HUST/WindowsLiveWriter/928c35026a54_9CD4/clip_image008_thumb.gif)
如何化标准形:
(II)约束条件为不等式
约束条件为“” 不等式,则在约束条件的左端加上一个非负的松弛变量;
约束条件为“” 不等式,则在约束条件的左端减去一个非负的松弛变量。
3. 单纯形法求解
(I) 化为标准形(要求),确定初始基
,建立初始单纯形表(假设A矩阵中存在单位矩阵);
![clip_image032 clip_image032](https://images.cnblogs.com/cnblogs_com/6DAN_HUST/WindowsLiveWriter/928c35026a54_9CD4/clip_image032_thumb.gif)
(III)若在中,存在
,而
,则无最优解,停止。否则转入下一步;
重复(ⅱ)~(ⅴ)。
4. 单纯形法求解例示
|
![clip_image063 clip_image063](https://images.cnblogs.com/cnblogs_com/6DAN_HUST/WindowsLiveWriter/928c35026a54_9CD4/clip_image063_thumb.gif)
![clip_image065 clip_image065](https://images.cnblogs.com/cnblogs_com/6DAN_HUST/WindowsLiveWriter/928c35026a54_9CD4/clip_image065_thumb.gif)
![clip_image067 clip_image067](https://images.cnblogs.com/cnblogs_com/6DAN_HUST/WindowsLiveWriter/928c35026a54_9CD4/clip_image067_thumb.gif)
![clip_image069 clip_image069](https://images.cnblogs.com/cnblogs_com/6DAN_HUST/WindowsLiveWriter/928c35026a54_9CD4/clip_image069_thumb.gif)
![clip_image071 clip_image071](https://images.cnblogs.com/cnblogs_com/6DAN_HUST/WindowsLiveWriter/928c35026a54_9CD4/clip_image071_thumb.gif)
![clip_image073 clip_image073](https://images.cnblogs.com/cnblogs_com/6DAN_HUST/WindowsLiveWriter/928c35026a54_9CD4/clip_image073_thumb.gif)
![clip_image075 clip_image075](https://images.cnblogs.com/cnblogs_com/6DAN_HUST/WindowsLiveWriter/928c35026a54_9CD4/clip_image075_thumb.gif)
![clip_image077 clip_image077](https://images.cnblogs.com/cnblogs_com/6DAN_HUST/WindowsLiveWriter/928c35026a54_9CD4/clip_image077_thumb.gif)
两阶段法
第一阶段,求初始基可行解:在原线性规划问题中加入人工变量,使约束矩阵出现单位子矩阵,然后以这些人工变量之和W求最小为目标函数,构造如下模型:
![]() |
对上述模型求解(单纯形法),若W=0,说明问题存在基本可行解,可以进行第二个阶段;否则,原问题无可行解,停止运算。
第二阶段:在第一阶段的最终表中,去掉人工变量,将目标函数的系数换成原问题的目标函数系数,作为第二阶段计算的初始表(用单纯形法计算)。
![clip_image081 clip_image081](https://images.cnblogs.com/cnblogs_com/6DAN_HUST/WindowsLiveWriter/928c35026a54_9CD4/clip_image081_thumb.gif)
例:
第一阶段
![clip_image083 clip_image083](https://images.cnblogs.com/cnblogs_com/6DAN_HUST/WindowsLiveWriter/928c35026a54_9CD4/clip_image083_thumb.gif)
第二阶段
![clip_image085 clip_image085](https://images.cnblogs.com/cnblogs_com/6DAN_HUST/WindowsLiveWriter/928c35026a54_9CD4/clip_image085_thumb.gif)
∴最优解为(4 1 9 0 0),目标函数 Z = –2
退化: 即计算出的θ(用于确定换出变量)存在有两个以上相同的最小比值,会造成下一次迭代中由一个或几个基变量等于零,这就是退化(会产生退化解)。
虽任意换出变量,目标函数值不变,但此时不同的基却表示为同一顶点,其特例是永远达不到最优解。需作如下处理:
⑴. .当中出现两个以上最大值时,选下标最小的非基变量为换入变量;
⑵.当θ中出现两个以上最小值时,选下标最小的基变量为换出变量。
参考文献:
[1] 《运筹学》教材编写组. 运筹学. 北京: 清华大学出版社.