Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  TM - Plant Simulation
  Werkerbegleitung & Aufträge generieren

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Werkerbegleitung & Aufträge generieren (2728 mal gelesen)
MaxiSim
Mitglied
Student


Sehen Sie sich das Profil von MaxiSim an!   Senden Sie eine Private Message an MaxiSim  Schreiben Sie einen Gästebucheintrag für MaxiSim

Beiträge: 18
Registriert: 13.06.2018

TM Plant Simulation 14

erstellt am: 13. Jun. 2018 13:15    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


20180613_Simulationsmodell_light.zip

 
Hallo zusammen,

ich bin neu hier und hoffe auf Eure Unterstützung. 

Ich habe schon nach ähnlichen Beiträgen zu meinen Fragen gesucht, jedoch hat mir das, was ich gefunden habe, noch nicht ausreichend weitergeholfen. Gleiches gilt für die Plant Simulation Hilfe.

Es geht um Folgendes:
Ich erstelle ein Simulationsmodell zur Kommissionierung. Hierbei werden drei unterschiedliche BE-Typen erstellt, eingelagert und anhand von Kundenaufträgen wieder ausgelagert.
Für einen Teil der BEs sind noch weitere Bearbeitungsschritte erforderlich (BEs "TShirt" im angehängten Modell).
Ich habe zwei konkrete Anliegen.

a) Ich nutze Werker für die Transport- und Bearbeitungsvorgänge. Im mit "individuell" überschriebenen Teil des Modells nehmen die Werker jeweils ein BE von der Station "IndivEinzel_auf" auf und transportieren es in Abhängigkeit eines Attributs entweder zum "AP18" oder zu "AP14" oder "AP16".
Die Werker übernehmen dann an den Stationen "AP14" und "AP16" auch die Bearbeitung des jeweiligen BE. Jedoch bleiben die Werker nach Ankunft nicht dort, kehren stattdessen zu "IndivEinzel_auf" zurück und holen das nächste BE.
Daher habe ich mich am Beispiel "Werkerbegleitung" orientiert und versucht das umzusetzen. Nun kehren die Werker aber nach dem ersten Anlauf nicht wieder zu "AP14" und "AP16" zurück.
Kann mir hierbei jemand helfen und mir sagen, wie ich die Anfrage-, Erhalt- und Freigabesteuerungen der Stationen programmieren muss?

b) Das Modell ist bislang statisch aufgebaut. Das soll nur vorübergehend sein. Ich möchte die Auslagerungsaufträge zufällig generieren, abhängig von einer Benutzereingabe über einen Dialog. Ein Auftrag weist dann eine bestimmte Anzahl der unterschiedlichen BEs auf, die von den Werkern des "WP3" aus den "WäschecontainerH/L" und "LagerIndiv" ausgelagert werden.
Ich habe mir überlegt, über die INIT-Methode die Eingabe im Dialog auszulesen. Nur wie geht es dann weiter.. Könnten die Objekte "Stapel" oder "Warteschlange" mir hier helfen? Weiterer Input zur möglichen Auslagerung wäre klasse!

Das Modell habe ich angehängt.

Vielen Dank schon einmal für eure Hilfe & viele Grüße!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

MaxiSim
Mitglied
Student


Sehen Sie sich das Profil von MaxiSim an!   Senden Sie eine Private Message an MaxiSim  Schreiben Sie einen Gästebucheintrag für MaxiSim

Beiträge: 18
Registriert: 13.06.2018

TM Plant Simulation 14

erstellt am: 15. Jun. 2018 15:24    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


20180615_Simulationsmodell_light_V2.zip

 
Hallo,

ich habe mittlerweile versucht eine Methode aus einem anderen Beitrag hier im Forum zu implementieren (http://ww3.cad.de/foren/ubb/Forum262/HTML/000296.shtml). Leider funktioniert es in meinem Modell noch nicht. Mag mal jemand über das angehängte Modell und die Methode drüber schauen und mir sagen, was ich falsch mache?
Ich habe das Beispiel zu vor an einem anderen Modell "nachgebaut" - da funktionierte es..

Was mich außerdem sehr verwirrt ist, dass ich es nicht schaffe, über die Methode "PrüfeGelegt" zu verhindern, dass, wenn die nachfolgende Station belegt ist, der Werker mit dem aufgenommenen BE zur anderen Station gehen soll. Hat da jemand einen Hinweis für mich?

Ich freue mich über jede Hilfe und Anregung, danke!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

nadin1223
Mitglied
Ing.


Sehen Sie sich das Profil von nadin1223 an!   Senden Sie eine Private Message an nadin1223  Schreiben Sie einen Gästebucheintrag für nadin1223

Beiträge: 938
Registriert: 29.03.2016

erstellt am: 17. Jun. 2018 14:17    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für MaxiSim 10 Unities + Antwort hilfreich


WErker_T_V2.spp.txt

 
Hallo MaxSim,

eine Empfehlung zur Lösung ist angehängt. Für dich ist die MA bindung für AP relevant. Diese erreichst du durch Dienste. Der WErke darf nicht anderes machen dürfen, bis die Hemden gelegt sind. Dazu kannst du die Events von AP-Stationen und Stationen (Eingang und Ausgang) nutzen.

vG
Nadin

------------------
„Die einfachste Art an korrekte Informationen zu gelangen ist, etwas Falsches in ein Forum zu posten und auf die Korrektur zu warten.“ Matthew Austern

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

MaxiSim
Mitglied
Student


Sehen Sie sich das Profil von MaxiSim an!   Senden Sie eine Private Message an MaxiSim  Schreiben Sie einen Gästebucheintrag für MaxiSim

Beiträge: 18
Registriert: 13.06.2018

TM Plant Simulation 14

erstellt am: 18. Jun. 2018 07:47    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Nadin,

das sieht richtig gut aus, vielen Dank!

Kannst du mir kurz erklären, wie genau "current" in den Methoden arbeitet? Steige da noch nicht ganz durch.

Viele Grüße!

[Diese Nachricht wurde von MaxiSim am 18. Jun. 2018 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

MaxiSim
Mitglied
Student


Sehen Sie sich das Profil von MaxiSim an!   Senden Sie eine Private Message an MaxiSim  Schreiben Sie einen Gästebucheintrag für MaxiSim

Beiträge: 18
Registriert: 13.06.2018

TM Plant Simulation 14

erstellt am: 05. Jul. 2018 18:11    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


Simulation.zip

 
Hallo Nadin,

das Modell hat sich mittlerweile weiterentwickelt - und ich stehe vor mehreren, kleineren Herausforderungen. Vielleicht kannst du - oder jemand anderes - mir noch einmal helfen.  

Als erstes möchte ich dafür sorgen, dass die Lager "L_Komm_K1", "L_Komm_K2" und "L_Komm_K3" täglich zu vorgegebenen Uhrzeiten geleert werden. Dafür habe ich die entsprechenden Ausgangssteuerungen programmiert und mit "self.methAufr" werden die Methoden zu den Zeitpunkten aufgerufen. Das Ganze soll so funktionieren, wie im Modell "Auslagertouren" im Anhang. Dort funktioniert es einwandfrei. Im eigentlichen Modell aber nicht, habe schon alles versucht, was mir sinnvoll - und auch nicht sinnvoll - erschien..
Mache ich da doch noch irgendwas falsch?

Vor der Auslagerung sollen die BEs entsprechend ihrer Zuordnung zu einem Kunden, bzw. einer Verteilung nach, in die Lager eingelagert werden. Dazu erhalten die vorgelagerten Montagestationen über die Methoden "PrüfeZiel..." ein BE-Ziel zugewiesen. Für die Montagestationen "M_WcH" und "M_WcL" funktioniert das auch. Nur die "M_LagerIndiv_aus" schickt jedes BE zum AP26 und achtet nicht auf die Zuordnung durch das Attribut "KundeID"...

Ich habe globale Variablen im Modell, die die Anzahl der eingelagerten BEs überwachen. Merkwürdigerweise werden trotzdem mehr BEs eingelagert als in der "Tbl_Aufträge" vermerkt, wenn man die Anzahl der BEs in der Quelle erhöht. Eigentlich stellen die Variablen Abbruchkriterien in den Methoden "PrüfeZiel.." dar.
Auch hier verstehe ich nicht, was ich falsch mache.

Am merkwürdigsten sind die Statistiken der Eingänge und Ausgänge in den "L_Komm_K.." und der Senke "S_Wäsche". Diese steigen auf bis zu 40.000 an, obwohl nur 4.000 BEs durch die Quelle erzeugt werden. Dafür habe ich absolut keine Erklärung..

Die beiden Modelle sind angehängt (derzeit etwas unübersichtlich, weil mitten in der Bearbeitung).

Vielen Dank schon einmal für die Mühen!

Liebe Grüße!

Edit: Im hochgeladenden Beispielmodell war eine Steuerung falsch eingetragen.

[Diese Nachricht wurde von MaxiSim am 05. Jul. 2018 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

nadin1223
Mitglied
Ing.


Sehen Sie sich das Profil von nadin1223 an!   Senden Sie eine Private Message an nadin1223  Schreiben Sie einen Gästebucheintrag für nadin1223

Beiträge: 938
Registriert: 29.03.2016

erstellt am: 06. Jul. 2018 08:36    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für MaxiSim 10 Unities + Antwort hilfreich

Zitat:

for var i := 1 to Lager.AnzahlBEs
Lager.Inhalt.Umlagern(Senke)
next

self.methAufr(1:00:00)
self.methAufr(30:00)


Was macht diese Methode in Auslagertouren in deinen Augen genau??? Bitte Stepp per Stepp beschreiben.

------------------

Zitat:
Die einfachste Art an korrekte Informationen zu gelangen ist, etwas Falsches in ein Forum zu posten und auf die Korrektur zu warten.
Matthew Austern

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

MaxiSim
Mitglied
Student


Sehen Sie sich das Profil von MaxiSim an!   Senden Sie eine Private Message an MaxiSim  Schreiben Sie einen Gästebucheintrag für MaxiSim

Beiträge: 18
Registriert: 13.06.2018

TM Plant Simulation 14

erstellt am: 06. Jul. 2018 09:28    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Nadin,

danke für deine Antwort!

Die Methode soll den gesamten Inhalt des Lagers auf die Senke umlagern, sobald sie aufgerufen wird. Der erste Aufruf der Methode erfolgt aus der INIT-Methode.

Das Umlagern aus dem Lager mittels der for-Schleife habe ich einem anderen Foreneintrag entnommen.
Die Umlagerung erfolgt für jedes BE, das sich in dem Moment im Lager befindet nacheinander.
Ich glaube ich weiß, worauf du hinaus willst. Die for-Schleife braucht es gar nicht.
Der Befehl
if Lager.AnzahlBEs > 1
Lager.Inhalt.Umlagern(Senke)
end
reicht scheinbar aus..

Der nächste Methodenaufruf soll dann nach 1h und der nächste Aufruf nach 30 Minuten erfolgen. Daraufhin soll sich dieser Zyklus wiederholen.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

nadin1223
Mitglied
Ing.


Sehen Sie sich das Profil von nadin1223 an!   Senden Sie eine Private Message an nadin1223  Schreiben Sie einen Gästebucheintrag für nadin1223

Beiträge: 938
Registriert: 29.03.2016

erstellt am: 06. Jul. 2018 10:02    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für MaxiSim 10 Unities + Antwort hilfreich


Aufrufbaum.jpg

 
ok, nächste Frage:

Wie heufig wird die Methode nach t:= 2 h aufgerufen?

------------------

Zitat:
Die einfachste Art an korrekte Informationen zu gelangen ist, etwas Falsches in ein Forum zu posten und auf die Korrektur zu warten.
Matthew Austern

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

MaxiSim
Mitglied
Student


Sehen Sie sich das Profil von MaxiSim an!   Senden Sie eine Private Message an MaxiSim  Schreiben Sie einen Gästebucheintrag für MaxiSim

Beiträge: 18
Registriert: 13.06.2018

TM Plant Simulation 14

erstellt am: 06. Jul. 2018 10:31    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


selfmethAufr.JPG

 
Die Methode wird immer nach t = 30:00 Minuten aufgerufen..

Habe eine globale Variable hinzugefügt, in deren Abhängigkeit zwischen den "Wartezeiten" geschaltet wird. Das scheint zu funktionieren.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

nadin1223
Mitglied
Ing.


Sehen Sie sich das Profil von nadin1223 an!   Senden Sie eine Private Message an nadin1223  Schreiben Sie einen Gästebucheintrag für nadin1223

Beiträge: 938
Registriert: 29.03.2016

erstellt am: 06. Jul. 2018 10:55    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für MaxiSim 10 Unities + Antwort hilfreich

besser.

nächste Frage: Wie viele BEs von welcher Art sollen zum jeweiligen Zeitpunkt ausgelagert werden?
Wann ist die erste Auslagerung.

------------------

Zitat:
Die einfachste Art an korrekte Informationen zu gelangen ist, etwas Falsches in ein Forum zu posten und auf die Korrektur zu warten.
Matthew Austern

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

MaxiSim
Mitglied
Student


Sehen Sie sich das Profil von MaxiSim an!   Senden Sie eine Private Message an MaxiSim  Schreiben Sie einen Gästebucheintrag für MaxiSim

Beiträge: 18
Registriert: 13.06.2018

TM Plant Simulation 14

erstellt am: 06. Jul. 2018 11:11    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Danke!

Für die Frage springe ich mal in das "richtige" Modell. "Auslagertouren" diente nur als Beispiel.

Zu den jeweiligen Zeitpunkten soll der komplette derzeitige Inhalt (also alle BEs jeder Art) der drei Lager ausgelagert werden. Im Zielzustand läuft das Modell über einen noch zu definierenden Zeitraum, Annahme jetzt eine Arbeitswoche. Dementsprechend erzeugt die Quelle 5 mal den täglichen Input auf kontinuierliche Weise.
Die erste Auslagerung ist um 10:00:00 des ersten Tages. Dazu kommt dann natürlich noch eine Einschwingphase, die ich noch ermitteln werde.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

nadin1223
Mitglied
Ing.


Sehen Sie sich das Profil von nadin1223 an!   Senden Sie eine Private Message an nadin1223  Schreiben Sie einen Gästebucheintrag für nadin1223

Beiträge: 938
Registriert: 29.03.2016

erstellt am: 06. Jul. 2018 11:24    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für MaxiSim 10 Unities + Antwort hilfreich

das Hauptmodell habe ich noch nicht angeschaut...las uns bei Auslagertouren bleiben

------------------

Zitat:
Die einfachste Art an korrekte Informationen zu gelangen ist, etwas Falsches in ein Forum zu posten und auf die Korrektur zu warten.
Matthew Austern

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

nadin1223
Mitglied
Ing.


Sehen Sie sich das Profil von nadin1223 an!   Senden Sie eine Private Message an nadin1223  Schreiben Sie einen Gästebucheintrag für nadin1223

Beiträge: 938
Registriert: 29.03.2016

erstellt am: 06. Jul. 2018 11:35    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für MaxiSim 10 Unities + Antwort hilfreich

besser die Zeit in Tabelle oder globale Variable definieren. Den Startaufruf-Zeitpunkt in Init zu kpdieren ist ein wenig ungünstig.

Zitat:
Zu den jeweiligen Zeitpunkten soll der komplette derzeitige Inhalt (also alle BEs jeder Art) der drei Lager ausgelagert werden.

Liegt dieses Verhalten in "Auslagertouren" vor?

------------------

Zitat:
Die einfachste Art an korrekte Informationen zu gelangen ist, etwas Falsches in ein Forum zu posten und auf die Korrektur zu warten.
Matthew Austern

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

MaxiSim
Mitglied
Student


Sehen Sie sich das Profil von MaxiSim an!   Senden Sie eine Private Message an MaxiSim  Schreiben Sie einen Gästebucheintrag für MaxiSim

Beiträge: 18
Registriert: 13.06.2018

TM Plant Simulation 14

erstellt am: 06. Jul. 2018 13:07    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

"Auslagertouren" hat im Gegensatz zu dem richtigen Modell nur ein einziges Lager, es ist aber das gleiche Prinzip. Es wird zu den Zeitpunkten der komplette Lagerinhalt umgelagert, unabhängig von der Art des BEs. Das Verhalten müsste meines Verständnisses nach also vorliegen.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

nadin1223
Mitglied
Ing.


Sehen Sie sich das Profil von nadin1223 an!   Senden Sie eine Private Message an nadin1223  Schreiben Sie einen Gästebucheintrag für nadin1223

Beiträge: 938
Registriert: 29.03.2016

erstellt am: 06. Jul. 2018 13:32    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für MaxiSim 10 Unities + Antwort hilfreich


nachEinMalAuslagern.jpg

 
Also nach dem Auslagern sieht das bei mir like Pic aus....Wenn alles umgelagert wird, warum werden noch BEs im Lager angezeigt?

------------------

Zitat:
Die einfachste Art an korrekte Informationen zu gelangen ist, etwas Falsches in ein Forum zu posten und auf die Korrektur zu warten.
Matthew Austern

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

MaxiSim
Mitglied
Student


Sehen Sie sich das Profil von MaxiSim an!   Senden Sie eine Private Message an MaxiSim  Schreiben Sie einen Gästebucheintrag für MaxiSim

Beiträge: 18
Registriert: 13.06.2018

TM Plant Simulation 14

erstellt am: 06. Jul. 2018 13:49    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


AuslagernHaltepunkt.JPG

 
Ich weiß es nicht.. Wenn ich den Haltepunkte wie im Bild setze, erfolgt auch gar keine Umlagerung. Müsste nicht zumindest die erste Umlagerung stattfinden?

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

nadin1223
Mitglied
Ing.


Sehen Sie sich das Profil von nadin1223 an!   Senden Sie eine Private Message an nadin1223  Schreiben Sie einen Gästebucheintrag für nadin1223

Beiträge: 938
Registriert: 29.03.2016

erstellt am: 06. Jul. 2018 14:05    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für MaxiSim 10 Unities + Antwort hilfreich

Ausschließlich ein BE wird mit dieser Methode ausgelagert. Also das "Umlagern"-Befehl betrift ein BE und lagert dieses auf die Senke um.
For-Schleife war schon richtig.
Einmal die For-Schleife einflegen und wieder Testen. Dann Bitte das Ergebnis beschreiben...

------------------

Zitat:
Die einfachste Art an korrekte Informationen zu gelangen ist, etwas Falsches in ein Forum zu posten und auf die Korrektur zu warten.
Matthew Austern

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

MaxiSim
Mitglied
Student


Sehen Sie sich das Profil von MaxiSim an!   Senden Sie eine Private Message an MaxiSim  Schreiben Sie einen Gästebucheintrag für MaxiSim

Beiträge: 18
Registriert: 13.06.2018

TM Plant Simulation 14

erstellt am: 06. Jul. 2018 14:24    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


AuslagernHaltepunktForSchleife.JPG

 
Mit implementierter for-Schleife werden alle BEs zum entsprechenden Zeitpunkt auf die Senke umgelagert.
Aber mit gesetztem Haltepunkt wie im Anhang wird wieder nur ein BE umgelagert.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

nadin1223
Mitglied
Ing.


Sehen Sie sich das Profil von nadin1223 an!   Senden Sie eine Private Message an nadin1223  Schreiben Sie einen Gästebucheintrag für nadin1223

Beiträge: 938
Registriert: 29.03.2016

erstellt am: 06. Jul. 2018 15:00    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für MaxiSim 10 Unities + Antwort hilfreich

Das die for-Schleife mit und ohne Haltepunkt nicht alles auslagert, kannst du an in der Statistik von Lager sehen...das wäre die Verifizierung, die nicht klappte. Modell zeigt ein unerwartetes verhalten. Jetzt geht es die Ursache aufzufindeb.

------------------

Zitat:
Die einfachste Art an korrekte Informationen zu gelangen ist, etwas Falsches in ein Forum zu posten und auf die Korrektur zu warten.
Matthew Austern

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

MaxiSim
Mitglied
Student


Sehen Sie sich das Profil von MaxiSim an!   Senden Sie eine Private Message an MaxiSim  Schreiben Sie einen Gästebucheintrag für MaxiSim

Beiträge: 18
Registriert: 13.06.2018

TM Plant Simulation 14

erstellt am: 09. Jul. 2018 11:37    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Ich habe verschiedene Methoden implementiert. Am sinnvollsten erscheint mir die Kombination zweier For-Schleifen, die die x- und y-Dimension kombinieren.

for var x := 1 to Lager.XDim
for var y := 1 to Lager.YDim
if Lager[x,y].Inhalt /= void
repeat
Lager[x,y].Inhalt.Umlagern(Senke)
until Lager[x,y].Inhalt = void
end
next
next

Hier laufe ich aber in eine Endlosschleife, aus der ich noch keinen Ausweg gefunden habe.

Ohne die repeat-Schleife, also so:

for var x := 1 to Lager.XDim
for var y := 1 to Lager.YDim
if  Lager[x,y].AnzahlBEs >= 1
Lager[x,y].Inhalt.Umlagern(Senke)
end
next
next

werden ohne Haltepunkt alle BEs umgelagert.
Mit einem gesetztem Haltepunkt vor der Steuerung des Merkers MerkerMethodenaufruf wird wieder nicht der gesamte Lagerinhalt umgelagert.
Ich weiß nicht wo der Fehler liegt. Zumal dieses Modell ja auch nur die Testumgebung für das richtige Modell ist..

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

nadin1223
Mitglied
Ing.


Sehen Sie sich das Profil von nadin1223 an!   Senden Sie eine Private Message an nadin1223  Schreiben Sie einen Gästebucheintrag für nadin1223

Beiträge: 938
Registriert: 29.03.2016

erstellt am: 09. Jul. 2018 13:23    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für MaxiSim 10 Unities + Antwort hilfreich

jep Lager hat drei Dimensionen. Also die erste Methode ist richtig. die repeat wird nicht beendet, da bedingung nie erfüllt wird.

Aus Senke umzulagern ist ähnlich der Umlagerung auf eine Maschine. Stell dir vor du stehst vor einem kleinen Tisch auf dem du 2000 Teile legen sollst. Irgendwann sagst du, dass es kein Platz mehr da ist. Senke hat Kapazität Eins. Während die Methode "LagerAus" ausgeführt wird, erfolgt keine Be-Vernichtung durch die Senke. Also ist die Senke beim Umlagern belegt. Erst nachdem die Methode beendet ist, können andere Aktivitäten ausgeführt werden. Somit kannst das Lager nicht umlagern, solange kein Platz da ist. Auch deshalb kommt es zu einer Endlosschleife

Zitat:
Zumal dieses Modell ja auch nur die Testumgebung für das richtige Modell ist..
Verifizierte Testumgebung ist sehr wichtig. Wenn etwas im Test nicht richtig funktioniert, kann es im großen Modell NIE funktionieren. Generell werden Testumgebungen unter härteren Bedingungen Verifiziert, damit die Validierung im großen Modell mit großer Wahrscheinlichkeit funktioniert. Denn die Fehlersuche in der Testumgebung ist sehr viel einfacher..

Die Auslagerungssteuerung kann beispielsweise so aussehen:

Code:

for var x := 1 to Lager.XDim
for var y := 1 to Lager.YDim
while  Lager[x,y].AnzahlBEs > 0
waituntil Senke.leer prio 1
Lager[x,y].Inhalt.Umlagern(Senke)
end
next
next
if MerkerMethodenaufruf
self.methAufr(1:00:00)
else
self.methAufr(30:00)
end
MerkerMethodenaufruf := NOT MerkerMethodenaufruf

vG
Nadin


------------------

Zitat:
Die einfachste Art an korrekte Informationen zu gelangen ist, etwas Falsches in ein Forum zu posten und auf die Korrektur zu warten.
Matthew Austern

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

MaxiSim
Mitglied
Student


Sehen Sie sich das Profil von MaxiSim an!   Senden Sie eine Private Message an MaxiSim  Schreiben Sie einen Gästebucheintrag für MaxiSim

Beiträge: 18
Registriert: 13.06.2018

TM Plant Simulation 14

erstellt am: 10. Jul. 2018 07:40    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Die Erklärung zur Senke ist super, das erklärt einiges. Danke!
Damit funktioniert die Auslagerung im richtigen Modell wunderbar.

Was mich noch sehr stutzig macht, sind die extrem hohen Eingangs- und Ausgangsstatistiken der L_Komm_Kx. Die steigen auf Werte über 30.000, obwohl die Quelle nur 4.000 BEs erzeugt. Es müssen also irgendwo Ein- und Austritte verzeichnet werden. Ist dir so ein Verhalten irgendwie bekannt?

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

nadin1223
Mitglied
Ing.


Sehen Sie sich das Profil von nadin1223 an!   Senden Sie eine Private Message an nadin1223  Schreiben Sie einen Gästebucheintrag für nadin1223

Beiträge: 938
Registriert: 29.03.2016

erstellt am: 10. Jul. 2018 13:23    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für MaxiSim 10 Unities + Antwort hilfreich

füge bitte das aktuelle Modell bei.

------------------

Zitat:
Die einfachste Art an korrekte Informationen zu gelangen ist, etwas Falsches in ein Forum zu posten und auf die Korrektur zu warten.
Matthew Austern

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

MaxiSim
Mitglied
Student


Sehen Sie sich das Profil von MaxiSim an!   Senden Sie eine Private Message an MaxiSim  Schreiben Sie einen Gästebucheintrag für MaxiSim

Beiträge: 18
Registriert: 13.06.2018

TM Plant Simulation 14

erstellt am: 11. Jul. 2018 10:32    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


Simulationsmodell_V2.zip

 
Das aktuelle Modell liegt anbei.

Die Statistikwerte der L_Komm_K1/2/3 verstehe ich nicht. Sie geben an, dass mehrere Zehntausend Ein- und Ausgänge in/aus die/den Lager/n stattgefunden haben. Das kann ich mir nicht erklären.

Ich habe deine Idee der Werkerbindung auch für diesen Teil des Modells umgesetzt. Damit will ich erreichen, dass nicht mehr BEs zu jedem Kunden eingelagert werden, als in der Tabelle Tbl_Aufträge gefordert. Leider funktioniert das noch nicht richtig.
Wenn die Anzahl der BEs, die die Quelle produziert erhöht wird, missachtet die Einlagerung sämtliche Restriktionen, die eigentlich durch die globalen Variablen "K1_H" etc. gegeben sein sollen. Dafür findet in den Methoden, die das BEZiel für den Transport festlegen, eine entsprechende Prüfung statt. Daraufhin steuern die globalen Variablen "KX_H_vorgemerkt", ob bereits ein BE für den Transport vorgesehen ist (also analog zur anderen Werkerbindung).

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

nadin1223
Mitglied
Ing.


Sehen Sie sich das Profil von nadin1223 an!   Senden Sie eine Private Message an nadin1223  Schreiben Sie einen Gästebucheintrag für nadin1223

Beiträge: 938
Registriert: 29.03.2016

erstellt am: 11. Jul. 2018 14:00    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für MaxiSim 10 Unities + Antwort hilfreich


Simulationsmodell_V2.spp.txt

 
nett....
(1)
Code:
for var i := 1 to L_Komm_K1.XDim
@.Umlagern(L_Komm_K1[1,2])
next

das heißt in Pseudocode:
gehe die XDim durch
Lagere solange XDim existiert das BE von einem Platz auf ein anderen Platz um. Deshalb in LAgerstatistik die Eingangs- und Ausgangsstatistik so hoch.


(2)
...nicht in PrüfeZielH und P_Komm_KEin eine globale Variable doppelt auf den selben Wert  setzen. Ist verwirrend

(3)
z.B. current.K1_H_vorgemerkt := false wird jedes mal gesetzt, wenn BE den Puffer verläst. Sollte doch eig. nur dann gesetzt werden, wenn alles im Lager ist. Abfrage fehlt...
---------------------------
Modell mit Verbesserungsvorschlägen ist angehängt

vG
Nadin

------------------

Zitat:
Die einfachste Art an korrekte Informationen zu gelangen ist, etwas Falsches in ein Forum zu posten und auf die Korrektur zu warten.
Matthew Austern

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

MaxiSim
Mitglied
Student


Sehen Sie sich das Profil von MaxiSim an!   Senden Sie eine Private Message an MaxiSim  Schreiben Sie einen Gästebucheintrag für MaxiSim

Beiträge: 18
Registriert: 13.06.2018

TM Plant Simulation 14

erstellt am: 11. Jul. 2018 16:50    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Danke!

Zwei Probleme sehe ich noch.
a) Ich brauche den Zugriff auf die einzelnen Lagerplätze (bezogen auf dein (1)). Ist ein Lagerplatz belegt, d. h. seine ZDim erreicht, wird der nächste Lagerplatz genutzt. Mit "[1,2]" wird ja immer nur ein Lagerplatz genutzt. Hier könnte ich die ZDim erhöhen, sodass ausreichend BEs Platz finden. Davon möchte ich aber auch Gründen einer gewissen Realitätsnähe und der Animation absehen. Gibt es eine andere Möglichkeit, die BEs auf den jeweils nächsten freien Lagerplatz umzulagern, ohne die for-Schleife zu nutzen, die die Statistik zerschießt? Ich habe es noch nicht geschafft, etwas dergleichen zu programmieren.

b) Es werden immer noch mehr BEs in L_Komm_K eingelagert, als durch Tbl_Aufträge vorgegeben - auch trotz der Überprüfung des Vorgängers. Zum Testen habe ich eine unendliche Anzahl BEs in der Quelle eingestellt.
Die Methode "PrüfeZielT" habe ich erweitert:

Code:

if M_LI.Voll = true
if @.Inhalt.KundeID = 1 AND K1_T < Tbl_Aufträge[3,1]
M_LI.BEZiel := AP24
elseif @.Inhalt.KundeID = 2 AND K2_T < Tbl_Aufträge[3,2]
M_LI.BEZiel := AP25
elseif @.Inhalt.KundeID = 3 AND K3_T < Tbl_Aufträge[3,3]
M_LI.BEZiel := AP26
else
return
end
end
@.Umlagern

Damit funktioniert es für die BEs TShirt. In den Methoden "PrüfeZielH" und "PrüfeZielL" habe ich eigentlich das gleiche Prinzip angewandt. Dennoch werden zu viele BEs eingelagert.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

nadin1223
Mitglied
Ing.


Sehen Sie sich das Profil von nadin1223 an!   Senden Sie eine Private Message an nadin1223  Schreiben Sie einen Gästebucheintrag für nadin1223

Beiträge: 938
Registriert: 29.03.2016

erstellt am: 11. Jul. 2018 23:25    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für MaxiSim 10 Unities + Antwort hilfreich

zu (1)
@.Umlagern(L_Komm_K1[1,1]) beispielsweise erweitern
Code:
for i := 1 to L_Komm_K1.XDim-- alle Handtücher des Stapels auf die Wäschecontainer der y-Position 1
if L_Komm_K1.Zdim > L_Komm_K1[i,1].AnzahlBEs then
exitloop;
end
next
@.Umlagern(L_Komm_K1[i,1])

zu (2)


else Print "" ist ehe kein Return. Mit return verläst du die Auslagerungssteuerung, die nie wieder angeht. Das ist ungünstig. besser beispielsweise mit weituntil den Zustand der Kn_Buchstabe abfangen

Code:
var _tab: integer
var _menge: integer:= @.anzahlBEs
if M_LI.Voll = true
if @.Inhalt.KundeID = 1 --AND K1_T < Tbl_Aufträge[3,1]
if  current.K1_T > Tbl_Aufträge[3,1]
_tab := Tbl_Aufträge[3,1]
waituntil _tab > current.K1_T prio 1
end
M_LI.BEZiel := AP24
elseif @.Inhalt.KundeID = 2 --AND K2_T < Tbl_Aufträge[3,2]
if  current.K2_T > Tbl_Aufträge[3,2]
_tab := Tbl_Aufträge[3,2]
waituntil _tab > current.K2_T prio 1
end
M_LI.BEZiel := AP25
elseif @.Inhalt.KundeID = 3 --AND K3_T < Tbl_Aufträge[3,3]
if  current.K3_T > Tbl_Aufträge[3,3]
_tab := Tbl_Aufträge[3,3]
waituntil _tab > current.K3_T prio 1
end
M_LI.BEZiel := AP26
--else
--return
end
end
@.Umlagern

Aber auch hier werden die Zähler überschritten, da Erfassung nach Messung zeitversetzt erfolgt.


Auch ganz die Logik von dir durchblicke ich noch nicht. Dies sei auch geschuldet, dass ich nicht alles Teste. Nur frage ich mich, warum du Prozentual würfelst um Produkt dem Kunden zuzuordnen und gleichzeitig im Dialog die prozentuale Absatzmenge abfragst. Wenn ich beispielsweise eine Verteilung von 10/10/90 im Dialog wählen würde, wird Kunde 3 mit deiner 33% Regeln nie alle Produkte bekommen, da einer der Stationen voll läuft und die Auslagerung für einen anderen Kunden blockiert. Oder verstehe ich da was falsch?

vG
Nadin

------------------

Zitat:
Die einfachste Art an korrekte Informationen zu gelangen ist, etwas Falsches in ein Forum zu posten und auf die Korrektur zu warten.
Matthew Austern

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

MaxiSim
Mitglied
Student


Sehen Sie sich das Profil von MaxiSim an!   Senden Sie eine Private Message an MaxiSim  Schreiben Sie einen Gästebucheintrag für MaxiSim

Beiträge: 18
Registriert: 13.06.2018

TM Plant Simulation 14

erstellt am: 12. Jul. 2018 09:53    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Danke für deine kontinuierliche Hilfe!

zu (1):

Code:
@.Umlagern(L_Komm_K1[i,1])
soll doch sicherlich in die for-Schleife mit hinein und nicht hinter die Schleife, oder?

zu (2):

Code:

if  current.K1_T > Tbl_Aufträge[3,1]
_tab := Tbl_Aufträge[3,1]
waituntil _tab > current.K1_T prio 1


Ich verstehe nicht, warum hier geprüft werden soll, ob K1_T größer als die Aufragsmenge ist. Eigentlich soll die Variable ja nie größer als die Menge werden.

Gibt es noch eine Möglichkeit, die zeitliche Versetzung zu umgehen?


Die prozentuale Verteilung nutze ich zur Nachahmung einer "Reihum"-Strategie. Da als Ausgangsstrategie ja "Teil wegtragen" zur Anwendung kommen muss, aber nicht erst Kunde1, dann Kunde2 und dann Kunde3 nacheinander komplett bedient werden soll, habe ich die prozentuale Zufallszahl eingeführt.
Das Volllaufen einer Station und damit einhergehendes Blockieren der anderen Kunden ist durch die AND-Verknüpfung in den Zielprüfungen eigentlich verhindert.

Viele Grüße

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

nadin1223
Mitglied
Ing.


Sehen Sie sich das Profil von nadin1223 an!   Senden Sie eine Private Message an nadin1223  Schreiben Sie einen Gästebucheintrag für nadin1223

Beiträge: 938
Registriert: 29.03.2016

erstellt am: 12. Jul. 2018 23:16    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für MaxiSim 10 Unities + Antwort hilfreich


Beispiel.jpg

 
zu (1) nein, da for-Schleife mehrmals durchlaufen wird und nur einmal umgelagert werden soll

zu (2) Dies zeigt den allgemeinen Ansatz für Würfel-Wert und Prüfwert. Du prüfst, ob Prüfwert nicht überschritten wird und gleichzeitig in Würfel-Wert liegt. Dies ist ungünstig, da beides gleichzeitig vorliegen muss. Würfel-Wert ist ein hartes kriterium. Prüfwert gilt soweit es vorliegt. Somit kann der Prüfwert vorliegen oder nicht, was in deinem Ansatz nicht berücksichtigt wird.

Zitat:
Gibt es noch eine Möglichkeit, die zeitliche Versetzung zu umgehen?
Das liegt immer irgendwo vor. Berücksichtigen und klar definieren, ist die Regel.

Zitat:
Das Volllaufen einer Station und damit einhergehendes Blockieren der anderen Kunden ist durch die AND-Verknüpfung in den Zielprüfungen eigentlich verhindert.

Dieses Verhalten sehe ich nicht. Sehe Bild. AND bedeutet, dass alles gleichzeitig gelten muss. Also wenn dein Würfel-Wert Kunde 1 würfelt und dieser voll ist, dann wird dieser Auftrag nie zu Kunde 2 oder 3 zugeordnet.

----------------------------------------
kleiner Fehler meinerseits...
in Methode "P_Komm_KAus" muss für Laken die prüfwariablen auch auf 0, wie die restlichen gesetzt sind.

----------------------------------------
die Methode "AuslagernLagerIndiv" zeigt auch nicht das Verhalten, dass du gerne haben willst. Mache mal Debbugen beispielsweise mit Erweitern des Codes zu:

Code:
if LagerIndiv[1,1].AnzahlBEs = 10 AND P_LI.leer = true -- Wenn sich 10 TShirts eines Kunden gesammelt haben
for var i := 1 to 10 -- und der Puffer P_LI leer ist,
LagerIndiv[1,1].Inhalt.Umlagern(P_LI) -- werden alle TShirts auf den P_LI umgelagert.
next
elseif LagerIndiv[2,1].AnzahlBEs = 10 AND P_LI.leer = true -- Umlagerung erfolgt in Abhängigkeit der
for var i := 1 to 10 -- Belegung/Stapelhöhe der TShirts je Kunde.
LagerIndiv[2,1].Inhalt.Umlagern(P_LI)
next
elseif LagerIndiv[3,1].AnzahlBEs = 10 AND P_LI.leer = true
for var i := 1 to 10
LagerIndiv[3,1].Inhalt.Umlagern(P_LI)
next
else --das ist die Erweiterung
if P_LI.leer = false
print "********"
print "Anzahl BEs 1: " , LagerIndiv[1,1].AnzahlBEs
print "Anzahl BEs 2: " , LagerIndiv[2,1].AnzahlBEs
print "Anzahl BEs 3: " , LagerIndiv[3,1].AnzahlBEs
end
end

------------------

Zitat:
Die einfachste Art an korrekte Informationen zu gelangen ist, etwas Falsches in ein Forum zu posten und auf die Korrektur zu warten.
Matthew Austern

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

MaxiSim
Mitglied
Student


Sehen Sie sich das Profil von MaxiSim an!   Senden Sie eine Private Message an MaxiSim  Schreiben Sie einen Gästebucheintrag für MaxiSim

Beiträge: 18
Registriert: 13.06.2018

TM Plant Simulation 14

erstellt am: 13. Jul. 2018 11:34    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Zu (1): Außerhalb der for-Schleife ist die Variable i aber nicht definiert. Dementsprechend gibt es dort eine Fehlermeldung. Verstehe ich das falsch?

Zu (2): Dass beides geprüft wird, war tatsächlich meine Intention. Erachtete dies als guten Weg zur Zielauswahl.

Zur AND-Verknüpfung: Mein Verständnis ist so, dass wenn die Zufallszahl den Kunden1 würfelt und die Zählvariable noch nicht den Stand der nachgefragten Menge erreicht hat, dieser Kunde1 bedient wird.
Im nächsten Durchlauf wird dann bspw. wieder der Kunde1 gewürfelt. Jetzt ist die Menge aber schon erreicht, d. h. die zweite Bedingung wird nicht erfüllt. Daher wird eine neue Zufallszahl gewürfelt. Das Ganze passiert solange, bis eines der Bedingungspaare erfüllt wird. Tritt gar nichts mehr ein, sind alle Kunden bedient und die Einlagerung in die L_Komm_KX stoppt.

Mir fiel jetzt auf, dass die Werker keine Stapel mehr aus den M_WcX holen - ab dem Zeitpunkt, wo eine der Variablen die geforderte Menge erreicht hat. Du hast also Recht.
Daher neue Umsetzung mittels getrennter Abfrage der Zufallszahl und der Kundenzugehörigkeit.

Code:

if ZielZufall <= 0.33
if K1_H < Tbl_Aufträge[1,1]
waituntil P_Komm_K1.leer = true AND K1_H_vorgemerkt = false
K1_H_vorgemerkt := true
M_WcH.BEZiel := AP24
end
elseif ...


Problem dabei ist, dass ohne eine else-Anweisung nach Erreichen der ersten Bestellmenge die Auslagerung abbricht. Mit else-Anweisung wird wieder zu viel eingelagert. Ich stehe buchstäblich auf dem Schlauch..

Viele Grüße

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

nadin1223
Mitglied
Ing.


Sehen Sie sich das Profil von nadin1223 an!   Senden Sie eine Private Message an nadin1223  Schreiben Sie einen Gästebucheintrag für nadin1223

Beiträge: 938
Registriert: 29.03.2016

erstellt am: 13. Jul. 2018 13:23    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für MaxiSim 10 Unities + Antwort hilfreich

zu (1) In Programmieren ist generell alles möglich, was der Programmmierer sich vorstellen kann... Die Vorstellung, dass Zählindex in For-Schliefe ausschließlich in dieser For-Schleife gilt, schränkt deine Phantasie ein.
var i: integer;  for i:= 1 to .... loop ... next;

zu (2)

Zitat:
zu (2) Dies zeigt den allgemeinen Ansatz für Würfel-Wert und Prüfwert.
Allgemein bitte nicht überlesen. Reale Herausforderungen erfordern individuelle Lösungen. Dennoch folgt die Struktur stets gleichen Regeln ;).

Zitat:
Im nächsten Durchlauf wird dann bspw. wieder der Kunde1 gewürfelt. Jetzt ist die Menge aber schon erreicht, d. h. die zweite Bedingung wird nicht erfüllt. Daher wird eine neue Zufallszahl gewürfelt. Das Ganze passiert solange, bis eines der Bedingungspaare erfüllt wird. Tritt gar nichts mehr ein, sind alle Kunden bedient und die Einlagerung in die L_Komm_KX stoppt.

Dies ist einer deiner Pflichtfelder... Zu jedem Pflichtfeld wird normalerweise irrgendwann ein Pseudocode geschrieben. Dieser Pseudocode baut auf die Prozesse auf. Die Prozesse sind beispielsweise mithilfe EPK oder Petri, uvm. darstellbar.

Der Pseudocode kann beispielsweise so aussehen:
******************************************
Zähle Anzahl Kunden, die noch was wollen (Prüfmenge >= Menge Geliefert + Die in diesem Auftrag enthaltene Menge)
Würfle entweder für 3 oder 2 Kunden (wenn Einer, dann den Einen übergeben)
Bestimme Kunden, an dem diese Bestellung geht (Eindeutig ein Kunde, der es bekommen soll)
Starte Auslagern (hier die Prüfungen und Warten, sobald erfüllt)

----Prüfung zu Ende
Wenn alle Produkte Ferting, Ende Simulation
*****************************************
Dokumentiere diesen Pseudocode und deine implementierte Lösung in EPK oder Petrinetz. Prüfe ausgewählte mögliche Extrema. Sind diese in dem Prozess möglich? Welchen Zustand haben die Variablen bei der Ausführung? Was ist das Ende? Was ist der Anfang? ...uvm.

vG
Nadin 

------------------

Zitat:
Die einfachste Art an korrekte Informationen zu gelangen ist, etwas Falsches in ein Forum zu posten und auf die Korrektur zu warten.
Matthew Austern

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

MaxiSim
Mitglied
Student


Sehen Sie sich das Profil von MaxiSim an!   Senden Sie eine Private Message an MaxiSim  Schreiben Sie einen Gästebucheintrag für MaxiSim

Beiträge: 18
Registriert: 13.06.2018

TM Plant Simulation 14

erstellt am: 26. Jul. 2018 18:59    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


Werkerpool3D.JPG

 
Hallo Nadin,

mittlerweile funktioniert alles so, wie es soll - danke für deine Hilfe!

Eine Ausnahme gibt es aber natürlich noch. Bei einer Simulation über einen längeren Zeitraum bekomme ich von einem der WerkerPools die Fehlermeldung im Anhang. Der Werkerpool ist aber in 3D vorhanden, ich habe die Attribute alle gecheckt, da wird nichts durch die Simulation verändert.
Kennst du dieses Problem?

Viele Grüße

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

nadin1223
Mitglied
Ing.


Sehen Sie sich das Profil von nadin1223 an!   Senden Sie eine Private Message an nadin1223  Schreiben Sie einen Gästebucheintrag für nadin1223

Beiträge: 938
Registriert: 29.03.2016

erstellt am: 27. Jul. 2018 12:21    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für MaxiSim 10 Unities + Antwort hilfreich

Moin,

Ehe Zeit merken und kurz davor SimEnde legen, um danach zu debuggen. Wahrscheinlich kann Algorithmus für einen der MA keinen Weg zu Wekerpool berechnen. Vermutlich hilft den Werkerpool freier im Raum zu Positionieren.... k.a. mehrere Gründe möglich.

------------------
Die einfachste Art an korrekte Informationen zu gelangen ist, etwas Falsches in ein Forum zu posten und auf die Korrektur zu warten. (Matthew Austern)

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

MaxiSim
Mitglied
Student


Sehen Sie sich das Profil von MaxiSim an!   Senden Sie eine Private Message an MaxiSim  Schreiben Sie einen Gästebucheintrag für MaxiSim

Beiträge: 18
Registriert: 13.06.2018

TM Plant Simulation 14

erstellt am: 27. Jul. 2018 13:22    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Tatsächlich, den WerkerPool weiter in der Fläche zu platzieren, löst das Problem. Danke!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz