/// <summary> /// U1 - Príchod zákazníka /// Naplánujem: /// - Začiatok spracovania objednávky - naplánujem udalosť okamžite, ak je volny pracovnik. /// - Front čakajúcich zákazníkov - Vložím do frontu čakajúcich zákazníkov zákazníka s aktuálnym časom príchodu. /// - Príchod nového zákazníka s vygenerovaným časom z Generátora 1. /// Štatistiky: /// - S1a - Začnem merať čas čakania zákazníka v rade čakajúcich zákazníkov na zadanie objednávky. /// - S2a – Pripočítam jedného zákazníka v rade čakajúcich zákazníkov. /// - S3a - Začnem počítať čas strávený zákazníkov v servise. /// </summary> public override void Execute() { if (AktualnyZakaznik == null) { throw new Exception("NULL zakaznik. "); } AktualnyZakaznik.S1_ZacniCakanie_front_cakajucich_zakaznikov(EventTime); AktualnyZakaznik.S3_ZacniCakanie_bytia_v_servise(EventTime); ((AppCore)ReferenceSimCore).S2_AddValue(); if (((AppCore)ReferenceSimCore).JeVolnyPracovnik1()) { //obsad volneho pracovnik ((AppCore)ReferenceSimCore).ObsadPracovnikaSkupiny1(); var zadanie = new ZaciatokSpracovaniaObjednavkyEvent(EventTime, ReferenceSimCore, AktualnyZakaznik); ReferenceSimCore.ScheduleEvent(zadanie); } else { ((AppCore)ReferenceSimCore).S2_AddValue(); //inak vlozim zakaznika do frontu cakajucich zakaznikov ((AppCore)ReferenceSimCore).Front_CakajuciZakaznici_PridajZakaznika(AktualnyZakaznik); } //naplanujem novy prichod zákazníka var a = ((AppCore)ReferenceSimCore).Gen.Generator1_ZakazniciPrichod(); var time = EventTime + a; var prichod = new PrichodZakaznikaEvent(time, ReferenceSimCore, new Zakaznik()); ReferenceSimCore.ScheduleEvent(prichod); }
/// <summary> /// U9 - Odchod zákazníka /// </summary> /// Uvoľním zákazníka zo systému. /// Naplánujem: /// - Preparkovanie auta pred dielnou – naplánujem okamžite. /// Štatistiky: /// - S4b - Skončím počítanie času stráveným zákazníkom čakaním na opravu. public override void Execute() { ((AppCore)ReferenceSimCore).S4_AddValue(AktualnyZakaznik.S4_SkonciCakanie_oprava(EventTime)); ((AppCore)ReferenceSimCore).S5_AddValue(AktualnyZakaznik.S5_SkonciCakanie_system(EventTime)); AktualnyZakaznik = null; var preparkovanie = new PreparkovanieAutoEvent(EventTime, ReferenceSimCore, null); ((AppCore)ReferenceSimCore).ScheduleEvent(preparkovanie); ((AppCore)ReferenceSimCore).PocetLudiOdisli++; }
/// <summary> /// U2 - Začiatok spracovania objednávky /// Naplánujem: /// - Koniec spracovania objednávky, /// tak naplánujem udalosť v čase vygenerovaným Generátorom 3 – prevzatie objednávky. /// Znížim počet voľných pracovníkov o jedna. /// </summary> public override void Execute() { if (AktualnyZakaznik == null) { throw new Exception("NULL zakaznik. "); } ((AppCore)ReferenceSimCore).S1_AddValue( AktualnyZakaznik.S1_SkonciCakanie_front_cakajucich_zakaznikov(EventTime)); //naplanujem spracovanie objednavky var time = EventTime + ((AppCore)ReferenceSimCore).Gen.Generator3_PrevzatieObjednavky(); var spracovanie = new KoniecSpracovaniaObjednavky(time, ReferenceSimCore, AktualnyZakaznik); ReferenceSimCore.ScheduleEvent(spracovanie); }
/// <summary> /// U4 - Prevzatie auta od zákazníka /// Naplánujem: /// - Preparkovanie auta pred dielnou s vygenerovaným časom Generátora 5 – preparkovanie. /// Štatistiky: /// - S3b – Skončím počítanie doby stráveného v servise. /// - S4a – Začnem merať čas strávený čakaním na opravu. (od ukončenia prevzatia auta do servisu) /// </summary> public override void Execute() { if (AktualnyZakaznik == null) { throw new Exception("NULL zakaznik. "); } //statistiky ((AppCore)ReferenceSimCore).S3_AddValue(AktualnyZakaznik.S3_SkonciCakanie_bytia_v_servise(EventTime)); AktualnyZakaznik.S4_ZacniCakanie_oprava(EventTime); //naplanujem preparkovanie auta var time = EventTime + ((AppCore)ReferenceSimCore).Gen.Generator5_Preparkovanie(); var preparkovanie = new PreparkovanieAutoEvent(time, ReferenceSimCore, AktualnyZakaznik); ReferenceSimCore.ScheduleEvent(preparkovanie); }