public void VerwijderKOBRij(KOBRij rij) { if (rij != null && Rijen.Contains(rij)) { Rijen.Remove(rij); } }
public void BerekenResultaat() { Resultaat = Rijen.Sum(r => r.Resultaat); if (Formule == Formule.FormuleKost1) { Resultaat *= 12; } }
public void VulKOBRijIn(KOBRij rij) { if (ControleerOfKOBRijMetNummerAlIngevuldIs(rij.KOBRijId)) { Rijen.Remove(GeefKOBRijMetNummer(rij.KOBRijId)); } Rijen.Add(rij); }
public List <State> Run() { List <State> states = new List <State>(); for (int i = 0; i < Iteraties; i++) { if (Visualiseer) { Display.Show(this); Thread.Sleep(300); //Console.ReadKey(); } states.Add(new State { AantalKlanten = Rijen.Sum(r => r.Count), AVGRijlengte = Rijen.Average(r => Convert.ToDouble(r.Count)), Weggelopen = Step(), AantalKassas = Rijen.Where(rij => rij.IsOpen).Count() }); } return(states); }
public bool ControleerOfKOBRijMetNummerAlIngevuldIs(int nummer) { return(Rijen.Any(r => r.KOBRijId == nummer)); }
public KOBRij GeefKOBRijMetNummer(int nummer) { return(Rijen.FirstOrDefault(r => r.KOBRijId == nummer)); }
/// <summary> /// Update de huidige staat met een tijdstap /// </summary> public int Step() { List <Klant> verwijder = new List <Klant>(); // Klanten for (int i = 0; i < IntroductionTimes[CurrentTime]; i++) { Klanten.Add(new Klant(R.Next(1, 150), R.Next(0, 5), 40)); //TODO Hardcoded Value!!! } int klantenweggelopen = 0; foreach (Klant k in Klanten) { k.Opgeven -= 1; Rij huidig = null; try { huidig = Rijen.Find(r => r.Bevat(k)); } catch (ArgumentNullException) { /* huidig blijft null */ } switch (Klant.Besluit(k, huidig, Kortste)) { case Klant.KlantActie.Blijf: break; case Klant.KlantActie.WisselNaarKortste: Kortste.Push(k); if (huidig != null) { huidig.Pop(k); } break; case Klant.KlantActie.GeefOp: verwijder.Add(k); Uitgestapt.Add(k); klantenweggelopen++; break; } } // Rijen // Ik heb de voortgang nu gedaan voor het wisselen van de klanten, anders krijg je rare situaties waar er 3 mensen in 1 rij staan terwijl er ook een rij leeg is. foreach (Rij r in Rijen) { r.Step(); if (r.klanten.Count != 0) //Zodat head niet aangeroepen word op een lege lijst { if (r.Head.Voortgang >= 10) //Aangezien de voortang alleen omhoog gaat moeten we poppen op een standaard hoge value, ipv op 0 { verwijder.Add(r.Head); } } foreach (Klant kl in verwijder) // Ga langs alle klanten in de verwijder lijst en haal ze uit de rijen, een probleempje ik weet niet of self-checkout kassas in de rijen lijst mogen { if (r.Bevat(kl)) { r.Pop(kl); Klanten.Remove(kl); } } } if (Kortste.Count < 3 && Sluitbaar.Count > 0) { Sluitbaar.Last().Sluit(); } if (Gesloten.Count > 0 && Kortste.Count > 4 && CurrentTime % 5 == 0) { Gesloten[0].Open(); } // Tijd CurrentTime += 1; return(klantenweggelopen); }