Changeset 14552 for branches/MemPRAlgorithm/HeuristicLab.Algorithms.MemPR/3.3/LinearLinkage/LinearLinkageMemPR.cs
- Timestamp:
- 01/09/17 00:36:20 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/MemPRAlgorithm/HeuristicLab.Algorithms.MemPR/3.3/LinearLinkage/LinearLinkageMemPR.cs
r14551 r14552 37 37 [StorableClass] 38 38 [Creatable(CreatableAttribute.Categories.PopulationBasedAlgorithms, Priority = 999)] 39 public class LinearLinkageMemPR : MemPRAlgorithm< SingleObjectiveBasicProblem<LinearLinkageEncoding>, LinearLinkage, LinearLinkageMemPRPopulationContext, LinearLinkageMemPRSolutionContext> {39 public class LinearLinkageMemPR : MemPRAlgorithm<ISingleObjectiveHeuristicOptimizationProblem, LinearLinkage, LinearLinkageMemPRPopulationContext, LinearLinkageMemPRSolutionContext> { 40 40 [StorableConstructor] 41 41 protected LinearLinkageMemPR(bool deserializing) : base(deserializing) { } … … 69 69 } 70 70 71 protected override ISingleObjectiveSolutionScope<LinearLinkage> ToScope(LinearLinkage code, double fitness = double.NaN) {72 var creator = Problem.SolutionCreator as ILinearLinkageCreator;73 if (creator == null) throw new InvalidOperationException("Can only solve linear linkage encoded problems with MemPR (linear linkage)");74 return new SingleObjectiveSolutionScope<LinearLinkage>(code, creator.LLEParameter.ActualName, fitness, Problem.Evaluator.QualityParameter.ActualName) {75 Parent = Context.Scope76 };77 }78 79 71 protected override ISolutionSubspace<LinearLinkage> CalculateSubspace(IEnumerable<LinearLinkage> solutions, bool inverse = false) { 80 72 var pop = solutions.ToList(); … … 95 87 int maxEvals, CancellationToken token, 96 88 ISolutionSubspace<LinearLinkage> sub_space = null) { 97 var maximization = Context. Problem.Maximization;89 var maximization = Context.Maximization; 98 90 var subspace = sub_space is LinearLinkageSolutionSubspace ? ((LinearLinkageSolutionSubspace)sub_space).Subspace : null; 99 91 var evaluations = 0; 100 92 var quality = scope.Fitness; 101 93 if (double.IsNaN(quality)) { 102 Evaluate(scope, token);94 Context.Evaluate(scope, token); 103 95 quality = scope.Fitness; 104 96 evaluations++; … … 168 160 move.Apply(current); 169 161 var qualityToRestore = tabu[i, current[i]]; // current[i] is new next 170 Evaluate(currentScope, token);162 Context.Evaluate(currentScope, token); 171 163 evaluations++; 172 164 var moveF = currentScope.Fitness; … … 255 247 var cachehits = 0; 256 248 var evaluations = 0; 257 var probe = ToScope((LinearLinkage)p1.Solution.Clone());249 var probe = Context.ToScope((LinearLinkage)p1.Solution.Clone()); 258 250 ISingleObjectiveSolutionScope<LinearLinkage> offspring = null; 259 251 while (evaluations < p1.Solution.Length) { … … 268 260 continue; 269 261 } 270 Evaluate(probe, token);262 Context.Evaluate(probe, token); 271 263 evaluations++; 272 264 cache.Add(c); … … 283 275 protected override ISingleObjectiveSolutionScope<LinearLinkage> Link(ISingleObjectiveSolutionScope<LinearLinkage> a, ISingleObjectiveSolutionScope<LinearLinkage> b, CancellationToken token, bool delink = false) { 284 276 var evaluations = 0; 285 if (double.IsNaN(a.Fitness)) {286 Evaluate(a, token);287 evaluations++;288 }289 if (double.IsNaN(b.Fitness)) {290 Evaluate(b, token);291 evaluations++;292 }293 294 277 var probe = (ISingleObjectiveSolutionScope<LinearLinkage>)a.Clone(); 295 278 ISingleObjectiveSolutionScope<LinearLinkage> best = null; … … 306 289 if (delink && distAfter > distBefore || !delink && distAfter < distBefore) { 307 290 var beforeQ = probe.Fitness; 308 Evaluate(probe, token);291 Context.Evaluate(probe, token); 309 292 evaluations++; 310 293 var q = probe.Fitness;
Note: See TracChangeset
for help on using the changeset viewer.