Hallo zusammen,
ich bin noch relativ neu in Python. Einfache Gui Anwendungen in Qt oder Flet bekomme ich schon sehr gut hin.
Als nächstes Projekt soll ich eine Art Auftragssteuerung für eine Fertigung erstellen.
Das erfassen, bearbeiten und speichern der Aufträge in SQL funktioniert bereits.
Mein Problem ist nun die Aufträge zeitlich einzugliedern, z.B.:
Auftrag A hat eine Fertigungsdauer von 9 Stunden
Auftrag B ... 3 Stunden
Auftrag C ...18 Stunden
Der Arbeitstag hat 8 Stunden, es wird von Montag bis Freitag gearbeitet.
Wie bekomme ich es nun hin, dass die Endzeiten des Auftrag richtig berechnet werden, so dass ich die Startzeit für den Folgeauftrag erhalte usw....
Für jeden Tipp bin ich dankbar.
Liebe Grüße
Gantt Diagramme / Ablauf von Fertigungsaufträge
Was bedeutet eine Fertigungsdauer von 18 Stunden? Dass der Arbeiter das Teil in die Maschine einlegt und nach 18 Stunden ist es fertig, oder dass der Arbeiter 18 Stunden lang ohne Pinkelpause daran herumschraubt?
Ist Dein Problem, einen Algorithmus zu entwickeln oder ist das Problem, den Algorithmus in Python umzusetzen?
Was hast Du schon überlegt?
Ist Dein Problem, einen Algorithmus zu entwickeln oder ist das Problem, den Algorithmus in Python umzusetzen?
Was hast Du schon überlegt?
- noisefloor
- User
- Beiträge: 3986
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Wenn die Fertigung strikt linear ist, ist das doch eine relativ einfach Addition unter Berücksichtigung der Arbeitszeit.
Also wenn Auftrag A 9h dauert und jeder Arbeitstag 8h hat und um 8 Uhr beginnt, dann wäre das Teil A um 17 Uhr fertig. Der Arbeitstag endet aber um 16 Uhr, also ist das Teil am nächsten Tag um 9 Uhr fertig. Wenn es wirklich so einfach ist, lässt sich das relativ leicht in Code umsetzen.
Wenn jetzt in irgendeiner Form Optimierung dazu kommt, d.h. möglichst wenig Überträge von Tag X auf X+1 oder auf keine Fall einen Übertrag von Freitag auf den kommenden Montag oder Restriktionen beim Umsortieren von Aufträgen, dann wird es deutlich komplexer.
Gruß, noisefloor
Also wenn Auftrag A 9h dauert und jeder Arbeitstag 8h hat und um 8 Uhr beginnt, dann wäre das Teil A um 17 Uhr fertig. Der Arbeitstag endet aber um 16 Uhr, also ist das Teil am nächsten Tag um 9 Uhr fertig. Wenn es wirklich so einfach ist, lässt sich das relativ leicht in Code umsetzen.
Wenn jetzt in irgendeiner Form Optimierung dazu kommt, d.h. möglichst wenig Überträge von Tag X auf X+1 oder auf keine Fall einen Übertrag von Freitag auf den kommenden Montag oder Restriktionen beim Umsortieren von Aufträgen, dann wird es deutlich komplexer.
Gruß, noisefloor
- __blackjack__
- User
- Beiträge: 13754
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Mal den VIC-20 angeworfen und das ganze für eine Arbeitswoche von Mo bis Fr, jeweils 8 Stunden von 8 Uhr morgens, mit einer einstündigen Mittagspause in BASIC geschrieben:
Testlauf:
Code: Alles auswählen
10 T$="MODIMIDOFR"
100 W=1:T=0:S=0:READ N
110 FOR I=1 TO N
120 : READ AN$,AS
130 : PRINT "AUFTRAG ";AN$
140 : PRINT "VON ";
150 : GOSUB 900
160 : S=S+AS
170 : J=INT(S/8)
180 : S=S-J*8:T=T+J
190 : J=INT(T/5)
200 : T=T-J*5:W=W+J
210 : PRINT "BIS ";
220 : GOSUB 900
230 : PRINT
240 NEXT:END
250 :
900 REM ZEITPUNKT AUSGEBEN
910 REM (WOCHE,TAG,STUNDE)
920 PRINT "W";MID$(STR$(W),2);
930 PRINT " ";
940 PRINT MID$(T$,T*2+1,2);
950 PRINT S+8-(S>=4);"UHR"
960 RETURN
970 :
9000 REM # AUFTRAEGE
9010 DATA 3
9020 REM NAME,DAUER (H)
9030 DATA "A",9
9040 DATA "B",3
9050 DATA "C",18
Code: Alles auswählen
RUN
AUFTRAG A
VON W1 MO 8 UHR
BIS W1 DI 9 UHR
AUFTRAG B
VON W1 DI 9 UHR
BIS W1 DI 13 UHR
AUFTRAG C
VON W1 DI 13 UHR
BIS W1 DO 15 UHR
READY.
“The city's central computer told you? R2D2, you know better than to trust a strange computer!” — C3PO
@Sabine81:
Feiertage und andere Schließtage (Betriebsurlaub) werden eine Rolle spielen.
Du wirst in deiner Anwendung einen Kalender brauchen.
Werden fallweise Überstunden gemacht?
Soll die Anwendung multiuserfähig werden?
Schönes Wochenende!
Feiertage und andere Schließtage (Betriebsurlaub) werden eine Rolle spielen.
Du wirst in deiner Anwendung einen Kalender brauchen.
Werden fallweise Überstunden gemacht?
Soll die Anwendung multiuserfähig werden?
Schönes Wochenende!
und um möglicherweise gleich im Bereich "Lineare Optimierung" zu landen: wieviele Fertigungsaufträge können denn parallel bearbeitet werden? Immer nur einer zur Zeit oder mehrere?
_______________________________________________________________________________
https://www.python-kurs.eu/index.php
https://learnxinyminutes.com/docs/python/ https://learnxinyminutes.com/docs/de-de/python-de/
https://quickref.me/python https://docs.python-guide.org/