Changeset 14128 for branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/PackingSequenceProblem.cs
- Timestamp:
- 07/20/16 14:02:36 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/PackingSequenceProblem.cs
r14064 r14128 23 23 24 24 using System; 25 using System.CodeDom; 25 26 using System.Linq; 27 using System.Text; 26 28 using HeuristicLab.Common; 27 29 using HeuristicLab.Core; 28 30 using HeuristicLab.Data; 29 using HeuristicLab.Encodings.P ackingEncoding.PackingSequence;31 using HeuristicLab.Encodings.PermutationEncoding; 30 32 using HeuristicLab.Optimization; 31 33 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 34 using HeuristicLab.Problems.BinPacking; 32 35 33 namespace HeuristicLab.Problems.BinPacking 2d{36 namespace HeuristicLab.Problems.BinPacking { 34 37 [StorableClass] 35 abstract class PackingSequenceProblem : SingleObjectiveBasicProblem<Encoding> { 38 public abstract class PackingSequenceProblem<TSolution, TEncoding> : SingleObjectiveBasicProblem<TEncoding> 39 where TSolution : class, IItem 40 where TEncoding : class, IEncoding { 36 41 37 42 // persistence … … 43 48 44 49 // cloning 45 protected PackingSequenceProblem(PackingSequenceProblem original, Cloner cloner)50 protected PackingSequenceProblem(PackingSequenceProblem<TSolution, TEncoding> original, Cloner cloner) 46 51 : base(original, cloner) { 47 52 } … … 53 58 } 54 59 55 public sealed override double Evaluate(Individual individual, IRandom random) { 56 return Evaluate(individual.PackingSequence(), random); 57 } 58 public abstract double Evaluate(PackingSequence sequence, IRandom random); 59 60 public virtual void Analyze(PackingSequence[] trees, double[] qualities, ResultCollection results, 60 public virtual void Analyze(TSolution[] solutions, double[] qualities, ResultCollection results, 61 61 IRandom random) { 62 62 if (!results.ContainsKey("Best Solution Quality")) { … … 64 64 } 65 65 if (!results.ContainsKey("Best Solution")) { 66 results.Add(new Result("Best Solution", typeof( PackingSequence)));66 results.Add(new Result("Best Solution", typeof(TSolution))); 67 67 } 68 68 … … 72 72 IsBetter(bestQuality, ((DoubleValue)results["Best Solution Quality"].Value).Value)) { 73 73 var bestIdx = Array.IndexOf(qualities, bestQuality); 74 var bestClone = (IItem) trees[bestIdx].Clone();74 var bestClone = (IItem)solutions[bestIdx].Clone(); 75 75 results["Best Solution"].Value = bestClone; 76 76 results["Best Solution Quality"].Value = new DoubleValue(bestQuality); 77 77 } 78 78 } 79 80 public sealed override void Analyze(Individual[] individuals, double[] qualities, ResultCollection results, IRandom random) {81 Analyze(individuals.Select(ind => ind.PackingSequence()).ToArray(), qualities, results, random);82 }83 79 } 84 80 }
Note: See TracChangeset
for help on using the changeset viewer.