Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  TM - Plant Simulation
  Ziehensteuerung Blockierliste Priorisierung

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:  Ziehensteuerung Blockierliste Priorisierung (508 / mal gelesen)
PatM
Mitglied


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

Beiträge: 6
Registriert: 18.08.2021

erstellt am: 14. Okt. 2021 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

Hallo liebes Forum,

aktuell versuche ich über die Ziehensteuerung nach der STEP-BY-STEP Anleitung eine Priorisierung vorzunehmen.

Das heißt bestimmte BEs sollen vorrangig umgelagert werden.

Dazu möchte ich die folgende Steuerung verwenden:


var Blockierliste: table, n: integer
// @,?: das Objekt, für das die Ziehensteuerung aufgerufen wurde
?.vBlockierListe(blockierListe)
n := 1
?.entblockieren(blockierListe[1,n])  // n setzt die Zeile in der
// Blockierliste, d. h. das zu entblockierende BE


Leider bereitet mir das Entblocken aus der Liste Schwierigkeiten.
Wie lassen sich gezielt BEs aus der Liste mit der Funktion

?.entblockieren(blockierliste[1,n])

auswählen?

mit 1,n entblockt er jedes BE aus der Liste.

Wie ließe sich eine Priorisierung einbauen? D.h. das drei Produkte eine Rangfolge (1 bis 3) besitzen?

Bin leider etwas überfragt und würde mich über eine Hilfe sehr freuen.

Mit freundlichen Grüßen
PatM

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: 14. Okt. 2021 22:46    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 PatM 10 Unities + Antwort hilfreich

Moin,


Zitat:
Wie lassen sich gezielt BEs aus der Liste mit der Funktion

?.entblockieren(blockierliste[1,n])

auswählen?


mit n-Parameter. Dies ist dein Integer. Dieser wird vorher gesetzt. Im Beispiel ist dies auf 1 gesetzt. Also der erste Eintrag in der Liste wird entblockiert.

Zitat:
mit 1,n entblockt er jedes BE aus der Liste.

Nein. Zumindest werden hiermit nicht alle BEs und Sortierer (dies gibt es auch noch) aus der Liste gleichzeitig entblockiert.
...
Mit blockierliste[1,1] wird der erste Eintrag in der Liste entblockiert. (den gibt es immer, sobald PullSteuerung ausgeführt wird)
Mit blockierliste[1,2] wird der zweite Eintrag in der Liste entblockiert. (dieser könnte auch nicht da sein, sodass dies auch vorher zu überprüfen ist)
usw..

Zitat:
Wie ließe sich eine Priorisierung einbauen? D.h. das drei Produkte eine Rangfolge (1 bis 3) besitzen?

ich gehe mal davon aus, dass die Vorgänger keine Sortierer sind (Das macht es einfacher, weil Sortierer sich selbst und nicht das BE in die Blockierliste eintragen)

die Blockierliste, welche mithilfe ?.vBlockierListe(blockierListe) in die Tabelle "blockierListe" kopiert wird, enthält in der ersten Spalte das BE (Typ: Objekt) und in der zweiten Spalte den Eintragungszeitpunkt (Typ: time).

BE1:1   |  10.0000
BE2:1   |  10.0000
....

Nun las uns mal annahmen, dass das BE ein Attribut "Attr_Prio" hat (typ: integer, diskret Variable in Intervall von 1 bis 3).
Es sei dann noch zu entscheiden, ob Attr_Prio  ​= 1 hoch oder tief priorisiert ist  

Nun  hat die Tabelle  blockierListe in zweiten Spalte Zeit eingetragen, was eig. auch unser Attribut "Attr_Prio" aufnehmen könnte.

    Beispielsweise:
    der durchgestrichene Lösungsansatz ist sehr rechner kostenintensiv ( ..sorry, hatte ein ganz anderes Problem im Kopf gehabt .. )
    (1) in diese zweite Spalte - die du sowieso nicht nutzen willst - den "Attr_Prio" von diesem BE reinschreiben.
    (2) die Tabelle "blockierListe" mithilfe der zweite Spalte sortieren, sodass der erste Eintrag die höchste prio in Verhältnis zu anderen Einträgen hat
    (3) ?.entblocke(blockierliste[1,1]) ...
     

    (1) Variable anlegen "_intPrioAktuell" (integer)
    (1.1)-> setzen so, dass auch das BE mit niedrigster Stufe höhere Priorität hat
    (2) Variable anlegen "_objAktuell" (object)
    (3) Mithilfe einer For-Schleife die "blockierListe" durchgehen
        (3.1) ist  "_intPrioAktuell" geringer als blokierListe[1,i].Attr_Prio dann merke dieses Objekt in "_objAktuell"
    (4) mit ?.entblockieren(_objAktuell) das priorisierte BE entblockieren

Nur am Rande: ein Sortierer statt Pull-Steuerung wäre hierzu auch eine schöne alternative. Der kann auch sortieren  

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)

[Diese Nachricht wurde von nadin1223 am 15. Okt. 2021 editiert.]

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

PatM
Mitglied


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

Beiträge: 6
Registriert: 18.08.2021

erstellt am: 15. Okt. 2021 01: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

Hallo Nadin,

Vielen Dank für die Hilfe und ausführliche Antwort. Ich werde schauen wie sich die Tipps umsetzen lassen. Mein Problem ist, dass ein sehr komplexer Materialfluss mit mehreren Produkt Typen über mehrere Maschinengruppen nachzubilden ist. Teilweise können/sollen Maschinen innerhalb der Gruppen alle, nur bestimmte oder nur einzelne dieser Produkte bearbeiten.

Hinzu kommt, dass je Produkt unterschiedliche Rüst- und Bearbeitungszeiten an den Maschinen zu berücksichtigen sind.

Da ich auf die Standardlizenz beschränkt bin, habe ich eine funktionierende Lösung über einen Arbeitsplan für die Ausgangssteuerung aller Puffer und Stationen entwickelt. Sonst wäre ich über die Flusssteuerung gegangen. Leider zerstört mir der Sortierer den Materialfluss, den der Arbeitsplan vorgibt.

Aus diesem Grund suche ich andere Mittel, um die Produkte zu priorisieren. Dadurch das bisher die Priorisierung fehlt, komme ich zu keinem validen Modell, da die Durchlaufzeiten im Produktmix erheblich von der Wirklichkeit abweichen. Da nach vielen Variablen umpriorisiert wird und der Mensch einen grossen Einfluss nimmt, kann es sein das auch kein valides Modell zustande kommen kann. Dies gilt es für mich zu überprüfen.

Vielen Dank und viele Grüße

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

PatM
Mitglied


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

Beiträge: 6
Registriert: 18.08.2021

erstellt am: 15. Okt. 2021 02:12    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

Meine Methode hätte nach den Tipps folgendermaßen ausgesehen. Leider funktioniert das "Merke" mit result nicht.
Welche Funktion meinst du mit "Merke"?


var Blockierliste: table
var i: integer
var _intPrioAktuell: integer
var _objAktuell: object

?.vBlockierListe(BlockierListe)
For i := BlockierListe.YDim downto 1
if _intPrioAktuell < blockierListe[1,i].Attr_Prio then
result := _objAktuell
?.entblockieren(_objAktuell)
exitloop
end

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: 15. Okt. 2021 10: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 Nur für PatM 10 Unities + Antwort hilfreich

Code:

var Blockierliste: table
var i: integer
var _intPrioAktuell: integer := 0 /*beispielsweise auf 0 */
var _objAktuell: object

?.vBlockierListe(BlockierListe)

For i := 1 to BlockierListe.YDim loop
/*hier mast du schon eine erste priorisierung, dass das letzte Teil in der Liste zuerst zu prüfen ist*/
if _intPrioAktuell < blockierListe[1,i].Attr_Prio then
//result := _objAktuell --Result ist dafür da damit die Methode etwas zurückgibt.
end
next
/*dann erst entblockieren*/
?.entblockieren(_objAktuell)



------------------
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

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