1. 问题描述
nnn个工件,每个工件都要按顺序经过AAA、BBB两个机床进行加工,工件i在AAA、BBB两个机床上加工时间分别为aia_iai,bib_ibi,确定nnn个工件的加工顺序,使得总加工时间最短。
2. 例子描述
- 例子1
| 机床 | N1 | N2 |
|---|---|---|
| A | 4 | 2 |
| B | 1 | 3 |
先加工N1,所需总时间为4+2+3=9,先加工N2,所需总时间为2+4+1=7。
- 例子2
| 机床 | 1 | 2 | 3 | 4 | 5 |
|---|---|---|---|---|---|
| A | 3 | 7 | 4 | 5 | 7 |
| B | 6 | 2 | 7 | 3 | 4 |
加工顺序为13542。
3. 问题解决
状态(X,t):XXX中是还没有经过AAA机床加工的工件,ttt是BBB机床加工X外的工件还需要的时间,如果取 为下一个放在AAA上加工的工件,则i在AAA上完成加工时达到下一个状态(X-i,zi(t))(X-i,z_i(t))(X-i,zi(t)),其中
zi(t)={
bi,t≤ait−ai+bi,t>ai=max{
t−ai,0}+bi=max{
t−ai+bi,bi} \begin{aligned} z_{i}(t) &=\left\{\begin{array}{ll}{b_{i},} & {t \leq a_{i}} \\ {t-a_{i}+b_{i},} & {t>a_{i}}\end{array}\right. \\ &=\max \left\{t-a_{i}, 0\right\}+b_{i} \\ &=\max \left\{t-a_{i}+b_{i}, b_{i}\right\} \end{aligned} zi(t)={
bi,t−ai+bi,t≤ait>ai=max{
t−ai,0}+bi=max{
t−ai+bi,bi}
令f(X,t)f(X,t)f(X,t)为处于状态(X,t)(X,t)(X,t)时剩余的最优排工时间,则f(X,t)f(X,t)f(X,t)是ttt的单调上升函数,且
{
f(X,t)=mini∈X{
ai+f(X−i,zi(t))}f(ϕ,t)=t \left\{\begin{array}{l}{f(X, t)=\min _{i \in X}\left\{a_{i}+f\left(X-i, z_{i}(t)\right)\right\}} \\ {f(\phi, t)=t}\end{array}\right. {
f(X,t)=mini∈X{
ai+f(X−i,zi(t))}f(ϕ,t)=t
f(1,2,…,n,0)f({1,2,…,n},0)f(1,2,

这篇博客探讨了排工问题,即n个工件依次通过A、B两个机床加工,目标是最小化总加工时间。通过举例和数学解析,详细阐述了解决该问题的动态规划方法,包括状态定义、最优加工时间和状态转移方程,并证明了选择加工顺序的条件。
最低0.47元/天 解锁文章
1098

被折叠的 条评论
为什么被折叠?



