Autor
|
Thema: Werker-Effizienz über Schichtkalender steuern (2453 mal gelesen)
|
NecDrop Mitglied Student
Beiträge: 43 Registriert: 22.08.2012 Plant Simulation 10.1
|
erstellt am: 24. Okt. 2012 15:19 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich möchte die Effizienz der Werker über den Schichtkalender steuern. Wenn ein gewisses Datum erreicht wird, sollen die Werker nur in einer gewissen Effizienz arbeiten. Meine Idee wäre es, dem Schichtkalender einen Beobachter zuzuweisen und die Methode: ------------------------------------------------------- is do if 01.06.2012 then Stricker.Effizienz := 50; end; ------------------------------------------------------- auszuführen. Einen passenden Beobachter im Schichtkalender habe ich allerdings nicht gefunden. Weiß jemand, wie es geht? Zur Not würde ich es direkt im Schichtkalender unter "Reduzieren auf" umsetzen und dort nur die Hälfte der üblichen Arbeitszeit eintragen. Aber kennt jemand einen eleganteren Weg?
Schöne Grüße NecDrop Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bon Simul Mitglied Simulant
Beiträge: 1250 Registriert: 08.08.2011 Plant Simulation 10.1, 11 ff Professional
|
erstellt am: 28. Okt. 2012 19:01 <-- editieren / zitieren --> Unities abgeben: Nur für NecDrop
Sie können ungeplant mit einem Beobachter überwachen. Wenn ungeplant von false auf true wechselt, dann beginnt der Werker zu arbeiten und Sie können das Datum checken. reduzieren auf würde ich nicht verwenden, da es die Werkerstatistik durcheinander bringt.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
NecDrop Mitglied Student
Beiträge: 43 Registriert: 22.08.2012 Plant Simulation 10.1
|
erstellt am: 30. Okt. 2012 15:10 <-- editieren / zitieren --> Unities abgeben:
Danke für die Info, Bon Simul. Ich habs bisher soweit: ------------------------------ (Attribut: string; alterWert: any) is do if WerkerPool_Werker.ungeplant=false then if Ereignisverwalter.Datum= str_to_datetime("03.01.2012") or Ereignisverwalter.Datum= str_to_datetime("04.01.2012") then .ressourcen.Werker.Effizienz := 90; else .ressourcen.Werker.Effizienz := 100; end; end; end; ------------------------------ Der Beobachter "ungeplant" befindet sich im WerkerPool. Mein Simulationsbeginn ist der 02.01.2012. Am 03. und am 04.01.2012 soll die Effizienz auf 90% herausgesatz werden. Andernfalls soll sie 100% betragen. Ich bekomm zwar keine Fehlermeldung, aber igendwie es klappt trotzdem nicht. Wo ist mein Fehler? [Diese Nachricht wurde von NecDrop am 30. Okt. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bon Simul Mitglied Simulant
Beiträge: 1250 Registriert: 08.08.2011 Plant Simulation 10.1, 11 ff Professional
|
erstellt am: 30. Okt. 2012 15:57 <-- editieren / zitieren --> Unities abgeben: Nur für NecDrop
|
NecDrop Mitglied Student
Beiträge: 43 Registriert: 22.08.2012 Plant Simulation 10.1
|
erstellt am: 30. Okt. 2012 16:45 <-- editieren / zitieren --> Unities abgeben:
|
Bon Simul Mitglied Simulant
Beiträge: 1250 Registriert: 08.08.2011 Plant Simulation 10.1, 11 ff Professional
|
erstellt am: 30. Okt. 2012 21:32 <-- editieren / zitieren --> Unities abgeben: Nur für NecDrop
Es sollte auch am Ressourcenpool funktionieren. Sehen Sie mal in die Hilfe bei str_to_datetime, in das Format muss die Zeit mit hinein. Und dann muss es auch eine ungeplante Zeit im Schichtkalender geben, damit es aufgerufen wird. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bon Simul Mitglied Simulant
Beiträge: 1250 Registriert: 08.08.2011 Plant Simulation 10.1, 11 ff Professional
|
erstellt am: 31. Okt. 2012 08:42 <-- editieren / zitieren --> Unities abgeben: Nur für NecDrop
|
NecDrop Mitglied Student
Beiträge: 43 Registriert: 22.08.2012 Plant Simulation 10.1
|
erstellt am: 31. Okt. 2012 15:35 <-- editieren / zitieren --> Unities abgeben:
Danke für das Beispiel. Da ist es auch einleuchtend! Aber bei mir klappts leider immer noch nicht ..... Ich habs jetzt mit str_to_datetime versucht: --------------------------------------------------- (Attribut: string; alterWert: any) is do if ?.ungeplant=false then if Ereignisverwalter.Datum= str_to_datetime("03.01.2012 00:00:00") then .ressourcen.Werker.Effizienz:= 80; else .ressourcen.Werker.Effizienz := 100; end; end; end; --------------------------------------------------- und mit str_to_date: --------------------------------------------------- (Attribut: string; alterWert: any) is do if ?.ungeplant=false then if Ereignisverwalter.Datum= str_to_date("03.01.2012") then .ressourcen.Werker.Effizienz:= 80; else .ressourcen.Werker.Effizienz := 100; end; end; end; --------------------------------------------------- Hat beides nicht funktioniert. Wie gesagt, eine Fehlermeldung bekomm ich nicht, aber er übernimmt nicht die 80% Wenn ich es nur mit : --------------------------------------------------- (Attribut: string; alterWert: any) is do if ?.ungeplant=false then .ressourcen.Werker.Effizienz:= 80; else .ressourcen.Werker.Effizienz := 100; end; end; --------------------------------------------------- mache übernimmt er die 80%. Es hapert halt nur noch beim Datum... Ich weiß aber nicht, wo der Fehler liegt. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bon Simul Mitglied Simulant
Beiträge: 1250 Registriert: 08.08.2011 Plant Simulation 10.1, 11 ff Professional
|
erstellt am: 31. Okt. 2012 21:34 <-- editieren / zitieren --> Unities abgeben: Nur für NecDrop
Damit wirklich nur tageweise umgeschalten wird können Sie diese Bedingung probieren: Code:
if day(Ereignisverwalter.absZeit)= 3 and month(Ereignisverwalter.absZeit)= 1 then .ressourcen.Werker.Effizienz:= 80; else .ressourcen.Werker.Effizienz := 100; end;
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
NecDrop Mitglied Student
Beiträge: 43 Registriert: 22.08.2012 Plant Simulation 10.1
|
erstellt am: 01. Nov. 2012 13:43 <-- editieren / zitieren --> Unities abgeben:
Super, so klappts Vielen vielen Dank! Hier nochmal die vollständige Vorgehensweise, um die Effiziens eines Werkers an einem bestimmten Tag (hier der 03.01.) auf eine bestimmte Effizienz (hier 80%) zu drosseln: 1. einen Beobachter mit "ungeplant" in den Schichtlalender setzen 2. die folgende Methode über den Beobachter laufen lassen: ----------------------------------------------- (Attribut: string; alterWert: any) is do if ?.ungeplant=false then if day(Ereignisverwalter.absZeit)= 3 and month(Ereignisverwalter.absZeit)= 1 then .ressourcen.Werker.Effizienz:= 80; else .ressourcen.Werker.Effizienz := 100; end; end; end; ----------------------------------------------- Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |