线性规划问题
1. 概述
线性规划问题是在一组线性约束下,求资源配置的最大最小值的问题。
直观的变现是在一个约束条件围成的区域上寻找一个点,这个点使得资源配置最优化:
2. 线性规划的思想
线性规划的思路是将不等式转换为等式,最终求得一个满足等式的解。
下面的约束式必然可以转换为[P|N]*X=B的形式,这里P是线性无关的M*M的方正。如果说将剩余的N-M个X设置为0。那么表达式转换为了P*X=B,也就是可以用到线性代数中方正的解法。
那么问题也就转换为了,如何找出P继而求出X了。
3. 步骤
3.1 转换不等式为等式
这一步,会根据不等式的数量增加多个变量
3.2 寻找初始基底
显然有X1到Xm为基底
因此最优解的形式变为了:
因为:
最优解变成了如下的形式:
由于Xj是必然>=0的,因此Z优化的问题实际上是在讨论 ,因为如果改对象大于0,则提高Xj必然会提高Z,那么还不是最优解,只有当 所有检验系数<=0的情况下才会有最优解,这是Z无法再变大了,非基变量取0,,此时Z0是最优解。
3.3 如何取得最优解
这就要用到上面图所展示的性质了,最优解必然是定点,定点必然是线性无关的基可行解,基可行解必然是定点。总而言之,也就是说最优解必然是基可行解中的求得。
那么实际上也就是说线性规划仅需要:
a.寻找不同的基Bi
b.然后求出Bi对应的基可行解Xi
c.最后被寻找满足所有检验系数 <=0的解X
3.4线性规划的实施步骤
a.寻找初始基底
这一步通过增加松弛变量和人工变量来实现
人工变量涉及到了一个可解与不可解的问题,采用大M法或两阶段法
1)大M法在于给与人工变量一个极大的系数M,
按理来说X6,X7是必须等于0的情况下取得最优解才算是原表达式有最优解,最终的基变量中必须不能存在x6,x7。如果不满足的话那么就说明无解
2)两阶段法
a.第一阶段是求最小化问题,
如果说w最小值为0,那么说明是存在基可行解的(存在基可行解说明存在基,存在基也就可以计算原始表达式的基可行解,如此也就可能得到最优解),可以进行第二阶段
b.第二阶段
第一阶段必然会得到一个最优解的基底,这时从中去除人工变量。然后继续优化即可。(这个地方需要再理解一下)
因为人工变量是虚拟的,在最优时它不应该有取值。如果原问题有可行解,那么人工变量必定取零yi=0(i=1, 2, ···,m),那么辅助问题的最优值一定为z=0。设最优解目标函数值为z,第一阶段求解的结果有三种可能的情况:
(1)如果第一阶段求解结果为z≠0,说明最优解的基变量中含有非零的人工变量,从而表明原问题无可行解,
不必进行第二阶段,计算终止。
(2)如果第一阶段求解结果z=0,如果辅助问题的最优基变量中没有人工变量,进入第二阶段。
(3)如果第一阶段求解结果z=0,如果辅助问题的最优基变量中仍有为0的人工变量,这表明原问题有退化的情况,在辅助问题的最优的单纯形表中有:】
、
其中 为非基变量下标集,这时又分两种情况:
(i)若arj全为0,则人工变量所在行中有原变量(现在是非基变量)下的元素都是0,这表明原问题的约束方程中有多余的,将其去掉,转入第二阶段。
(ii)若arj不全为0,则以ars为主元,进行换基迭代,最后转入转入第二阶段。
=================================================================
b.转换基底
如果存在 检验系数>0的情况,说明还没有获得最优解,这种情况下需要替换基底变量。选择检验系数最大的那一个替换,(可能因为增加X的时候Z增加的最大)。
而换进的变量则是:
3.5退化的情况
如果在选择换入的情况下出现了存在多个 ,会出现退化。因为基变量中多出现了0,这会导致在计算进行多次迭代后会出现循环的情况。采用勃兰特法可以不出现循环。
总流程:
总结:
线性规划需要重视的在于,
1. 算法主要流程
2. 有解性的条件
3. 初始基底构造方法及基底的交换规则
4. 退化的情况
可参考的思想在于:
1. 表达式的化简,将不等式转换为等式,最优化问题转换为了对检查参数的校验问题
2. 逐步求解的思想,如何正确的寻找求解的方向