1.术语
顺序、调度和调度策略。
- 顺序: n n n工件的排列或给定机器上的加工次序
- 调度:在机器环境中分配工件,允许中断
- 调度策略:随即环境中,为系统可能处在的任何一种状态规定了合适地行为
在确定性模型中,顺序和调度更重要。
2.非延迟调度(Non-delay Schedule)
若一项工序等待加工时没有一台机器是空闲的,那么这个可行的调度称为非延迟调度。
一个调度是非延迟的要求等价于禁止非强迫的空闲。对许多模型,包括所有允许中断和具有规则目标函数的,具有非延迟的最优调度。
在所有非延迟调度里,有一小类是无中断、非延迟调度,其会导致意料不到的异常情况。
一个调度异常情况
考虑
P
2
∣
p
r
e
c
∣
C
m
a
x
P2|prec|C_{max}
P2∣prec∣Cmax的一个实例,有10项工件。
优先级约束满足下图
下图a中调度结果是31,为最优调度。若每个工件的加工时间减少一个时间单位,预料中制造期应该会少于31,但是非延迟要求导致调度结果为图b,制造期为32;类似的,若机器为3台,预料中制造期也应少于31,但是非延迟要求导致制造期为36,调度结果图c。
一些加工车间的启发式程序和算法是基于带有某些特殊性质的无中断调度而构建的。两类无中断调度对一些加工车间算法是很重要的。
3.活跃调度(Active Schedule)
如果不可能通过改变在机器上的加工顺序来构建另一个调度,使得至少有一个操作提前完成,而且没有一个操作推迟完成,那么这个可行的调度被称为活跃调度。
换句话说,如果没有操作可以放进调度前面的间隙中并保持可行性,则调度是活跃的。无中断、非延迟调度必然是活跃的,反之则不然。
一个活跃调度案例
考虑具有3台机器和两项共件的加工车间。工件1在机器1上需要一个单位时间,在机器2上需要3个单位时间。工件2在机器3上需要两个单位时间在机器2上需要3个单位时间。两个工件都必须最后在机器2上加工。考虑这样一个调度,让工件2在工件1之前现在机器2上加工。很明显这个调度是活跃的;交换两个工件在机器2上的加工顺序会延迟工件2的加工。然而这个调度不是非延迟的。机器2直到时间2还是空闲的,而在时间1的时候已经有工件可以加工了。
可以证明,如果目标函数
γ
\gamma
γ是规则的,则对
J
m
∣
∣
γ
Jm||\gamma
Jm∣∣γ存在活跃的最优调度。
4.半活跃调度(Semi-Active Schedule)
如果不改变任意一台机器上的加工顺序,就没有任何操作可以提前完成,那么,这个可行的调度称为半活跃调度。显然,一个活跃调度必然是半活跃调度,反之则不一定。
一个半活跃调度
再考虑一个具有 3台机器和两项工作的加工车间。这两项工作的加工路线和前一个实例相同。工作1在机器1和机器 2上的加工时间都等于1。工作 2在机器2 和机器3上的加工时间都等于2。考虑在这样的调度下,工作 2在工作 1之前在机器 2上加工。这意味着工作2在时间2开始在机器2上加工而作1在时间4开始在机器2上加工。这个调度是半活跃的。然而,因为在不推迟工作 2在机器2上加工的情况下工作1可以在机器2上加工,所以它是不活跃的。
很容易构造一个甚至不是半活跃调度的实例。把工作1在机器2上的加工时间推迟一个单位时间(即在工作2和1的加工之间,机器2保持一个单位时间的空闲)。很明显这个调度不是半活跃的。
作业车间调度种类韦恩(Venn)图