Пример #1
0
        public Vehicle GetNextAvailableVehicleFor(Solution solution, Destination destination, int currentVehicleNumber)
        {
            while (currentVehicleNumber <= solution.VehicleFleet.Vehicles.Count)
            {
                var currentVehicle = solution.VehicleFleet.GetByNumber(currentVehicleNumber);

                var distanceFromCurrentDestinationToNewDestination = solution.Map.GetDistance(currentVehicle.Route.CurrentLastDestination, destination);
                var distanceFromNewDestinationToEnding = solution.Map.GetDistance(destination, currentVehicle.Route.EndingPoint);

                if (currentVehicle.Route.GetDistanceWithoutFinalReturn(solution.Map) + distanceFromCurrentDestinationToNewDestination + distanceFromNewDestinationToEnding <= currentVehicle.MaxDistance)
                    return currentVehicle;

                currentVehicleNumber++;
            }
            return null;
        }
Пример #2
0
 public decimal GetDistance(Destination destinationFrom, Destination destinationTo)
 {
     var xDiff = destinationFrom.Coordinate.X - destinationTo.Coordinate.X;
     var yDiff = destinationFrom.Coordinate.Y - destinationTo.Coordinate.Y;
     return Convert.ToDecimal(Math.Sqrt((double)(xDiff * xDiff + yDiff * yDiff)));
 }
Пример #3
0
 public Route(Destination startingPoint, Destination endingPoint)
 {
     Destinations = new List<Destination>();
     StartingPoint = startingPoint;
     EndingPoint = endingPoint;
 }
Пример #4
0
 public void AddDestination(Destination destination)
 {
     Destinations.Add(destination);
 }
Пример #5
0
 public Vehicle(short number, decimal maxDistance, Destination startingPoint, Destination endingPoint)
 {
     Number = number;
     MaxDistance = maxDistance;
     Route = new Route(startingPoint, endingPoint);
 }