计划网络图
- 概念:
称任何消耗资源的行动为作业,称作业的开始或结束为事件,事件本身不消耗资源。
关键路线是累计作业时间最长的路线。 - 时间参数:
1)事件的最早时间:
事件jjj的最早时间用tE(j)t_{E}(j)tE(j)表示,它表示以事件jjj为始点的各工作最早可能开始的时间,也表示以事件jjj为终点的各工作最早可能完成的时间,它等于从始点事件到该事件的最长路线上所有工作的工时总和。事件最早时间可用下列递推公式,按照事件编号从小到大的顺序逐个计算。
设事件编号为1,2,⋯ ,n1,2,\cdots,n1,2,⋯,n,则:
{tE(1)=0;tE(1)是与事件j相邻的各紧急事件的最早时间tE(j)=maxi{tE(i)+t(i,j)} \left\{ \begin{aligned} t_{E}(1)=0; \qquad \text{$t_{E}(1)$是与事件$j$相邻的各紧急事件的最早时间} \\ t_{E}(j)=\mathop{max}\limits_{i}\{t_{E}(i)+t(i,j)\} \end{aligned} \right. ⎩⎨⎧tE(1)=0;tE(1)是与事件j相邻的各紧急事件的最早时间tE(j)=imax{tE(i)+t(i,j)}
2)事件的最迟时间:
{tL(n)=总工期;tE(1)是与事件j相邻的各紧急事件的最早时间tL(j)=minj{tL(j)−t(i,j)} \left\{ \begin{aligned} t_{L}(n)=总工期; \qquad \text{$t_{E}(1)$是与事件$j$相邻的各紧急事件的最早时间} \\ t_{L}(j)=\mathop{min}\limits_{j}\{t_{L}(j)-t(i,j)\} \\ \end{aligned} \right. ⎩⎨⎧tL(n)=总工期;tE(1)是与事件j相邻的各紧急事件的最早时间tL(j)=jmin{tL(j)−t(i,j)}
例4.16(求最早开工时间)
model:
sets:
events/1..8/:x;
operate(events,events)/1 2,1 3,1 4,2 5,3 4,3 5,4 6,5 6,5 7,5 8,6 7,6 8,7 8/:t;
endsets
data:
t=5 10 11 4 4 0 15 21 25 35 0 20 15;
enddata
min=@sum(events:x);
@for(operate(i,j):x(j)>=x(i)+t(i,j));
end
例4,16(将关键路看做最长路)
model:
sets:
events/1..8/:d;
operate(events,events)/1 2,1 3,1 4,2 5,3 4,3 5,4 6,5 6,5 7,5 8,6 7,6 8,7 8/:t,x;
endsets
data:
t=5 10 11 4 4 0 15 221 25 35 0 20 15;
d=1 0 0 0 0 0 0 -1;
enddata
max=@sum(operate(i,j):t(i,j)*x(i,j));
@for(events(i):@sum(operate(i,j):x(i,j))- @sum(operate(j,i):x(j,i))=d(i));
end