1. 问题描述
n n n个工件,每个工件都要按顺序经过 A A A、 B B B两个机床进行加工,工件i在 A A A、 B B B两个机床上加工时间分别为 a i a_i ai, b i b_i bi,确定 n n n个工件的加工顺序,使得总加工时间最短。
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): X X X中是还没有经过 A A A机床加工的工件, t t t是 B B B机床加工X外的工件还需要的时间,如果取 为下一个放在 A A A上加工的工件,则i在 A A A上完成加工时达到下一个状态 ( X - i , z i ( t ) ) (X-i,z_i(t)) (X-i,zi(t)),其中
z i ( t ) = { b i , t ≤ a i t − a i + b i , t > a i = max { t − a i , 0 } + b i = max { t − a i + b i , b i } \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)是 t t t的单调上升函数,且
{ f ( X , t ) = min i ∈ X { a i + f ( X − i , z i ( 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