本文参考了高斯课堂的《运筹学》教学视频,并在期末考试中取得了良好的效果!
目录
1.线性规划
1.1标准型
1.2单纯形表
Cj | 目标函数系数 | |||||||
CB未知数对应的目标函数中的系数 | XB单位阵对应的两个未知数 | b资源限量 | X1 | X2 | X3 | X4 | X5 | |
X4 | 2 | 对应的约束条件的值 | ||||||
X5 | 4 | |||||||
检验数 |
初始的可行解,使选出的“基变量”等于“资源限量”,其他变量赋值“0”
本题就是X=(0,0,0,2,4)
检验数求法:按列算,每一列的Cj-(CB1*对应X的值+CB2*对应的X的值)
Eg :第一个检验数:6-(0*2+0*1)=0
当“约束系数为0或者负数的时候”,就不需要算最后一列了,直接打“——”,忽略不算
初始的单纯形表的检验数和价值系数相等
单纯形表的基变量的检验数是0,不需要计算
(1)最优性检验:所有的检验数都小于0,得到的是最优解,如果不是,就进行“基变换”
(2)用“最大的检验数的X”去“入基”
(3)最后一列的求法:用b(资源限量)一列去对应除以选定的一列
(4)找到“最后一列最小的值”,这一横行对应的“原始基变量”作为“出基变量”
(5)圈出“行列交叉的那个数字”
(6)画一个新的“迭代表”,让选出的基变量的“约束条件系数”变成1,同列的其他值变成“0”
具体的方法,
同行变成1 的方法:乘以一个系数
其他行变成0的方法:减去(有1 的那一行,乘以某个系数)
(6)再算检验数,如果还是没有全部小于等于0,继续迭代
当有“忽略的时候”直接不算,“取其他最小值”
(7)最优解如下:对基变量进行赋值
1.3.对偶问题
(1)目标函数的min与max反转
(2)有n个约束条件就写n个新的系数y,竖着写
(3)对偶方程的“约束系数”就是“原问题的竖着的系数”,相当于矩阵系数的T对应相乘
(4)max变成min的话,新的y的符号和“原问题的约束条件的变量相反”,对偶问题的约束条件和原问题的“变量条件保持一致,如果是无约束就是‘=’ ”
(5)min变成max的话,新的对偶问题的“约束条件”与原问题的“变量相反”
(6)总之,max变min就是,max的方程让y变量反号;
Min变max就是,min的变量让y的方程反号
Max的方程和min的变量是相反的符号
注意y1 2 3 4 5的顺序,检验数那一行就是y的取值,影子价格就是取值
2运输问题
2.1初始调运方案
最小元素法:
产销平衡问题的解法如下:
- 把所有的元素拿到表格的右上角
- 优先找最小的运价,(全局最小),在行列(产量、销量)里面选一个小的
- 比如选到了“列”,就填入数字,满足了,把这一列删除
- 如果选到了行也类似
- 最后补齐剩下的一格没有消耗的
- 注意验证,m+n-1等于填入数量
退化的时候记得补0(就是同时满足了行列,就需要任意补充一个0填入)
2.2计算检验数
位势法(对偶变量法)
- 设置行列位势
- 把填入了数字的位置的“运价”,去算检验数,检验数的等式为0
- 设其中一个位势为较小的整数(0/1),例如u1=1
- 计算出位势
- 根据上面的公式,去算那些没有填写的位置的检验数,例如(1,1)位置,检验数=4-u1-v1
- 如果检验数里面有负数,那就是没有达到最优解
3目标规划(只要求建模)
- 根据题目写约束
- 除了第一个绝对约束外,其他的均写为等式,固定写法(+d1— -d1+)
4指派问题+整数规划:
4.1整数规划建模
- 先列出指派矩阵
- 每一行减去该行的最小元素
- 做列变换(其实不变,但是必须写,抄一遍)
- 圈出“只有一个0的行中的0”,并且划掉那一列的另一个0
- 圈出“只有一个0的列中的0”,并且划掉那一行的另一个0
- 如果找不到只有一个0的行,就去找一个0最少的行圈出来,划掉同列和同行的0
- 再找只有一个0的列,不断迭代,直到全部处理完
- 看看圈出来的0的个数是不是和矩阵的阶数相等,相等就是最优解
- 不相等就启动下面步骤:
- 对没有圈0的行打√
- 对打√行中,含有划掉0的列打√
- 对打√列中,含有画圈0的行打√
- 重复上面几个步骤,先行后列,直到没法打√
- 对没打√的行画横线,对打√的列画竖线
- 找到“无直线覆盖的部分”,找到其中最小的元素,例如下列的2
- 打√的行减去这个数,打√的列加上这个数(行减列加)
- 再用上面的方法操作,找一下解,看看是不是满足画圈的0的数目和阶数相同
- 最优解如下,画圈的位置,在原表格中去圈出来对应位置的数字就是最优解
5动态规划:
5.1动态规划建模
逆向求解
记住表格的画法
6最短路,最大流,网络计划
6.1最短路
6.2最大流
- 正向弧:标号(v前一个脚标,min(前一个节点的值,线路的差值))
- 逆向弧:标号(-v前一个节点脚标,当前反向弧的流量(右边的数字))
- 所有的连接弧都需要写出检查
- 增广链上的正向弧都是非饱和的,逆向的都是非负的
- 然后进行流量调整,正向的加,逆向的减
- 检验,按照上面的方法进行调整标号,直到不能标号
最大流和截量相同
截集就是:检验的时候标号的与没有标号的划开,箭头在一边,箭尾在另一边的链路就是最小截集
6.3网络计划技术
时间参数计算:
事件最早时间:前面的时间累加,取最大
事件最晚时间:后一项的最晚时间,减去前工序,取最小
和前一个序号左数字一样 | 下面的时间-工序时长 | 位置2-位置1 |
上面的时间+工序时长 | 和后一个序号右数字一样 | 位置5-位置1-工序时长 |