home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1988 / 02 / projekt1.pro < prev    next >
Text File  |  1987-11-23  |  7KB  |  182 lines

  1. "PROGRAMM 1"
  2.      
  3. "Ressourcen"
  4.  
  5. Mitarbeiter(Hans,Zuschneider,RS1,j) ->;
  6. Mitarbeiter(Hans,Zuschneider,RS2,j) ->;
  7. Mitarbeiter(Hans,Zuschneider,BS1,nein) ->;
  8. Mitarbeiter(Klaus,Zuschneider,RS1,nein) ->;
  9. Mitarbeiter(Monika,Maschinenarbeiterin,RS2,nein) ->;
  10. Mitarbeiter(Monika,Maschinenarbeiterin,SA1,j) ->;
  11. Mitarbeiter(Monika,Maschinenarbeiterin,SA2,j) ->;
  12. Mitarbeiter(Hannelore,Maschinenarbeiterin,SA2,nein) ->;
  13. Mitarbeiter(Hannelore,Maschinenarbeiterin,NM2,j) ->;
  14. Mitarbeiter(Hannelore,Maschinenarbeiterin,NM1,nein) ->;
  15. Mitarbeiter(Karin,Maschinenarbeiterin,SA3,nein) ->;
  16. Mitarbeiter(Karin,Maschinenarbeiterin,PM,nein) ->;
  17. Mitarbeiter(Claudia,Maschinenarbeiterin,SA3,j) ->;
  18. Mitarbeiter(Claudia,Maschinenarbeiterin,SA1,nein) ->;
  19. Mitarbeiter(Judith,Maschinenarbeiterin,SA2,j) ->;
  20. Mitarbeiter(Judith,Maschinenarbeiterin,PM,j) ->;
  21. Mitarbeiter(Judith,Maschinenarbeiterin,NM1,j) ->;
  22.  
  23. Maschine(Rollenschneider,RS1,1000,700,15) ->;
  24. Maschine(Rollenschneider,RS2,320,80,5) ->;
  25. Maschine(Blockschneider,BS1,3000,2500,15) ->;
  26. Maschine(Praegemaschine,PM,100,60,10) ->;
  27. Maschine(Schweissautomat,SA1,280,100,15) ->;
  28. Maschine(Schweissautomat,SA2,190,80,10) ->;
  29. Maschine(Schweissautomat,SA3,80,35,10) ->;
  30. Maschine(Nietmaschine,NM1,360,180,5) ->;
  31. Maschine(Nietmaschine,NM2,240,90,5) ->;
  32.  
  33. "Arbeitsgaenge"
  34.  
  35. Arbeitsgaenge(Ringbuch-Typ1,S-TZ,<Rollenschneider,S-TZ>.
  36.       <Blockschneider,S-TZ>.<Praegemaschine,S-TZ>.
  37.       <Schweissautomat,S-TZ>.<Nietmaschine,S-TZ>.nil) ->;
  38. Arbeitsgaenge(Ringbuch-Typ2,S-TZ,<Rollenschneider,S-TZ>.
  39.       <Blockschneider,S-TZ>.<Schweissautomat,S-TZ>.
  40.       <Nietmaschine,S-TZ>.nil) ->;
  41.  
  42. "zu erledigende Auftraege"
  43.  
  44. Auftraege(<111,Ringbuch-Typ2,400,480>.
  45.        <112,Ringbuch-Typ1,200,360>.
  46.        <113,Ringbuch-Typ2,300,430>.
  47.        <114,Ringbuch-Typ1,200,480>.nil) ->;
  48.  
  49.  
  50. "Produktionsplanung"
  51.  
  52. Produktionsplan(g-P-lan) ->
  53.    Auftraege(L-iste)
  54.    Maschinenplan(L-iste,nil,P-lan)
  55.    Arbeitsplan(P-lan)
  56.    reverse(P-lan,nil,g-P-lan);
  57.  
  58. Maschinenplan(nil,P-lan,P-lan) ->;
  59. Maschinenplan(<n-r,P-rodukt,S-TZ,T-ermin>.r-est,P-lan1,P-lan) ->
  60.    Arbeitsgaenge(P-rodukt,S-TZ,<F-unktion,S-TZ>.A-rbeitsgaenge)
  61.    berechne-ersten-Arbeitsgang(T-ermin,<F-unktion,S-TZ>,P-lan1,
  62.             M-aschine,M-itarbeiter,S-tart,E-nde)
  63.    Auftragsplanung(T-ermin,n-r,M-aschine,M-itarbeiter,S-tart,E-nde,P-lan1,
  64.              A-rbeitsgaenge,P-lan2)
  65.    Maschinenplan(r-est,P-lan2,P-lan);
  66.  
  67. Arbeitsplan(nil) ->;
  68. Arbeitsplan(<n-r,M-aschine,M-itarbeiter,S-tart,E-nde>.P-lan) ->
  69.    Mitarbeiter-verfuegbar(M-itarbeiter,S-tart,E-nde,P-lan)
  70.    Mitarbeiter(M-itarbeiter,B-eruf,M-aschine,a-kkord)
  71.    Arbeitsplan(P-lan);
  72.  
  73. Auftragsplanung(T-ermin,n-r,M-aschine,M-itarbeiter,S-tart,E-nde,
  74.            P-lan,nil,P-lan1) ->
  75.    /
  76.    val(inf(E-nde,T-ermin),1)
  77.    notiere(n-r,M-aschine,M-itarbeiter,S-tart,E-nde,P-lan,P-lan1);
  78. Auftragsplanung(T-ermin,n-r,M-aschine,M-itarbeiter,S-tart,E-nde,
  79.           P-lan,l,n-Plan) ->
  80.    notiere(n-r,M-aschine,M-itarbeiter,S-tart,E-nde,P-lan,P-lan1)
  81.    berechne-naechsten-Arbeitsgang(T-ermin,M-aschine,M-itarbeiter,
  82.           S-tart,E-nde,P-lan1,l,n-Maschine,n-Mitarbeiter,n-Start,n-Ende,l1)
  83.    Auftragsplanung(T-ermin,n-r,n-Maschine,n-Mitarbeiter,n-Start,
  84.           n-Ende,P-lan1,l1,n-Plan);
  85.  
  86. notiere(n-r,M-aschine,M-itarbeiter,S-tart,E-nde,P-lan,<n-r,M-aschine,
  87.    M-itarbeiter,S-tart,E-nde>.P-lan) ->;
  88.  
  89. berechne-ersten-Arbeitsgang(T-ermin,<F-unktion,S-TZ>,P-lan1,M-aschine,
  90.         M-itarbeiter,S-tart,E-nde) ->
  91.    Maschine(F-unktion,M-aschine,A-Z,N-Z,U-Z)
  92.    berechne-AuftragsStart-u-Ende(T-ermin,M-aschine,A-Z,N-Z,S-TZ,
  93.            a-kkord,S-tart, E-nde)
  94.    Maschine-verfuegbar(M-aschine,U-Z,S-tart,E-nde,P-lan1);
  95.  
  96. berechne-naechsten-Arbeitsgang(T-ermin,M-aschine,M-itarbeiter,
  97.             S-tart,E-nde, P-lan1,<F-unktion,S-TZ>.l-Rest,n-Maschine,
  98.             n-Mitarbeiter,n-Start,n-Ende,l-Rest) ->
  99.    Maschine(F-unktion,n-Maschine,A-Z,N-Z,U-Z)
  100.    berechne-Start-u-Endezeit(T-ermin,M-aschine,S-tart,E-nde,
  101.             A-Z,N-Z,S-TZ, a-kkord,n-Start,n-Ende)
  102.    Maschine-verfuegbar(n-Maschine,U-Z,n-Start,n-Ende,P-lan1);
  103.  
  104. berechne-AuftragsStart-u-Ende(T-ermin,M-aschine,A-Z,N-Z,S-TZ,nein,
  105.            S-tart,E-nde) ->
  106.    suche-Startzeit(T-ermin,1,S-tart)
  107.    val(add(S-tart,trunc(div(float(S-TZ),div(float(A-Z),
  108.          +6.0e+1)))),E-nde);
  109. berechne-AuftragsStart-u-Ende(T-ermin,M-aschine,A-Z,N-Z,S-TZ,
  110.           nein,S-tart,E-nde) ->
  111.    suche-Startzeit(T-ermin,1,S-tart)
  112.    val(add(S-tart,trunc(div(float(S-TZ),div(float(N-Z),
  113.           +6.0e+1)))),E-nde);
  114.  
  115. "Es darf fruehestens begonnen werden, wenn vom letzten "
  116. "Arbeitsgang her Material fuer 60 Minuten Akkordarbeit "
  117. "zur Verfuegung steht"
  118.  
  119. berechne-Start-u-Endezeit(T-ermin,v-Maschine,S-tart,E-nde,
  120.            A-Z,N-Z,S-TZ,ja,n-Start,n-Ende) ->
  121.    Maschine(v-Funktion,v-Maschine,v-AZ,v-NZ,v-UZ)
  122.    val(add(S-tart,trunc(div(float(A-Z),div(float(v-AZ),
  123.          +6.0e+1)))),w)
  124.    val(if(inf(w,E-nde),w,E-nde),S-tart1)
  125.    suche-Startzeit(T-ermin,S-tart1,n-Start)
  126.    val(add(n-Start,trunc(div(float(S-TZ),div(float(A-Z),
  127.           +6.0e+1)))),n-Ende);
  128. berechne-Start-u-Endezeit(T-ermin,v-Maschine,S-tart,E-nde,
  129.            A-Z,N-Z,S-TZ,nein,n-Start,n-Ende) ->
  130.    Maschine(v-Funktion,v-Maschine,v-AZ,v-NZ,v-UZ)
  131.    val(add(S-tart,trunc(div(float(A-Z),div(float(v-AZ),+6.0e+1)))),w)
  132.    val(if(inf(w,E-nde),w,E-nde),S-tart1)
  133.    suche-Startzeit(T-ermin,S-tart1,n-Start)
  134.    val(add(n-Start,trunc(div(float(S-TZ),div(float(N-Z),
  135.         +6.0e+1)))),n-Ende);
  136.  
  137. suche-Startzeit(T-ermin,S-tart,S-tart) ->;
  138. suche-Startzeit(T-ermin,S-tart,n-Start) ->
  139.    val(add(S-tart,30),x1)
  140.    val(inf(x1,T-ermin),1)
  141.    suche-Startzeit(T-ermin,x1,n-Start);
  142.  
  143. Mitarbeiter-verfuegbar(M-itarbeiter,S-tart,E-nde,nil) ->;
  144. Mitarbeiter-verfuegbar(M-itarbeiter,S-tart,E-nde,<n-r,M-aschine,
  145.      M-itarbeiter1,S-tart1,E-nde1>.P-lan) ->
  146.    /
  147.    NBed-Mitarb-verfuegbar(M-itarbeiter,M-itarbeiter1,S-tart,
  148.           E-nde,S-tart1,E-nde1)
  149.    Mitarbeiter-verfuegbar(M-itarbeiter,S-tart,E-nde,P-lan);
  150.  
  151. NBed-Mitarb-verfuegbar(M-itarbeiter,M-itarbeiter1,S-tart,E-nde,
  152.           S-tart1,E-nde1) ->
  153.    val(inf(S-tart1,E-nde),1)
  154.    val(inf(S-tart,E-nde1),1)
  155.    /
  156.    dif(M-itarbeiter,M-itarbeiter1);
  157. NBed-Mitarb-verfuegbar(M-itarbeiter,M-itarbeiter1,S-tart,E-nde,
  158.           S-tart1,E-nde1) ->;
  159.  
  160. Maschine-verfuegbar(M-aschine,U-mstellzeit,S-tart,E-nde,nil) ->;
  161. Maschine-verfuegbar(M-aschine,U-mstellzeit,S-tart,E-nde,<n-r,M-aschine,
  162.    M-itarbeiter,S-tart1,E-nde1>.P-lan) ->
  163.    /
  164.    pruefe-Maschine-verfuegbar(U-mstellzeit,S-tart,E-nde,S-tart1,E-nde1)
  165.    Maschine-verfuegbar(M-aschine,U-mstellzeit,S-tart,E-nde,P-lan);
  166. Maschine-verfuegbar(M-aschine,U-mstellzeit,S-tart,E-nde,p.P-lan) ->
  167.    Maschine-verfuegbar(M-aschine,U-mstellzeit,S-tart,E-nde,P-lan);
  168.  
  169. pruefe-Maschine-verfuegbar(U-mstellzeit,S-tart,E-nde,S-tart1,E-nde1) ->
  170.    val(inf(add(E-nde,U-mstellzeit),S-tart1),1)
  171.    /;
  172. pruefe-Maschine-verfuegbar(U-mstellzeit,S-tart,E-nde,S-tart1,E-nde1) ->
  173.    val(inf(add(E-nde1,U-mstellzeit),S-tart),1)
  174.    /;
  175.  
  176.  
  177. "Hilfspraedikat zur Listenumkehrung"
  178.  
  179. reverse(x.y,z,z1) -> reverse(y,x.z,z1);
  180. reverse(nil,z,z) ->;
  181.  
  182.