public void PrintRoute() //debug purposes { Console.WriteLine("-----------------------------------------"); Console.WriteLine("Route for " + this.ToString()); List <Customer> pickupCustomers = new List <Customer>(); for (int i = 0; i < VisitedStops.Count; i++) { var currentStop = VisitedStops[i]; var currentTimeWindow = StopsTimeWindows[i]; var message = currentStop.ToString() + " T:(" + currentTimeWindow[0] + "," + currentTimeWindow[1] + ") "; var customersToEnter = ServedCustomers.FindAll(c => c.PickupDelivery[0] == currentStop); var customersToLeave = ServedCustomers.FindAll(c => c.PickupDelivery[1] == currentStop); foreach (var customer in customersToEnter) { var pickup = customer.PickupDelivery[0]; var pickupTime = customer.DesiredTimeWindow[0]; var pickupTimeIsRespected = customer.RealTimeWindow[0] >= pickupTime; message += "Enter: " + customer.ToString() + ", Pickup: " + pickup.ToString() + ", PickupTime: " + pickupTime + ", RealPickupTime:" + customer.RealTimeWindow[0] + ", PickupTimeIsRespected: " + pickupTimeIsRespected; pickupCustomers.Add(customer); } foreach (var customer in customersToLeave) { var delivery = customer.PickupDelivery[1]; var deliveryTime = customer.DesiredTimeWindow[1]; var deliveryTimeIsRespected = customer.DelayTime <= 0; var precedenceConstraint = pickupCustomers.Contains(customer); message += "Leave: " + customer.ToString() + ", Delivery: " + delivery.ToString() + ", DeliveryTime: " + deliveryTime + ", RealDeliveryTime:" + customer.RealTimeWindow[1] + " DeliveryTimeIsRespected: " + deliveryTimeIsRespected + ", PrecedenceIsRespected: " + precedenceConstraint; } Console.WriteLine(message); } Console.WriteLine("Total customers: " + ServedCustomers.Count); }
public bool RemoveCustomer(Customer customer) { if (customer == null) { throw new ArgumentNullException(); } if (!Customers.Contains(customer)) { return(false); } Customers.Remove(customer); if (TripIterator.Current == null) { return(false); } TripIterator.Current.ServicedCustomers.Add(customer); ServedCustomers.Add(customer); return(true); }
internal void Depart(Customer customer) { customer.DepartureTime = _sim.ClockTime; ServedCustomers.Add(customer); InSystemCounter.ObserveChange(-1); }