- Timestamp:
- 11/23/15 18:38:37 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/ProblemRefactoring/HeuristicLab.Problems.Programmable/3.3/Templates/CompiledSingleObjectiveProblemDefinition.cs
r12731 r13345 5 5 using HeuristicLab.Core; 6 6 using HeuristicLab.Data; 7 using HeuristicLab.Encodings.BinaryVectorEncoding; 8 using HeuristicLab.Encodings.IntegerVectorEncoding; 9 using HeuristicLab.Encodings.RealVectorEncoding; 10 using HeuristicLab.Encodings.PermutationEncoding; 11 using HeuristicLab.Encodings.LinearLinkageEncoding; 12 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding; 7 using {0} 13 8 using HeuristicLab.Optimization; 14 9 using HeuristicLab.Problems.Programmable; 15 10 16 11 namespace HeuristicLab.Problems.Programmable { 17 public class CompiledSingleObjectiveProblemDefinition : CompiledProblemDefinition , ISingleObjectiveProblemDefinition{12 public class CompiledSingleObjectiveProblemDefinition : CompiledProblemDefinition<{1}, {2}>, ISingleObjectiveProblemDefinition<{1}, {2}> { 18 13 public bool Maximization { get { return false; } } 19 14 20 15 public override void Initialize() { 21 16 // Use vars.yourVariable to access variables in the variable store i.e. yourVariable 22 // Define the solution encoding which can also consist of multiple vectors, examples below 23 //Encoding = new BinaryVectorEncoding("b", length: 5); 24 //Encoding = new IntegerVectorEncoding("i", length: 5, min: 2, max: 14, step: 2); 25 //Encoding = new RealVectorEncoding("r", length: 5, min: -1.0, max: 1.0); 26 //Encoding = new PermutationEncoding("p", length: 5, type: PermutationTypes.Absolute); 27 //Encoding = new LinearLinkageEncoding("l", length: 5); 28 //Encoding = new SymbolicExpressionTreeEncoding("s", new SimpleSymbolicExpressionGrammar(), 50, 12); 29 // The encoding can also be a combination 30 //Encoding = new MultiEncoding() 31 //.Add(new BinaryVectorEncoding("b", length: 5)) 32 //.Add(new IntegerVectorEncoding("i", length: 5, min: 2, max: 14, step: 4)) 33 //.Add(new RealVectorEncoding("r", length: 5, min: -1.0, max: 1.0)) 34 //.Add(new PermutationEncoding("p", length: 5, type: PermutationTypes.Absolute)) 35 //.Add(new LinearLinkageEncoding("l", length: 5)) 36 //.Add(new SymbolicExpressionTreeEncoding("s", new SimpleSymbolicExpressionGrammar(), 50, 12)) 37 ; 17 // Define e.g. the length of the solution encoding or the solution creator by modifying the Encoding property 38 18 // Add additional initialization code e.g. private variables that you need for evaluating 39 19 } 40 20 41 public double Evaluate( Individualindividual, IRandom random) {21 public double Evaluate({2} individual, IRandom random) { 42 22 // Use vars.yourVariable to access variables in the variable store i.e. yourVariable 43 23 var quality = 0.0; 44 //quality = individual.RealVector("r").Sum(x => x * x);45 24 return quality; 46 25 } 47 26 48 public void Analyze( Individual[] individuals, double[] qualities, ResultCollection results, IRandom random) {27 public void Analyze({2}[] individuals, double[] qualities, ResultCollection results, IRandom random) { 49 28 // Use vars.yourVariable to access variables in the variable store i.e. yourVariable 50 29 // Write or update results given the range of vectors and resulting qualities … … 55 34 56 35 //if (!results.ContainsKey("Best Solution")) { 57 // results.Add(new Result("Best Solution", typeof( RealVector)));36 // results.Add(new Result("Best Solution", typeof({20))); 58 37 //} 59 //results["Best Solution"].Value = (IItem)best. RealVector("r").Clone();38 //results["Best Solution"].Value = (IItem)best.Clone(); 60 39 } 61 40 62 public IEnumerable< Individual> GetNeighbors(Individualindividual, IRandom random) {41 public IEnumerable<{2}> GetNeighbors({2} individual, IRandom random) { 63 42 // Use vars.yourVariable to access variables in the variable store i.e. yourVariable 64 43 // Create new vectors, based on the given one that represent small changes … … 67 46 // Algorithm will draw only a finite amount of samples 68 47 // Change to a for-loop to return a concrete amount of neighbors 69 var neighbor = individual.Copy(); 70 // For instance, perform a single bit-flip in a binary parameter 71 //var bIndex = random.Next(neighbor.BinaryVector("b").Length); 72 //neighbor.BinaryVector("b")[bIndex] = !neighbor.BinaryVector("b")[bIndex]; 48 var neighbor = ({2})individual.Clone(); 49 // modify the solution specified as neighbor 73 50 yield return neighbor; 74 51 }
Note: See TracChangeset
for help on using the changeset viewer.