动态规划之装配线调度理解

来源:互联网 发布:知乎怎么挣钱 编辑:程序博客网 时间:2024/04/30 05:26

一.装配线事例

这里写图片描述

这里写图片描述

二.例题分析

动态规划适用于子问题不是独立情况, 各个子问题包含公共子问题。通常用于最优化问题,我们需要找出一个最优解。

上述装配线问题考虑的是当一个底盘进入装配线后该选择使用哪个装配线上的装配站从而使得时间最少(尽管我觉得两条线独立运行应该生产效率最高)。
假设装配线的转移不需要时间的话,显然我们只需要考虑下一个是1号线装配站还是2号线装配站即可,只需要选择时间最短的。比如当前底盘在S1,1.则下一站我们选择S2,2。因为从S1,1到S2,2只需5,而到S1,2需要9。之所以只需考虑下一步是因为,两条装配线是独立的,前后装配的选择不会互相影响。

而当转移需要时间后,就不一样了,每次转移我们都要付出一定代价。比如当前底盘在S1,1。要是下一站我们选择S1,1——S2,2,则我们需要花费转移2,则总的花费2+5=7;而要是下一站选择S1,2则花费9。按选择的话我们还是选择S2,2。当时我看下一站3<6;如果我们从S2,2到S1,3总花费7+3+1=11;如果我们从S1,2到S1,3总花费9+3=12。按选择的话我们还是选择S2,2——S2,2。但是我们看第二次转移只花了1,如果假设转移需要4的话7+3+4=14.此时我们前一步选择就不对了。这就是因为前后装配站的选择会影响后续结果。

因为求解的是最优解问题,我们可以首先假设我们知道n-1个装配站的最优路线,那么我们可以求解出n个装配站的最优路线:只需要用(n-1最优路线)+(从n-1站到n站的最短时间)。同理假设我们知道n-2个装配站的最优路线,那么我们可以求解出n-1个装配站的最优路线:只需要用(n-2最优路线)+(从n-2站到n-1站的最短时间)。继续迭代,最后变成我们知道1站的最优路线。(显然我们是知道到一站的最优路线,初始值已经给了。)其实这个过程,我们就是在找最优解的子问题,从n,n-1,n-2…..最后到1(已知)。
迭代公式如下:f表示到达当前装配站的时间
这里写图片描述

三.例题计算过程

观察图2左下角计算过程:

1、装配线有两条,所以问题入口有2个。2+7=9和4+8=12

2、在考虑下一站时,我们只考虑前一站总花费,以及前一站到下一站的花费(其实就是把前一站总花费当成最优解,现在我们考虑的是下一站最优解,这样就省去我们在考虑下一站时还需要前一站之前所有站的花费,那样路线过于复杂,也没有必要。因为我们已经找到前一站最优路线)。先考虑S1,2所在站,要想到S1,2有两条路:S1,1-S1,2:9+9=18和S2,1-S1,2:12+2+9=23.显然选择S1,1-S1,2较好。再考虑S2,2所在站,要想到S2,2有两条路:S1,1-S2,2:9+7=16和S2,1-S2,2:12+5=17.显然选择S1,1-S2,2较好。如此迭代。

3、最后到退出,有S1,6-退出:35+3=38和S2,6退出:37+2=39。选择S1,6-退出花费最短。如此我们找出最优解。
这里写图片描述

0 0