Esempio n. 1
0
        protected override PTSPData LoadInstance(TSPLIBParser parser, IDataDescriptor descriptor = null)
        {
            parser.Parse();
            if (parser.FixedEdges != null)
            {
                throw new InvalidDataException("TSP instance " + parser.Name + " contains fixed edges which are not supported by HeuristicLab.");
            }
            var instance = new PTSPData();

            instance.Dimension   = parser.Dimension;
            instance.Coordinates = parser.Vertices != null ? parser.Vertices : parser.DisplayVertices;
            instance.Distances   = parser.Distances;
            switch (parser.EdgeWeightType)
            {
            case TSPLIBEdgeWeightTypes.ATT:
                instance.DistanceMeasure = DistanceMeasure.Att; break;

            case TSPLIBEdgeWeightTypes.CEIL_2D:
                instance.DistanceMeasure = DistanceMeasure.UpperEuclidean; break;

            case TSPLIBEdgeWeightTypes.EUC_2D:
                instance.DistanceMeasure = DistanceMeasure.RoundedEuclidean; break;

            case TSPLIBEdgeWeightTypes.EUC_3D:
                throw new InvalidDataException("3D coordinates are not supported.");

            case TSPLIBEdgeWeightTypes.EXPLICIT:
                instance.DistanceMeasure = DistanceMeasure.Direct; break;

            case TSPLIBEdgeWeightTypes.GEO:
                instance.DistanceMeasure = DistanceMeasure.Geo; break;

            case TSPLIBEdgeWeightTypes.MAN_2D:
                instance.DistanceMeasure = DistanceMeasure.Manhattan; break;

            case TSPLIBEdgeWeightTypes.MAN_3D:
                throw new InvalidDataException("3D coordinates are not supported.");

            case TSPLIBEdgeWeightTypes.MAX_2D:
                instance.DistanceMeasure = DistanceMeasure.Maximum; break;

            case TSPLIBEdgeWeightTypes.MAX_3D:
                throw new InvalidDataException("3D coordinates are not supported.");

            default:
                throw new InvalidDataException("The given edge weight is not supported by HeuristicLab.");
            }

            instance.Name        = parser.Name;
            instance.Description = parser.Comment
                                   + Environment.NewLine + Environment.NewLine
                                   + GetInstanceDescription();

            instance.Probabilities = GetProbabilities(descriptor, instance);
            return(instance);
        }
Esempio n. 2
0
        protected override ATSPData LoadInstance(TSPLIBParser parser)
        {
            var instance = new ATSPData();

            parser.Parse();
            instance.Dimension   = parser.Dimension;
            instance.Coordinates = parser.DisplayVertices != null ? parser.DisplayVertices : parser.Vertices;
            instance.Distances   = parser.Distances;

            instance.Name        = parser.Name;
            instance.Description = parser.Comment
                                   + Environment.NewLine + Environment.NewLine
                                   + GetInstanceDescription();

            return(instance);
        }
        protected override CVRPData LoadInstance(TSPLIBParser parser, IDataDescriptor descriptor = null)
        {
            parser.Parse();
            var instance = new CVRPData();

            instance.Dimension   = parser.Dimension;
            instance.Coordinates = parser.Vertices != null ? parser.Vertices : parser.DisplayVertices;
            instance.Distances   = parser.Distances;
            instance.Capacity    = parser.Capacity.Value;
            instance.Demands     = parser.Demands;
            switch (parser.EdgeWeightType)
            {
            case TSPLIBEdgeWeightTypes.ATT:
                instance.DistanceMeasure = DistanceMeasure.Att; break;

            case TSPLIBEdgeWeightTypes.CEIL_2D:
                instance.DistanceMeasure = DistanceMeasure.UpperEuclidean; break;

            case TSPLIBEdgeWeightTypes.EUC_2D:
            case TSPLIBEdgeWeightTypes.EUC_3D:
                instance.DistanceMeasure = DistanceMeasure.RoundedEuclidean; break;

            case TSPLIBEdgeWeightTypes.EXPLICIT:
                instance.DistanceMeasure = DistanceMeasure.Direct; break;

            case TSPLIBEdgeWeightTypes.GEO:
                instance.DistanceMeasure = DistanceMeasure.Geo; break;

            case TSPLIBEdgeWeightTypes.MAN_2D:
            case TSPLIBEdgeWeightTypes.MAN_3D:
                instance.DistanceMeasure = DistanceMeasure.Manhattan; break;

            case TSPLIBEdgeWeightTypes.MAX_2D:
            case TSPLIBEdgeWeightTypes.MAX_3D:
                instance.DistanceMeasure = DistanceMeasure.Maximum; break;

            default:
                throw new InvalidDataException("The given edge weight is not supported by HeuristicLab.");
            }

            instance.Name        = parser.Name;
            instance.Description = parser.Comment
                                   + Environment.NewLine + Environment.NewLine
                                   + GetInstanceDescription();

            return(instance);
        }
 protected override void LoadSolution(TSPLIBParser parser, TSPData instance)
 {
     parser.Parse();
     instance.BestKnownTour = parser.Tour.FirstOrDefault();
 }
 protected override void LoadSolution(TSPLIBParser parser, CVRPData instance)
 {
     parser.Parse();
     instance.BestKnownTour = parser.Tour;
 }