コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
 internal void Depart(Customer customer)
 {
     customer.DepartureTime = _sim.ClockTime;
     ServedCustomers.Add(customer);
     InSystemCounter.ObserveChange(-1);
 }