home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / lifeos2.zip / LIFE-1.02 / TESTS / LF / SCHEDULE.L00 < prev    next >
Text File  |  1996-06-04  |  1KB  |  36 lines

  1.  
  2. :: A:activity( duration =>D:real,
  3.                lateStart  => {1e50;real}, 
  4.                earlyStart => latest(R),
  5.                requests => R:{[];list} ) | lateStartCond(A,R).
  6.            
  7.             
  8. latest([]) -> 0.
  9. latest([B|ListOfActs])-> max(B.earlyStart+B.duration,latest(ListOfActs)).
  10.  
  11. lateStartCond(A,[])-> succeed.
  12. lateStartCond(A,[B:activity|ListOfActs]) ->
  13.                            lateStartCond(A,ListOfActs)|
  14.                                    LSB:(B.lateStart) <-
  15.                                min(LSB, A.earlyStart-B.duration).
  16.              
  17.  
  18. visAllActs([]).
  19. visAllActs([A|B],N:{1;real}) :- visualize(A,N), gc, visAllActs(B,N+1).
  20.  
  21. visualize(A:activity,N:int) :- write("Activity ",N,": "),
  22.                                visStart(A.earlyStart),
  23.                                visDuration(A.duration,"*"),nl,
  24.                                write("            "),
  25.                                cond( A.lateStart =<  50,
  26.                                      (visStart(A.lateStart),
  27.                                       visDuration(A.duration,"-"),nl,nl),
  28.                                      nl
  29.                                    ).
  30.  
  31. visStart(N:int) :- visNcar(N," ").
  32. visDuration(N,S):- visNcar(N,S).
  33.  
  34. visNcar(0,@).
  35. visNcar(N,S) :- write(S), visNcar(N-1,S).
  36.