internal override MDCVRPData LoadInstance(CordeauParser parser)
        {
            parser.Parse();

            var instance = new MDCVRPData();

            instance.Dimension       = parser.Cities + 1;
            instance.Depots          = parser.Depots;
            instance.Coordinates     = parser.Coordinates;
            instance.Capacity        = parser.Capacity;
            instance.Demands         = parser.Demands;
            instance.DistanceMeasure = DistanceMeasure.Euclidean;
            instance.MaximumVehicles = parser.Vehicles;

            int depots   = parser.Depots;
            int vehicles = parser.Vehicles / parser.Depots;

            instance.VehicleDepotAssignment = new int[depots * vehicles];
            int index = 0;

            for (int i = 0; i < depots; i++)
            {
                for (int j = 0; j < vehicles; j++)
                {
                    instance.VehicleDepotAssignment[index] = i;
                    index++;
                }
            }

            instance.Name = parser.ProblemName;

            return(instance);
        }
Ejemplo n.º 2
0
 internal abstract TData LoadInstance(CordeauParser parser);