home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Turbo Toolbox
/
Turbo_Toolbox.iso
/
1988
/
02
/
projekt1.pro
< prev
next >
Wrap
Text File
|
1987-11-23
|
7KB
|
182 lines
"PROGRAMM 1"
"Ressourcen"
Mitarbeiter(Hans,Zuschneider,RS1,j) ->;
Mitarbeiter(Hans,Zuschneider,RS2,j) ->;
Mitarbeiter(Hans,Zuschneider,BS1,nein) ->;
Mitarbeiter(Klaus,Zuschneider,RS1,nein) ->;
Mitarbeiter(Monika,Maschinenarbeiterin,RS2,nein) ->;
Mitarbeiter(Monika,Maschinenarbeiterin,SA1,j) ->;
Mitarbeiter(Monika,Maschinenarbeiterin,SA2,j) ->;
Mitarbeiter(Hannelore,Maschinenarbeiterin,SA2,nein) ->;
Mitarbeiter(Hannelore,Maschinenarbeiterin,NM2,j) ->;
Mitarbeiter(Hannelore,Maschinenarbeiterin,NM1,nein) ->;
Mitarbeiter(Karin,Maschinenarbeiterin,SA3,nein) ->;
Mitarbeiter(Karin,Maschinenarbeiterin,PM,nein) ->;
Mitarbeiter(Claudia,Maschinenarbeiterin,SA3,j) ->;
Mitarbeiter(Claudia,Maschinenarbeiterin,SA1,nein) ->;
Mitarbeiter(Judith,Maschinenarbeiterin,SA2,j) ->;
Mitarbeiter(Judith,Maschinenarbeiterin,PM,j) ->;
Mitarbeiter(Judith,Maschinenarbeiterin,NM1,j) ->;
Maschine(Rollenschneider,RS1,1000,700,15) ->;
Maschine(Rollenschneider,RS2,320,80,5) ->;
Maschine(Blockschneider,BS1,3000,2500,15) ->;
Maschine(Praegemaschine,PM,100,60,10) ->;
Maschine(Schweissautomat,SA1,280,100,15) ->;
Maschine(Schweissautomat,SA2,190,80,10) ->;
Maschine(Schweissautomat,SA3,80,35,10) ->;
Maschine(Nietmaschine,NM1,360,180,5) ->;
Maschine(Nietmaschine,NM2,240,90,5) ->;
"Arbeitsgaenge"
Arbeitsgaenge(Ringbuch-Typ1,S-TZ,<Rollenschneider,S-TZ>.
<Blockschneider,S-TZ>.<Praegemaschine,S-TZ>.
<Schweissautomat,S-TZ>.<Nietmaschine,S-TZ>.nil) ->;
Arbeitsgaenge(Ringbuch-Typ2,S-TZ,<Rollenschneider,S-TZ>.
<Blockschneider,S-TZ>.<Schweissautomat,S-TZ>.
<Nietmaschine,S-TZ>.nil) ->;
"zu erledigende Auftraege"
Auftraege(<111,Ringbuch-Typ2,400,480>.
<112,Ringbuch-Typ1,200,360>.
<113,Ringbuch-Typ2,300,430>.
<114,Ringbuch-Typ1,200,480>.nil) ->;
"Produktionsplanung"
Produktionsplan(g-P-lan) ->
Auftraege(L-iste)
Maschinenplan(L-iste,nil,P-lan)
Arbeitsplan(P-lan)
reverse(P-lan,nil,g-P-lan);
Maschinenplan(nil,P-lan,P-lan) ->;
Maschinenplan(<n-r,P-rodukt,S-TZ,T-ermin>.r-est,P-lan1,P-lan) ->
Arbeitsgaenge(P-rodukt,S-TZ,<F-unktion,S-TZ>.A-rbeitsgaenge)
berechne-ersten-Arbeitsgang(T-ermin,<F-unktion,S-TZ>,P-lan1,
M-aschine,M-itarbeiter,S-tart,E-nde)
Auftragsplanung(T-ermin,n-r,M-aschine,M-itarbeiter,S-tart,E-nde,P-lan1,
A-rbeitsgaenge,P-lan2)
Maschinenplan(r-est,P-lan2,P-lan);
Arbeitsplan(nil) ->;
Arbeitsplan(<n-r,M-aschine,M-itarbeiter,S-tart,E-nde>.P-lan) ->
Mitarbeiter-verfuegbar(M-itarbeiter,S-tart,E-nde,P-lan)
Mitarbeiter(M-itarbeiter,B-eruf,M-aschine,a-kkord)
Arbeitsplan(P-lan);
Auftragsplanung(T-ermin,n-r,M-aschine,M-itarbeiter,S-tart,E-nde,
P-lan,nil,P-lan1) ->
/
val(inf(E-nde,T-ermin),1)
notiere(n-r,M-aschine,M-itarbeiter,S-tart,E-nde,P-lan,P-lan1);
Auftragsplanung(T-ermin,n-r,M-aschine,M-itarbeiter,S-tart,E-nde,
P-lan,l,n-Plan) ->
notiere(n-r,M-aschine,M-itarbeiter,S-tart,E-nde,P-lan,P-lan1)
berechne-naechsten-Arbeitsgang(T-ermin,M-aschine,M-itarbeiter,
S-tart,E-nde,P-lan1,l,n-Maschine,n-Mitarbeiter,n-Start,n-Ende,l1)
Auftragsplanung(T-ermin,n-r,n-Maschine,n-Mitarbeiter,n-Start,
n-Ende,P-lan1,l1,n-Plan);
notiere(n-r,M-aschine,M-itarbeiter,S-tart,E-nde,P-lan,<n-r,M-aschine,
M-itarbeiter,S-tart,E-nde>.P-lan) ->;
berechne-ersten-Arbeitsgang(T-ermin,<F-unktion,S-TZ>,P-lan1,M-aschine,
M-itarbeiter,S-tart,E-nde) ->
Maschine(F-unktion,M-aschine,A-Z,N-Z,U-Z)
berechne-AuftragsStart-u-Ende(T-ermin,M-aschine,A-Z,N-Z,S-TZ,
a-kkord,S-tart, E-nde)
Maschine-verfuegbar(M-aschine,U-Z,S-tart,E-nde,P-lan1);
berechne-naechsten-Arbeitsgang(T-ermin,M-aschine,M-itarbeiter,
S-tart,E-nde, P-lan1,<F-unktion,S-TZ>.l-Rest,n-Maschine,
n-Mitarbeiter,n-Start,n-Ende,l-Rest) ->
Maschine(F-unktion,n-Maschine,A-Z,N-Z,U-Z)
berechne-Start-u-Endezeit(T-ermin,M-aschine,S-tart,E-nde,
A-Z,N-Z,S-TZ, a-kkord,n-Start,n-Ende)
Maschine-verfuegbar(n-Maschine,U-Z,n-Start,n-Ende,P-lan1);
berechne-AuftragsStart-u-Ende(T-ermin,M-aschine,A-Z,N-Z,S-TZ,nein,
S-tart,E-nde) ->
suche-Startzeit(T-ermin,1,S-tart)
val(add(S-tart,trunc(div(float(S-TZ),div(float(A-Z),
+6.0e+1)))),E-nde);
berechne-AuftragsStart-u-Ende(T-ermin,M-aschine,A-Z,N-Z,S-TZ,
nein,S-tart,E-nde) ->
suche-Startzeit(T-ermin,1,S-tart)
val(add(S-tart,trunc(div(float(S-TZ),div(float(N-Z),
+6.0e+1)))),E-nde);
"Es darf fruehestens begonnen werden, wenn vom letzten "
"Arbeitsgang her Material fuer 60 Minuten Akkordarbeit "
"zur Verfuegung steht"
berechne-Start-u-Endezeit(T-ermin,v-Maschine,S-tart,E-nde,
A-Z,N-Z,S-TZ,ja,n-Start,n-Ende) ->
Maschine(v-Funktion,v-Maschine,v-AZ,v-NZ,v-UZ)
val(add(S-tart,trunc(div(float(A-Z),div(float(v-AZ),
+6.0e+1)))),w)
val(if(inf(w,E-nde),w,E-nde),S-tart1)
suche-Startzeit(T-ermin,S-tart1,n-Start)
val(add(n-Start,trunc(div(float(S-TZ),div(float(A-Z),
+6.0e+1)))),n-Ende);
berechne-Start-u-Endezeit(T-ermin,v-Maschine,S-tart,E-nde,
A-Z,N-Z,S-TZ,nein,n-Start,n-Ende) ->
Maschine(v-Funktion,v-Maschine,v-AZ,v-NZ,v-UZ)
val(add(S-tart,trunc(div(float(A-Z),div(float(v-AZ),+6.0e+1)))),w)
val(if(inf(w,E-nde),w,E-nde),S-tart1)
suche-Startzeit(T-ermin,S-tart1,n-Start)
val(add(n-Start,trunc(div(float(S-TZ),div(float(N-Z),
+6.0e+1)))),n-Ende);
suche-Startzeit(T-ermin,S-tart,S-tart) ->;
suche-Startzeit(T-ermin,S-tart,n-Start) ->
val(add(S-tart,30),x1)
val(inf(x1,T-ermin),1)
suche-Startzeit(T-ermin,x1,n-Start);
Mitarbeiter-verfuegbar(M-itarbeiter,S-tart,E-nde,nil) ->;
Mitarbeiter-verfuegbar(M-itarbeiter,S-tart,E-nde,<n-r,M-aschine,
M-itarbeiter1,S-tart1,E-nde1>.P-lan) ->
/
NBed-Mitarb-verfuegbar(M-itarbeiter,M-itarbeiter1,S-tart,
E-nde,S-tart1,E-nde1)
Mitarbeiter-verfuegbar(M-itarbeiter,S-tart,E-nde,P-lan);
NBed-Mitarb-verfuegbar(M-itarbeiter,M-itarbeiter1,S-tart,E-nde,
S-tart1,E-nde1) ->
val(inf(S-tart1,E-nde),1)
val(inf(S-tart,E-nde1),1)
/
dif(M-itarbeiter,M-itarbeiter1);
NBed-Mitarb-verfuegbar(M-itarbeiter,M-itarbeiter1,S-tart,E-nde,
S-tart1,E-nde1) ->;
Maschine-verfuegbar(M-aschine,U-mstellzeit,S-tart,E-nde,nil) ->;
Maschine-verfuegbar(M-aschine,U-mstellzeit,S-tart,E-nde,<n-r,M-aschine,
M-itarbeiter,S-tart1,E-nde1>.P-lan) ->
/
pruefe-Maschine-verfuegbar(U-mstellzeit,S-tart,E-nde,S-tart1,E-nde1)
Maschine-verfuegbar(M-aschine,U-mstellzeit,S-tart,E-nde,P-lan);
Maschine-verfuegbar(M-aschine,U-mstellzeit,S-tart,E-nde,p.P-lan) ->
Maschine-verfuegbar(M-aschine,U-mstellzeit,S-tart,E-nde,P-lan);
pruefe-Maschine-verfuegbar(U-mstellzeit,S-tart,E-nde,S-tart1,E-nde1) ->
val(inf(add(E-nde,U-mstellzeit),S-tart1),1)
/;
pruefe-Maschine-verfuegbar(U-mstellzeit,S-tart,E-nde,S-tart1,E-nde1) ->
val(inf(add(E-nde1,U-mstellzeit),S-tart),1)
/;
"Hilfspraedikat zur Listenumkehrung"
reverse(x.y,z,z1) -> reverse(y,x.z,z1);
reverse(nil,z,z) ->;