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); }
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; }