Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  TM - Plant Simulation
  Umlagern

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:  Umlagern (1074 mal gelesen)
sven732
Mitglied
Student


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

Beiträge: 13
Registriert: 24.02.2007

erstellt am: 18. Aug. 2007 13:56    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,

ich möchte über eine Methode eine bestimmte Anzahl von Bes aus dem Lager in eine Senke umlagern und zwar begonnen vom ersten belegten Lagerplatz bis zum letzten Lagerplatz.


Wie kann ich dies machen?

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

Kepheus
Mitglied
Student


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

Beiträge: 22
Registriert: 13.03.2007

IBM ThinkPad R51e
Intel Celeron M 1,5 GHz
512 MB Ram<P>Windows XP SP2<P>Plant Simulation 7.6

erstellt am: 20. Aug. 2007 07: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 sven732 10 Unities + Antwort hilfreich

Also ich versteh dein Problem nicht?

Sind es jetzt eine bestimmte Anzhal oder alle?

Gruß Kepheus

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

LaBonita
Mitglied
Dipl.-Math.


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

Beiträge: 151
Registriert: 26.07.2007

eM-Plant 7.5 bis 8.1
VB
Java
C#

erstellt am: 20. Aug. 2007 11:44    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 sven732 10 Unities + Antwort hilfreich

Hallo sven732,

ich vemute Du möchtest auf den Inhalt eines Lageres zugreifen. Da ein Lager keine fest vorgegebene Verweil- oder Bearbeitungszeit hat, sind hier alle Teile immer nach dem FIFO prinzip zu erreichen.
Du kannst dann auf unterschiedliche Arten auf die BEs zugreifen. Indem Du

Code:
for i := 1 to current.Lager.numMU
loop
    current.Lager.cont.move(ziel);
next;

kannst Du immer auf das Element zugreifen, dass nach dem FIFO Prinzip als nächstes umgelagert werden soll. Etwas schwieriger wird es, wenn Du platzbezogen zugreifen willst, weil Du dann prüfen musst, ob der Platz auf belegt ist. PlantSimulation  hat da eine etwas lustige Art der Zuordnung. Wir hatten das Problem demletzt auch und ein Kollege hatte es dann folgendermaßen gelöst:
Code:
for i := 1 to current.Lager.xDim
loop
    for j := 1 to current.Lager.yDim
    loop
        if current.Lager[i,j].occupied
        then
            current.Lager[i,j].move(ziel);
        end;
    next;
next;

Hilfe zum direkten Zugriff findest Du in der PlantSimulation Hilfe. Nur die Lustige Belegung des Lagers ist nirgends beschrieben. Also einfach geht es mit "cont" und wenn Du bestimmte Eigenschaften brauchst, dann musst Du halt zirkulieren und prüfen, ob da überhaupt etwas liegt.

Viel Erfolg!!!

Gruß,
LaBonita

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

sven732
Mitglied
Student


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

Beiträge: 13
Registriert: 24.02.2007

erstellt am: 20. Aug. 2007 19:04    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,

es hat funktioniert. Ich kann jetzt eine bestimmte Anzahl von Bes umlagern. Allerdings funktioniert die Umlagerstrategie Fifo nur bedingt. Wenn ich 20 Lagerplätze zur Verfügung habe, diese belegt sind und ich 5 Bes umlagern lasse, dann werden die Lagerplätze 1 - 5 umgelagert. D.h. die neu ankommenden Bes werden wieder auf die Lagerplätze 1 - 5 gelegt und beim nächsten Umlagern auch umgelagert. Die restlichen 15 Bes bleiben im Lager. Man stelle sich sowas bei Obst vor. Das Lager würde nur so vor sich hinfaulen.
Wie kann ich es lösen, dass ein richtiges Fifo ausgeführt wird. D.h. dass zuerst Lagerplatz 1 - 5 dann 6 - 10, 11 - 15, usw. umgelagert werden. Ist es auch möglich, dass, sofern die Lagerplätze 1 - 5 frei geworden sind, die anderen Bes im Lager einfach um diese 5 Plätze nach vorne rücken und neu ankommende bes die hinteren Lagerplätze 15 - 20 belegen?

Gruss

Sven732

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

LaBonita
Mitglied
Dipl.-Math.


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

Beiträge: 151
Registriert: 26.07.2007

eM-Plant 7.5 bis 8.1
VB
Java
C#

erstellt am: 20. Aug. 2007 19:39    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 sven732 10 Unities + Antwort hilfreich

Hallo sven732,

ich liebe es, wenn PlantSimulation nicht das macht, was man eigentlich erwarten würde. Alos FIFO ist nicht immer FIFO. Anyway - habe meine Idee mal ausprobiert und es tut. Jedes Element hat einen Eintrittszeitpunkt. Jetzt muss Du halt durch alle Elemente durchgehen und Dir immer das Element suchen, das den frühesten Eintrittszeitpunkt hat. Als Beispiel der folgende Code:

Code:
is
  local
        i, j, k, indI, indJ: integer;
        eTime, minETime: time;
do
    minETime := 1000000000;

    for k := 1 to 5 loop
        for i := 1 to current.Store.xDim
        loop
            for j := 1 to current.Store.yDim
            loop
                if current.Store[i, j].occupied
                then
                    eTime := current.Store[i, j].cont.entryTime;

                    if minETime = 1000000000
                    then
                        indI := i;
                        indJ := j;

                        minETime := eTime;
                    elseif eTime < minETime
                    then
                        indI := i;
                        indJ := j;

                        minETime := eTime;
                    end;
                end;
            next;
        next;

        current.Store[indI, indJ].move(current.Store1);
        minETime := 1000000000;
    next;
end;

Hierbei werden immer die am längsten gelagerten 5 Elemente aus dem lager geholt und in ein anderes Lager verlegt. Vielleicht kannst Du es anpassen und dann verwenden.

Gruß,
LaBonita

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


Ex-Mitglied

erstellt am: 20. Aug. 2007 20:23    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

@ LaBonita
@ sven732

na na na Leute, bleibt mal bei der Realität!

@ LaBonita

 

Zitat:

for i := 1 to current.Lager.xDim
loop
    for j := 1 to current.Lager.yDim
    loop
        if current.Lager[i,j].occupied
        then
            current.Lager[i,j].move(ziel);
        end;
    next;
next;

for j := 1 to current.Lager.yDim
loop
    for i := 1 to current.Lager.xDim
    loop
        if current.Lager[i,j].occupied
        then
            print current.Lager[i,j].inhalt;
        end;
    next;
next;

ist dasselbe wie:

for i:=1 to lager.anzahlbes loop
print i, chr(9), lager.be(i);
next;

ohne "belegt"-Überprüfung und ohne Überprüfung A L L E R Lagerplätze
,oder ?????

@ sven732
@ LaBonita

Wenn es FIFO sein soll, dann nehmt doch einfach einen Pufferbaustein.
Warum hierbei umständlich mit dem Lagerbaustein hantieren ????


------------------
Stephan Römberg

[Diese Nachricht wurde von COMAU am 20. Aug. 2007 editiert.]

LaBonita
Mitglied
Dipl.-Math.


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

Beiträge: 151
Registriert: 26.07.2007

eM-Plant 7.5 bis 8.1
VB
Java
C#

erstellt am: 21. Aug. 2007 10: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 Nur für sven732 10 Unities + Antwort hilfreich

Hallo Stephan,

zunächst mal - da kann man vielleicht auch den Platzpuffer für verwenden, wenn man die Bearbeitungszeit auf 0 setzt und er ansonsten keine ungewollten Eigenschaften mitbringt - dafür kenne ich das Problem nicht gut genug.

Zu Deiner Anmerkung mit:

Zitat:
ist dasselbe wie:

for i:=1 to lager.anzahlbes loop
print i, chr(9), lager.be(i);
next;


würde ich jedoch gerne bemerken, dass der Grundgedanke war die Teile in der Ankunftsreihenfolge wieder raus zu geben und nicht irgendwie raus zu bekommen. Das funktioniert mit der Methode, die Du beschrieben hast, aber leider nicht (zumindest nicht bei meinem Testmodell - mehrdimensionales Lager).

Anyway - das Schöne bei PlantSimulation ist: Es gibt (fast) immer eine Lösung und 2 Lösungen unterschiedlicher Personen sind (fast) nie gleich ;-)

Gruß,
LaBonita

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


Ex-Mitglied

erstellt am: 21. Aug. 2007 13:18    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

@LaBonita

naja, das hättest Du garnicht testen brauchen, denn aus dem Zitat geht ja wohl eindeutig hervor, worauf ich


for i:=1 to lager.anzahlbes loop
print i, chr(9), lager.be(i);
next;


bezogen habe, oder ?


Wenn nun ein mehrdimensionales Lager genutzt werden soll,
dann gehts mit 2 weiteren Zeilen so:

is
i:integer;
tab:table[object,real];
do

tab.create;

for i:=1 to lager.anzahlbes loop
tab[1,tab.ydim+1]:=lager.be(i);
tab[2,tab.ydim]:=lager.be(i).eintrittszeit;
next;

tab.sortieren(2,"auf");

for i:=1 to min(5,tab.ydim)  loop
tab[1,i].umsetzen(ziel);
next;

end;


------------------
Stephan Römberg

[Diese Nachricht wurde von COMAU am 22. Aug. 2007 editiert.]

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