Cancel
Showing results for 
Search instead for 
Did you mean: 

Picking system: Implant a second worker + fill out a table with random MUs by method (german)

Creator
Creator

Hi,

 

I'm pretty new to Plant Simulation and would like to get some help!

 

I'm working on a picking system for a school project and have almost everything set up.

Two things I would like to do next:

 

1. Implant a second worker who works simutaneously to the first one

 

2. Filling out the waiting list-component "Aufträge" (which includes multiply tables) with MUs (in my case: A1-A3, B1-B3, C1-C3) randomly

 

Will that be possible according to my methods?

 

for your information:

 

- Everything is in German. If you need anything to be translated feel free to ask!

 

- If you want to restart the simulation you have to delete the component "Aufträge" and insert a new component "Aufträge" from the side bar into the network.

 

Thank you in advance for your help!

 

Greetings

Chris

24 REPLIES

Betreff: Picking system: Implant a second worker + fill out a table with random MUs by method (germa

Gears Phenom Gears Phenom
Gears Phenom

Moin Chris,

I'll keep it English, too, in case others are interested in this thread, but if required, we can also switch to German.

One hint regarding "Aufträge": insert this line into the reset method, then you don't have to delete and re-insert a new instance of "Aufträge" into your model all the time, it will always have the same content (and format):

	Aufträge.inheritContents := true;

Regarding the 2nd question: I guess you would then empty "Aufträge" in the class library and during INIT fill the "Aufträge"-table in your model with random contents. You can use something like this

ceil(z_uniform(X, M-1, N))

to get a random integer number between M and N (inclusive), with X being a random stream. You should use a different number for X whenever you write a line of code like above. Now you can add to your INIT method:

  1. Ensure Aufträge is always empty when starting
  2. Get random nr of orders/Aufträge A from 1...maxA like above
  3. Use a FOR loop from 1...A (this is the row-number in Aufträge, too!)
  4. Create the subtable for this order/Auftrag (createNestedList)
  5. Get random nr of parts P in this order from 1..maxP like above
  6. Use another FOR loop from 1..P (this is the row-number in the sub-table Aufträge[1, A]!)
  7. For each part, get a random nr T from 1..9 which represents the parttype (A1-3, etc) and add it to the sub-table (e.g.
    inspect T
    ...
    when 5 then
        Aufträge[1, A][1, P] := "B2";
    ...

Let's get this done first, because the 2nd worker might be a bit more difficult.

Regards,
Alex

____________________________________________________________
Alex Dilg, Consultant at SimPlan AG (www.SimPlan.de)
This post was good and/or helpful to you? Please provide some Kudos, thank you!

Betreff: Picking system: Implant a second worker + fill out a table with random MUs by method (germa

Gears Phenom Gears Phenom
Gears Phenom

Uh and I would replace "Aufträge" with a TableFile-object instead of the Queue, I find it much easier to handle (and the code I posted only works like this for tables, not for queues Smiley Wink ).

The TableFile allows you to access any entry, the Queue will always access the "oldest" one. You would have to replace your code in the other methods like this for a table:

old:
Aufträge.lesen[1, aktuelle_Artikelposition];
new:
Aufträge[1, 1][1, aktuelle_Artikelposition];
____________________________________________________________
Alex Dilg, Consultant at SimPlan AG (www.SimPlan.de)
This post was good and/or helpful to you? Please provide some Kudos, thank you!

Betreff: Picking system: Implant a second worker + fill out a table with random MUs by method (germa

Creator
Creator

Hi Alex,

 

Thanks for your reply! What I have read so far sounds pretty good. I have changed my Queue into a TableFile-object and it works fine. 

I have tried to understand your solution regarding my 2nd question. It would be really helpful if you could give me a german instruction to that matter. Do you also have the "ceil"-code in german or is it the same?

 

Thank you very much for your help! Smiley Happy

 

Greetings

Chris

Betreff: Picking system: Implant a second worker + fill out a table with random MUs by method (germa

Creator
Creator

Hi,

 

I think I have understood your instructions. I am working on it right now! 

But it would still be helpful to have an instruction in german. Smiley Very Happy

 

Thanks!

 

Greetings

Chris

Betreff: Picking system: Implant a second worker + fill out a table with random MUs by method (germa

Gears Phenom Gears Phenom
Gears Phenom

Hi Chris,

also ceil gibt es nur als englischen Befehl; Du kannst in der Hilfe zu jedem SimTalk-Befehl die deutsche und englische Variante finden und auch beide in einem Modell parallel verwenden. Falls Du doch noch Probleme bekommst, melde Dich einfach. 

VG Alex

 

____________________________________________________________
Alex Dilg, Consultant at SimPlan AG (www.SimPlan.de)
This post was good and/or helpful to you? Please provide some Kudos, thank you!

Betreff: Picking system: Implant a second worker + fill out a table with random MUs by method (germa

Creator
Creator

Hi Alex,

 

ich habe eine vorläufige Methode für die automatische Erstellung der Aufträge erstellt.

 

Nun habe ich folgendes Problem:

Ich habe zum Test die Variable "i" (Anzahl der Artikel) mit i:=2 initialisiert (statt mit z_gleich zu arbeiten), da ich sehen wollte, ob pro Auftrag auch wirklich zwei Artikel eingetragen werden. Insgesamt habe ich drei Subtabellen erstellen lassen.

Leider werden nur in den Subtabellen "table11" und "table13" zwei Artikel eingetragen. In "table12" steht nur ein Artikel.

An was könnte das liegen? 

 

Weitere Anliegen:

1. Wie kann ich die Aufträge umbennen? (z.B. table11 zu Auftrag 1)

2. Wie kann ich einstellen, dass z.B. Artikel A mit der höchsten Warscheinlichkeit bzw. am Häufigsten in den Aufträgen auftaucht? (analog dazu B als Zweites und C als Drittes)

3. Wichtig ist auch, dass A immer ganz oben im Auftrag steht, gefolgt von B und C. Ist das möglich?

 

Natürlich bin ich noch viel am knobbeln, wie ich das alles einstellen kann, aber wäre super, wenn du mir hier mal wieder weiterhelfen könntest Smiley Happy

 

Danke im Voraus für deine Hilfe und Bemühung!

 

VG

Chris

 

 

Betreff: Picking system: Implant a second worker + fill out a table with random MUs by method (germa

Gears Phenom Gears Phenom
Gears Phenom

Hi Chris,

ich habe eine Info-Mail bekommen, dass Du in Deinem Thread geantwortet hast, allerdings scheinst Du danach diese Antwort wieder gelöscht zu haben, jedenfalls gibt es sie nicht mehr. Hier ist der Text, der mir geschickt wurde, aber mir fehlt das Modell dazu, es wäre also gut, wenn Du es nochmal posten würdest.

Hi Alex,
 
ich habe eine vorläufige Methode für die automatische Erzeugung der Aufträge im init erstellt. 
 
Test:
Als Test habe ich die Variable "i" mit dem Wert "2" (Anzahl der Artikel pro Auftrag) initialisiert (statt mit z_gleich), um zu prüfen, ob auch wirklich in jedem Auftrag zwei Artikel eingetragen werden. Insgesamt habe ich 3 Subtabellen erstellen lassen.
 
Problem: 
1. Leider wird nur in den Subtabellen "table11" und table13" zwei Artikel eingetragen und in "table12" nur ein Artikel eingetragen.
2. Wenn ich die Simulation dementsprechend laufen lasse, läuft der Kommissionier anfangs beim Auftrag "table11" noch die richtigen Artikel ab, aber dann nimmt er weitere Artikel auf, die nicht in dem Auftrag stehen und so läuft es  bei den anderen Aufträgen bis Simulationsende ab.
Doch am Ende wird im Protokoll in der Spalte "Anzahl der Positionen" (= Anzahl der Artikel pro Auftrag) bei allen drei Aufträgen "2" eingetragen.
 
An was könnte das alles liegen?
 
Weitere Anliegen:
a) Wie kann ich die automatisch erstellten Subtabellen unbennen? (z.B. table11 zu Auftrag 1)
b) Wie kann ich einstellen, dass Artikel A am häufigsten in den Aufträgen auftritt? (analog dazu: B als Zweites und C als Drittes)
 
Hoffe, dass es nicht zu viel auf einmal ist! 
Zu 1. und 2. bin ich leider schon am verzweifeln.
An a) und b) bin ich noch am knobbeln.
Wäre super, wenn du mir mal wieder weiterhelfen könntest! 
Danke im Voraus für deine Hilfe und deine Bemühung!
Danke!
 
VG
Chris

Zu 1. und 2. bräuchte ich Deinen Modellstand; zu a) kannst Du folgendes benutzen:

	TableFile.createNestedList(1,1);
	TableFile[1,1].setName("Auftrag1");

Schau Dir mal die Funktion to_str an, damit musst Du dann nicht mehr Auftrag1, Auftrag2, etc. explizit angeben.

 Zu b); Schau Dir mal die Verteilung z_dEmp (oder alternativ z_Emp) an, als Ersatz für z_gleich/z_uniform, um untersch. Häufigkeiten für die Artikel vorzugeben.

Viele Grüße,
Alex

____________________________________________________________
Alex Dilg, Consultant at SimPlan AG (www.SimPlan.de)
This post was good and/or helpful to you? Please provide some Kudos, thank you!

Betreff: Picking system: Implant a second worker + fill out a table with random MUs by method (germa

Creator
Creator

Hi Alex,

 

leider weiß ich auch nicht, wieso die Nachricht gelöscht wurde.

Anbei findest du das aktuelle Modell.

Den Punkt 2. habe ich bereits gelöst!

 

Danke für deine schnellen Antworten! Smiley Happy

 

VG

Chris

Betreff: Picking system: Implant a second worker + fill out a table with random MUs by method (germa

Gears Phenom Gears Phenom
Gears Phenom

Hi Chris,

Du würfelst eine zufällige Zeile aus dem Artikelverzeichnis:

n := z_gleich(1,1,Artikelverzeichnis.yDim);

Aber die Tabelle enthält auch Leerzeilen ;-) Wenn n=4/8 gewürfelt wird, wird ein Leerstring in die Auftragsliste geschrieben:

 

grafik.pngTabelle Artikelverzeichnis und Ausschnitt Methode "init"

 Wenn Du statt der Gleichverteilung die empirische Verteilung verwendest, erledigt sich dieses Problem dann von selbst, weil Du nur für die Artikelzeilen Häufigkeiten > 0 eintragen wirst. Aber in die INIT Methode noch ein

if (m = "") then debug; end;

einzufügen, kann ja nicht schaden Smiley Happy

VG Alex

 

 

 

 

____________________________________________________________
Alex Dilg, Consultant at SimPlan AG (www.SimPlan.de)
This post was good and/or helpful to you? Please provide some Kudos, thank you!