3 REM GCMP1: CRITICAL PATH ANALYSIS 10 REM CPM1 - PERFORMS CRITICAL PATH ANALYSIS 30 REM J. MOORE (2/10/70) 40 REM 50 REM ENTER DATA AT LINE 8000. SEE WRITEUP FOR DETAILS 60 REM INPUT DATA 70 REM WRITEUP PROGRAM DESCRIPTION 80 REM N N NUMBER OF TASKS (<=45) 90 REM SI M NO. OF SUCCESSOR TASKS TO TASK I 100 REM KSI J HO. OF KTH SUCC. TO TASK I 110 REM KTI P(I,J) TIME REQD. ON TAKS I BEFORE TASK KSI 120 REM CAN BE STARTED 130 REM 200 DIM P(45,45),E(45),L(45) 210 MAT P=ZER 220 MAT E=ZER 230 MAT L=CON 235 REM 240 REM WE SET UP OUR PRECEDENCE MATRIX WITH THE TIMES INVOLVED 245 REM 260 READ N 270 FOR I=1 TO N-1 290 READ M 300 IF M=0 THEN 360 310 FOR K=1 TO M 320 READ J,P(I,J) 330 IF J<=I THEN 9000 350 NEXT K 360 NEXT I 370 REM OUR PRECEDENCE MATRIX WITH THE TIMES INVOLVED IS SET UP 380 REM NOW WE CALCULATE OUR EARLIEST AND LATEST STARTS 390 REM FOLLOWING THIS WE CAN FIND OUR CRITICAL PATHS 400 REM FIRST WE FIND EARLIEST STARTS. 410 PRINT 411 PRINT:PRINT 412 PRINT 'EVENT','EARLIEST','LATEST','SLACK' 413 PRINT'NUMBER','START','START','TIME' 414 FOR I=1 TO N-1 420 FOR J=I+1 TO N 430 IF P(I,J)=0 THEN 470 440 T1=E(I)+P(I,J) 450 IF E(J)>=T1 THEN 470 460 E(J)=T1 470 NEXT J 480 NEXT I 490 REM THE EARLIEST STARTS ARE NOW IN THE E ARRAY 500 MATL=(E(N))*L 510 REM NOW WE CALCULATE THE LATEST STARTS 520 FOR J=N TO 2 STEP -1 530 FOR I=J-1 TO 1 STEP -1 540 IF P(I,J)=0 THEN 580 550 T1=L(J)-P(I,J) 560 IF T1>=L(I) THEN 580 570 L(I)=T1 580 NEXT I 590 NEXT J 600 REM THE EARLIEST AND LATEST STARTS ARE NOW IN THE E AND L ARRAYS 650 FOR I=1 TO N 660 PRINT I,E(I),L(I),L(I)-E(I) 670 NEXT I 680 PRINT'THE TIME TO PROJECT COMPLETION IS: 'E(N) 690 PRINT 'THE JOBS ON THE CRITICAL PATH ARE: ' 700 FOR I=1 TO N-1 710 IF E(I)'; 730 NEXT I 740 PRINT N 741 PRINT'ONE CRITICAL PATH THROUGH THE NETWORK IS: ' 742 FOR I=1 TO N-1 743 IF E(I)<>L(I) THEN 746 744 I1=I 745 GOTO 747 746 NEXT I 747 PRINTI1'>'; 748 FOR J=N TO I1+1 STEP -1 749 IF E(J)<>L(J) THEN 753 750 IFP(I1,J)=0 THEN 753 751 I1=J 752 GOTO 754 753 NEXT J 754 IF I1=N THEN 757 755 PRINT I1'>'; 756 GOTO 748 757 PRINT N 759 PRINT:PRINT:PRINT 780 PRINT'HOW MANY LINKS OF THE NETWORK DO YOU WISH TO CHANGE?' 790 INPUT N1 795 IF N1=0 THEN 9999 800 PRINT'FOR EACH LINK TYPE: FIRST JOB,SECOND JOB,TIME INVOLVED.' 810 FOR K=1 TO N1 820 INPUT I,J,P1 830 IF I>=J THEN 870 840 P(I,J)=P1 850 NEXT K 855 MAT E=ZER 860 MAT L=CON 865 GOTO 410 870 PRINT'YOU HAVE JOB'J'TO BE COMPLETED BEFORE JOB'I; 880 PRINT'.THIS NOT ALLOWED.' 890 PRINT'CHECK YOUR DATA AND BEGIN AGAIN.' 900 GOTO 780 7900 GOTO 9999 8000 DATA 11 8010 DATA 1,3,10 8020 DATA 2,3,6,4,5 8030 DATA 2,5,6,6,5 8040 DATA 1,7,2 8050 DATA 2,8,5,9,7 8060 DATA 2,8,3,10,1 8070 DATA 1,10,6 8080 DATA 1,10,8 8090 DATA 1,11,5 8100 DATA 1,11,4 9000 PRINT'YOU HAVE JOB'J'TO BE COMPLETED BEFORE JOB'I; 9010 PRINT'. THIS NOT ALLOWED.' 9020 PRINT 'CHECK YOUR DATA AND BEGIN AGAIN.' 9999 END