Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
04/20/20 17:31:31 (4 years ago)
Author:
abeham
Message:

#2521: Worked on ResultParameter for Problem and Algorithms

  • Add ResultParameter to TSP, BinaryVectorProblem, and HillClimber
  • Refactor ResultParameter to allow presetting the ResultCollection instead of having to discover it (e.g. for use in BasicAlgorithms)
  • Unify Results property among EngineAlgorithm and BasicAlgorithm
    • There is now only a single instance which is storable
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2521_ProblemRefactoring/HeuristicLab.Problems.TravelingSalesman/3.3/TSP.cs

    r17382 r17517  
    4747    [Storable] public IValueParameter<ITSPData> TSPDataParameter { get; private set; }
    4848    [Storable] public IValueParameter<ITSPSolution> BestKnownSolutionParameter { get; private set; }
     49    [Storable] public IResultParameter<ITSPSolution> BestTSPSolutionParameter { get; private set; }
    4950
    5051    public ITSPData TSPData {
     
    6465      TSPDataParameter = cloner.Clone(original.TSPDataParameter);
    6566      BestKnownSolutionParameter = cloner.Clone(original.BestKnownSolutionParameter);
     67      BestTSPSolutionParameter = cloner.Clone(original.BestTSPSolutionParameter);
    6668    }
    6769
     
    7072      Parameters.Add(TSPDataParameter = new ValueParameter<ITSPData>("TSPData", "The main parameters of the TSP."));
    7173      Parameters.Add(BestKnownSolutionParameter = new OptionalValueParameter<ITSPSolution>("BestKnownSolution", "The best known solution."));
    72 
     74      Parameters.Add(BestTSPSolutionParameter = new ResultParameter<ITSPSolution>("Best TSP Solution", "The best so far solution found."));
     75     
    7376      TSPData = new EuclideanTSPData();
    7477      Encoding.Length = TSPData.Cities;
     
    112115      }
    113116
    114       IResult bestSolutionResult;
    115       if (results.TryGetValue("Best TSP Solution", out bestSolutionResult)) {
    116         var bestSolution = bestSolutionResult.Value as ITSPSolution;
    117         if (bestSolution == null || Maximization && bestSolution.TourLength.Value < qualities[i]
    118           || !Maximization && bestSolution.TourLength.Value > qualities[i]) {
    119           bestSolutionResult.Value = TSPData.GetSolution(solutions[i], qualities[i]);
    120         }
    121       } else results.Add(new Result("Best TSP Solution", TSPData.GetSolution(solutions[i], qualities[i])));
     117      var bestSolution = BestTSPSolutionParameter.ActualValue;
     118      if (bestSolution == null || IsBetter(qualities[i], bestSolution.TourLength.Value)) {
     119        BestTSPSolutionParameter.ActualValue = TSPData.GetSolution(solutions[i], qualities[i]);
     120      }
    122121    }
    123122
Note: See TracChangeset for help on using the changeset viewer.