Changeset 13373 for branches/ProblemRefactoring
- Timestamp:
- 11/24/15 17:27:35 (9 years ago)
- Location:
- branches/ProblemRefactoring
- Files:
-
- 1 added
- 5 edited
- 2 copied
- 2 moved
Legend:
- Unmodified
- Added
- Removed
-
branches/ProblemRefactoring/HeuristicLab.Problems.LawnMower.Views/3.3/HeuristicLab.Problems.LawnMower.Views-3.3.csproj
r12899 r13373 167 167 <Project>{3BD61258-31DA-4B09-89C0-4F71FEF5F05A}</Project> 168 168 <Name>HeuristicLab.MainForm-3.3</Name> 169 <Private>False</Private> 170 </ProjectReference> 171 <ProjectReference Include="..\..\HeuristicLab.Optimization\3.3\HeuristicLab.Optimization-3.3.csproj"> 172 <Project>{14ab8d24-25bc-400c-a846-4627aa945192}</Project> 173 <Name>HeuristicLab.Optimization-3.3</Name> 169 174 <Private>False</Private> 170 175 </ProjectReference> -
branches/ProblemRefactoring/HeuristicLab.Problems.Programmable/3.3/HeuristicLab.Problems.Programmable-3.3.csproj
r13364 r13373 97 97 <Compile Include="ProblemDefinitionScriptException.cs" /> 98 98 <Compile Include="ProgrammableProblemInstances.cs" /> 99 <Content Include="Templates\CompiledSingleObjectiveProblemDefinition_Template.cs" /> 100 <Content Include="Templates\CompiledMultiObjectiveProblemDefinition_Template.cs"> 101 <SubType>Code</SubType> 102 </Content> 99 <Content Include="Templates\MultiObjectiveCombinedEncodingProblem_Template.cs" /> 100 <Content Include="Templates\MultiObjectiveProblem_Template.cs" /> 103 101 <Compile Include="Templates\ScriptTemplates.Designer.cs"> 104 102 <AutoGen>True</AutoGen> … … 108 106 <Compile Include="SingleObjectiveProgrammableProblem.cs" /> 109 107 <Compile Include="SingleObjectiveProblemDefinitionScript.cs" /> 108 <Content Include="Templates\SingleObjectiveCombinedEncodingProblem_Template.cs" /> 109 <Content Include="Templates\SingleObjectiveProblem_Template.cs" /> 110 110 <EmbeddedResource Include="Templates\ScriptTemplates.resx"> 111 111 <Generator>PublicResXFileCodeGenerator</Generator> … … 160 160 <Private>False</Private> 161 161 </ProjectReference> 162 <ProjectReference Include="..\..\HeuristicLab.Encodings.PermutationEncoding\3.3\HeuristicLab.Encodings.PermutationEncoding-3.3.csproj"> 163 <Project>{dbecb8b0-b166-4133-baf1-ed67c3fd7fca}</Project> 164 <Name>HeuristicLab.Encodings.PermutationEncoding-3.3</Name> 165 <Private>False</Private> 166 </ProjectReference> 162 167 <ProjectReference Include="..\..\HeuristicLab.Encodings.RealVectorEncoding\3.3\HeuristicLab.Encodings.RealVectorEncoding-3.3.csproj"> 163 168 <Project>{bb6d334a-4bb6-4674-9883-31a6ebb32cab}</Project> -
branches/ProblemRefactoring/HeuristicLab.Problems.Programmable/3.3/MultiObjectiveProblemDefinitionScript.cs
r13350 r13373 40 40 private MultiObjectiveProblemDefinitionScript(bool deserializing) : base(deserializing) { } 41 41 private MultiObjectiveProblemDefinitionScript(MultiObjectiveProblemDefinitionScript<TEncoding, TSolution> original, Cloner cloner) : base(original, cloner) { } 42 public MultiObjectiveProblemDefinitionScript() : base(ScriptTemplates.CompiledMultiObjectiveProblemDefinition_Template) { } 42 public MultiObjectiveProblemDefinitionScript(string codeTemplate) : base(codeTemplate) { } 43 public MultiObjectiveProblemDefinitionScript() : base() { } 43 44 44 45 public override IDeepCloneable Clone(Cloner cloner) { -
branches/ProblemRefactoring/HeuristicLab.Problems.Programmable/3.3/ProgrammableProblemInstances.cs
r13364 r13373 26 26 using HeuristicLab.Encodings.BinaryVectorEncoding; 27 27 using HeuristicLab.Encodings.IntegerVectorEncoding; 28 using HeuristicLab.Encodings.PermutationEncoding; 28 29 using HeuristicLab.Encodings.RealVectorEncoding; 29 30 using HeuristicLab.Optimization; … … 32 33 namespace HeuristicLab.Problems.Programmable { 33 34 #region single-objective 34 [Item("Binary Vector Pro grammable Problem (single-objective)", "Represents a binary vector single-objective problem that can be programmed with a script.")]35 [Item("Binary Vector Problem (single-objective)", "Represents a binary vector single-objective problem that can be programmed with a script.")] 35 36 [Creatable(CreatableAttribute.Categories.Problems, Priority = 100)] 36 37 [StorableClass] … … 43 44 public SingleObjectiveBinaryVectorProgrammableProblem() 44 45 : base() { 45 var codeTemplate = ScriptTemplates. CompiledSingleObjectiveProblemDefinition_Template;46 var codeTemplate = ScriptTemplates.SingleObjectiveProblem_Template; 46 47 codeTemplate = codeTemplate.Replace(ENCODING_NAMESPACE, "HeuristicLab.Encodings.BinaryVectorEncoding"); 47 48 codeTemplate = codeTemplate.Replace(ENCODING_CLASS, "BinaryVectorEncoding"); … … 56 57 } 57 58 58 [Item(" Multi Solution Programmable Problem (single-objective)", "Represents a multi solutionsingle-objective problem that can be programmed with a script.")]59 [Item("Combined Encoding Problem (single-objective)", "Represents a combined encoding single-objective problem that can be programmed with a script.")] 59 60 [Creatable(CreatableAttribute.Categories.Problems, Priority = 100)] 60 61 [StorableClass] … … 67 68 public SingleObjectiveMultiSolutionProgrammableProblem() 68 69 : base() { 69 var codeTemplate = ScriptTemplates.CompiledSingleObjectiveProblemDefinition_Template; 70 codeTemplate = codeTemplate.Replace(ENCODING_NAMESPACE, "HeuristicLab.Encodings.BinaryVectorEncoding"); 71 codeTemplate = codeTemplate.Replace(ENCODING_CLASS, "MultiEncoding"); 72 codeTemplate = codeTemplate.Replace(SOLUTION_CLASS, "CombinedSolution"); 73 ProblemScript.Code = codeTemplate; 70 ProblemScript.Code = ScriptTemplates.SingleObjectiveCombinedEncodingProblem_Template; 74 71 } 75 72 … … 80 77 } 81 78 82 [Item("Integer Vector Pro grammable Problem (single-objective)", "Represents an integer vector single-objective problem that can be programmed with a script.")]79 [Item("Integer Vector Problem (single-objective)", "Represents an integer vector single-objective problem that can be programmed with a script.")] 83 80 [Creatable(CreatableAttribute.Categories.Problems, Priority = 100)] 84 81 [StorableClass] … … 91 88 public SingleObjectiveIntegerVectorProgrammableProblem() 92 89 : base() { 93 var codeTemplate = ScriptTemplates. CompiledSingleObjectiveProblemDefinition_Template;90 var codeTemplate = ScriptTemplates.SingleObjectiveProblem_Template; 94 91 codeTemplate = codeTemplate.Replace(ENCODING_NAMESPACE, "HeuristicLab.Encodings.IntegerVectorEncoding"); 95 92 codeTemplate = codeTemplate.Replace(ENCODING_CLASS, "IntegerVectorEncoding"); … … 103 100 } 104 101 105 [Item("Real Vector Pro grammable Problem (single-objective)", "Represents a real vector single-objective problem that can be programmed with a script.")]102 [Item("Real Vector Problem (single-objective)", "Represents a real vector single-objective problem that can be programmed with a script.")] 106 103 [Creatable(CreatableAttribute.Categories.Problems, Priority = 100)] 107 104 [StorableClass] … … 114 111 public SingleObjectiveRealVectorProgrammableProblem() 115 112 : base() { 116 var codeTemplate = ScriptTemplates. CompiledSingleObjectiveProblemDefinition_Template;113 var codeTemplate = ScriptTemplates.SingleObjectiveProblem_Template; 117 114 codeTemplate = codeTemplate.Replace(ENCODING_NAMESPACE, "HeuristicLab.Encodings.RealVectorEncoding"); 118 115 codeTemplate = codeTemplate.Replace(ENCODING_CLASS, "RealVectorEncoding"); … … 126 123 } 127 124 128 //[Item("Permutation Programmable Problem (single-objective)", "Represents a permutation single-objective problem that can be programmed with a script.")] 129 //[Creatable(CreatableAttribute.Categories.Problems, Priority = 100)] 130 //[StorableClass] 131 //public sealed class SingleObjectivePermutationProgrammableProblem : SingleObjectiveProgrammableProblem<PermutationEncoding, Permutation> { 132 133 // [StorableConstructor] 134 // private SingleObjectivePermutationProgrammableProblem(bool deserializing) : base(deserializing) { } 135 // private SingleObjectivePermutationProgrammableProblem(SingleObjectivePermutationProgrammableProblem original, Cloner cloner) : base(original, cloner) { } 136 // public SingleObjectivePermutationProgrammableProblem() 137 // : base(string.Format(ScriptTemplates.CompiledSingleObjectiveProblemDefinition, "HeuristicLab.Encodings.PermutationEncoding", "PermutationEncoding", "Permutation")) { } 138 139 // public override IDeepCloneable Clone(Cloner cloner) { 140 // return new SingleObjectivePermutationProgrammableProblem(this, cloner); 141 // } 142 //} 125 [Item("Permutation Problem (single-objective)", "Represents a permutation single-objective problem that can be programmed with a script.")] 126 [Creatable(CreatableAttribute.Categories.Problems, Priority = 100)] 127 [StorableClass] 128 public sealed class SingleObjectivePermutationProgrammableProblem : SingleObjectiveProgrammableProblem<PermutationEncoding, Permutation> { 129 130 [StorableConstructor] 131 private SingleObjectivePermutationProgrammableProblem(bool deserializing) : base(deserializing) { } 132 private SingleObjectivePermutationProgrammableProblem(SingleObjectivePermutationProgrammableProblem original, Cloner cloner) : base(original, cloner) { } 133 134 public SingleObjectivePermutationProgrammableProblem() 135 : base() { 136 var codeTemplate = ScriptTemplates.SingleObjectiveProblem_Template; 137 codeTemplate = codeTemplate.Replace(ENCODING_NAMESPACE, "HeuristicLab.Encodings.PermutationEncoding"); 138 codeTemplate = codeTemplate.Replace(ENCODING_CLASS, "PermutationEncoding"); 139 codeTemplate = codeTemplate.Replace(SOLUTION_CLASS, "Permutation"); 140 ProblemScript.Code = codeTemplate; 141 } 142 143 public override IDeepCloneable Clone(Cloner cloner) { 144 return new SingleObjectivePermutationProgrammableProblem(this, cloner); 145 } 146 } 143 147 144 148 //[Item("Symbolic Expression Tree Programmable Problem (single-objective)", "Represents a symbolic expression tree single-objective problem that can be programmed with a script.")] … … 176 180 177 181 #region multi-objective 178 [Item("Binary Vector Pro grammable Problem (multi-objective)", "Represents a binary vector multi-objective problem that can be programmed with a script.")]182 [Item("Binary Vector Problem (multi-objective)", "Represents a binary vector multi-objective problem that can be programmed with a script.")] 179 183 [Creatable(CreatableAttribute.Categories.Problems, Priority = 100)] 180 184 [StorableClass] … … 187 191 public MultiObjectiveBinaryVectorProgrammableProblem() 188 192 : base() { 189 var codeTemplate = ScriptTemplates. CompiledMultiObjectiveProblemDefinition_Template;193 var codeTemplate = ScriptTemplates.MultiObjectiveProblem_Template; 190 194 codeTemplate = codeTemplate.Replace(ENCODING_NAMESPACE, "HeuristicLab.Encodings.BinaryVectorEncoding"); 191 195 codeTemplate = codeTemplate.Replace(ENCODING_CLASS, "BinaryVectorEncoding"); … … 200 204 } 201 205 202 [Item(" Multi Solution Programmable Problem (multi-objective)", "Represents a multi solutionmulti-objective problem that can be programmed with a script.")]206 [Item("Combined Encoding Problem (multi-objective)", "Represents a combined encoding multi-objective problem that can be programmed with a script.")] 203 207 [Creatable(CreatableAttribute.Categories.Problems, Priority = 100)] 204 208 [StorableClass] … … 211 215 public MultiObjectiveMultiSolutionProgrammableProblem() 212 216 : base() { 213 var codeTemplate = ScriptTemplates.CompiledSingleObjectiveProblemDefinition_Template; 214 codeTemplate = codeTemplate.Replace(ENCODING_NAMESPACE, "HeuristicLab.Encodings.BinaryVectorEncoding"); 215 codeTemplate = codeTemplate.Replace(ENCODING_CLASS, "MultiEncoding"); 216 codeTemplate = codeTemplate.Replace(SOLUTION_CLASS, "CombinedSolution"); 217 ProblemScript.Code = codeTemplate; 217 ProblemScript.Code = ScriptTemplates.MultiObjectiveCombinedEncodingProblem_Template; 218 218 } 219 219 … … 224 224 } 225 225 226 [Item("Integer Vector Pro grammable Problem (multi-objective)", "Represents an integer vector multi-objective problem that can be programmed with a script.")]226 [Item("Integer Vector Problem (multi-objective)", "Represents an integer vector multi-objective problem that can be programmed with a script.")] 227 227 [Creatable(CreatableAttribute.Categories.Problems, Priority = 100)] 228 228 [StorableClass] … … 235 235 public MultiObjectiveIntegerVectorProgrammableProblem() 236 236 : base() { 237 var codeTemplate = ScriptTemplates. CompiledSingleObjectiveProblemDefinition_Template;237 var codeTemplate = ScriptTemplates.MultiObjectiveProblem_Template; 238 238 codeTemplate = codeTemplate.Replace(ENCODING_NAMESPACE, "HeuristicLab.Encodings.IntegerVectorEncoding"); 239 239 codeTemplate = codeTemplate.Replace(ENCODING_CLASS, "IntegerVectorEncoding"); … … 247 247 } 248 248 249 [Item("Real Vector Pro grammable Problem (multi-objective)", "Represents a real vector multi-objective problem that can be programmed with a script.")]249 [Item("Real Vector Problem (multi-objective)", "Represents a real vector multi-objective problem that can be programmed with a script.")] 250 250 [Creatable(CreatableAttribute.Categories.Problems, Priority = 100)] 251 251 [StorableClass] … … 258 258 public MultiObjectiveRealVectorProgrammableProblem() 259 259 : base() { 260 var codeTemplate = ScriptTemplates. CompiledSingleObjectiveProblemDefinition_Template;260 var codeTemplate = ScriptTemplates.MultiObjectiveProblem_Template; 261 261 codeTemplate = codeTemplate.Replace(ENCODING_NAMESPACE, "HeuristicLab.Encodings.RealVectorEncoding"); 262 262 codeTemplate = codeTemplate.Replace(ENCODING_CLASS, "RealVectorEncoding"); … … 270 270 } 271 271 272 //[Item("Permutation Programmable Problem (multi-objective)", "Represents a permutation multi-objective problem that can be programmed with a script.")] 273 //[Creatable(CreatableAttribute.Categories.Problems, Priority = 100)] 274 //[StorableClass] 275 //public sealed class MultiObjectivePermutationProgrammableProblem : MultiObjectiveProgrammableProblem<PermutationEncoding, Permutation> { 276 277 // [StorableConstructor] 278 // private MultiObjectivePermutationProgrammableProblem(bool deserializing) : base(deserializing) { } 279 // private MultiObjectivePermutationProgrammableProblem(MultiObjectivePermutationProgrammableProblem original, Cloner cloner) : base(original, cloner) { } 280 // public MultiObjectivePermutationProgrammableProblem() 281 // : base(string.Format(ScriptTemplates.CompiledMultiObjectiveProblemDefinition, "HeuristicLab.Encodings.PermutationEncoding", "PermutationEncoding", "Permutation")) { } 282 283 // public override IDeepCloneable Clone(Cloner cloner) { 284 // return new MultiObjectivePermutationProgrammableProblem(this, cloner); 285 // } 286 //} 272 [Item("Permutation Problem (multi-objective)", "Represents a permutation multi-objective problem that can be programmed with a script.")] 273 [Creatable(CreatableAttribute.Categories.Problems, Priority = 100)] 274 [StorableClass] 275 public sealed class MultiObjectivePermutationProgrammableProblem : MultiObjectiveProgrammableProblem<PermutationEncoding, Permutation> { 276 277 [StorableConstructor] 278 private MultiObjectivePermutationProgrammableProblem(bool deserializing) : base(deserializing) { } 279 private MultiObjectivePermutationProgrammableProblem(MultiObjectivePermutationProgrammableProblem original, Cloner cloner) : base(original, cloner) { } 280 public MultiObjectivePermutationProgrammableProblem() 281 : base() { 282 var codeTemplate = ScriptTemplates.MultiObjectiveProblem_Template; 283 codeTemplate = codeTemplate.Replace(ENCODING_NAMESPACE, "HeuristicLab.Encodings.PermutationEncoding"); 284 codeTemplate = codeTemplate.Replace(ENCODING_CLASS, "PermutationEncoding"); 285 codeTemplate = codeTemplate.Replace(SOLUTION_CLASS, "Permutation"); 286 ProblemScript.Code = codeTemplate; 287 } 288 289 public override IDeepCloneable Clone(Cloner cloner) { 290 return new MultiObjectivePermutationProgrammableProblem(this, cloner); 291 } 292 } 287 293 288 294 //[Item("Symbolic Expression Tree Programmable Problem (multi-objective)", "Represents a symbolic expression tree multi-objective problem that can be programmed with a script.")] -
branches/ProblemRefactoring/HeuristicLab.Problems.Programmable/3.3/Templates/MultiObjectiveCombinedEncodingProblem_Template.cs
r13363 r13373 5 5 using HeuristicLab.Core; 6 6 using HeuristicLab.Data; 7 using ENCODING_NAMESPACE;8 7 using HeuristicLab.Optimization; 9 8 using HeuristicLab.Problems.Programmable; 9 //using HeuristicLab.Encodings.BinaryVectorEncoding; 10 //using HeuristicLab.Encodings.IntegerVectorEncoding; 11 //using HeuristicLab.Encodings.RealVectorEncoding; 12 //using HeuristicLab.Encodings.PermutationEncoding; 13 //using HeuristicLab.Encodings.LinearLinkageEncoding; 14 //using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding; 10 15 11 16 namespace HeuristicLab.Problems.Programmable { 12 public class CompiledSingleObjectiveProblemDefinition : CompiledMultiObjectiveProblemDefinition< ENCODING_CLASS, SOLUTION_CLASS> {13 public override bool[] Maximization { get { return new[] { false, false }; } }17 public class CompiledSingleObjectiveProblemDefinition : CompiledMultiObjectiveProblemDefinition<CombinedEncoding, CombinedSolution> { 18 public override bool[] Maximization { get { return new[] { true, false }; } } 14 19 15 20 public override void Initialize() { … … 17 22 // Define e.g. the length of the solution encoding or the solution creator by modifying the Encoding property 18 23 // Add additional initialization code e.g. private variables that you need for evaluating 24 //Encoding.Add(new BinaryVectorEncoding("b") { Length = 10 }); 25 //Encoding.Add(new IntegerVectorEncoding("i") { Length = 10, Bounds = new int[,] { { -100, 100 } } }); 26 //Encoding.Add(new RealVectorEncoding("r") { Length = 10, Bounds = new double[,] { { -100, 100 } } }); 27 //Encoding.Add(new PermutationEncoding("p") { Length = 20, PermutationType = PermutationTypes.Absolute }); 28 //Encoding.Add(new LinearLinkageEncoding("lle") { Length = 30 }); 29 //Encoding.Add(new SymbolicExpressionTreeEncoding("tree") { ... }); 19 30 } 20 31 21 public override double[] Evaluate( SOLUTION_CLASSsolution, IRandom random) {32 public override double[] Evaluate(CombinedSolution solution, IRandom random) { 22 33 // Use vars.yourVariable to access variables in the variable store i.e. yourVariable 23 34 var quality = new[] { 0.0, 0.0 }; 35 // var b = solution.GetSolution<BinaryVector>("b"); 36 // quality[0] = b.Count(x => x); // one max! 37 // var r = solution.GetSolution<RealVector>("r"); 38 // quality[1] = r.Select((i, v) => new { Idx = i, Val = v }).Sum(x => b[x.Idx] ? x.Val * x.Val : 0.0); // sphere 39 40 // NOTE: Check the Maximization property above (true or false)! 24 41 return quality; 25 42 } 26 43 27 public override void Analyze( SOLUTION_CLASS[] solution, double[][] qualities, ResultCollection results, IRandom random) {44 public override void Analyze(CombinedSolution[] solutions, double[][] qualities, ResultCollection results, IRandom random) { 28 45 // Use vars.yourVariable to access variables in the variable store i.e. yourVariable 29 46 // Write or update results given the range of vectors and resulting qualities 30 // Uncomment the following lines if you want to retrieve the best individual 31 32 //var orderedIndividuals = individuals.Zip(qualities, (i, q) => new { Individual = i, Quality = q }).OrderBy(z => z.Quality); 33 //var best = Maximization ? orderedIndividuals.Last().Individual : orderedIndividuals.First().Individual; 34 35 //if (!results.ContainsKey("Best Solution")) { 36 // results.Add(new Result("Best Solution", typeof(SOLUTION_CLASS))); 37 //} 38 //results["Best Solution"].Value = (IItem)best.Clone(); 47 // Uncomment the following lines if you want to retrieve the best solution 39 48 } 40 49 41 public override IEnumerable< SOLUTION_CLASS> GetNeighbors(SOLUTION_CLASS individual, IRandom random) {50 public override IEnumerable<CombinedSolution> GetNeighbors(CombinedSolution solution, IRandom random) { 42 51 // Use vars.yourVariable to access variables in the variable store i.e. yourVariable 43 52 // Create new vectors, based on the given one that represent small changes … … 46 55 // Algorithm will draw only a finite amount of samples 47 56 // Change to a for-loop to return a concrete amount of neighbors 48 var neighbor = ( SOLUTION_CLASS)individual.Clone();57 var neighbor = (CombinedSolution)solution.Clone(); 49 58 // modify the solution specified as neighbor 50 59 yield return neighbor; -
branches/ProblemRefactoring/HeuristicLab.Problems.Programmable/3.3/Templates/MultiObjectiveProblem_Template.cs
r13372 r13373 16 16 // Use vars.yourVariable to access variables in the variable store i.e. yourVariable 17 17 // Define e.g. the length of the solution encoding or the solution creator by modifying the Encoding property 18 // Encoding.Length = 100; 18 19 // Add additional initialization code e.g. private variables that you need for evaluating 19 20 } … … 25 26 } 26 27 27 public override void Analyze(SOLUTION_CLASS[] solution , double[][] qualities, ResultCollection results, IRandom random) {28 public override void Analyze(SOLUTION_CLASS[] solutions, double[][] qualities, ResultCollection results, IRandom random) { 28 29 // Use vars.yourVariable to access variables in the variable store i.e. yourVariable 29 30 // Write or update results given the range of vectors and resulting qualities 30 // Uncomment the following lines if you want to retrieve the best individual31 32 //var orderedIndividuals = individuals.Zip(qualities, (i, q) => new { Individual = i, Quality = q }).OrderBy(z => z.Quality);33 //var best = Maximization ? orderedIndividuals.Last().Individual : orderedIndividuals.First().Individual;34 35 //if (!results.ContainsKey("Best Solution")) {36 // results.Add(new Result("Best Solution", typeof(SOLUTION_CLASS)));37 //}38 //results["Best Solution"].Value = (IItem)best.Clone();39 31 } 40 32 41 public override IEnumerable<SOLUTION_CLASS> GetNeighbors(SOLUTION_CLASS individual, IRandom random) {33 public override IEnumerable<SOLUTION_CLASS> GetNeighbors(SOLUTION_CLASS solution, IRandom random) { 42 34 // Use vars.yourVariable to access variables in the variable store i.e. yourVariable 43 35 // Create new vectors, based on the given one that represent small changes … … 46 38 // Algorithm will draw only a finite amount of samples 47 39 // Change to a for-loop to return a concrete amount of neighbors 48 var neighbor = (SOLUTION_CLASS) individual.Clone();40 var neighbor = (SOLUTION_CLASS)solution.Clone(); 49 41 // modify the solution specified as neighbor 50 42 yield return neighbor; -
branches/ProblemRefactoring/HeuristicLab.Problems.Programmable/3.3/Templates/ScriptTemplates.resx
r13348 r13373 119 119 </resheader> 120 120 <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 121 <data name=" CompiledMultiObjectiveProblemDefinition_Template" type="System.Resources.ResXFileRef, System.Windows.Forms">122 <value> CompiledMultiObjectiveProblemDefinition_Template.cs;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>121 <data name="MultiObjectiveCombinedEncodingProblem_Template" type="System.Resources.ResXFileRef, System.Windows.Forms"> 122 <value>MultiObjectiveCombinedEncodingProblem_Template.cs;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value> 123 123 </data> 124 <data name="CompiledSingleObjectiveProblemDefinition_Template" type="System.Resources.ResXFileRef, System.Windows.Forms"> 125 <value>CompiledSingleObjectiveProblemDefinition_Template.cs;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value> 124 <data name="MultiObjectiveProblem_Template" type="System.Resources.ResXFileRef, System.Windows.Forms"> 125 <value>MultiObjectiveProblem_Template.cs;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value> 126 </data> 127 <data name="SingleObjectiveCombinedEncodingProblem_Template" type="System.Resources.ResXFileRef, System.Windows.Forms"> 128 <value>SingleObjectiveCombinedEncodingProblem_Template.cs;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value> 129 </data> 130 <data name="SingleObjectiveProblem_Template" type="System.Resources.ResXFileRef, System.Windows.Forms"> 131 <value>SingleObjectiveProblem_Template.cs;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value> 126 132 </data> 127 133 </root> -
branches/ProblemRefactoring/HeuristicLab.Problems.Programmable/3.3/Templates/SingleObjectiveCombinedEncodingProblem_Template.cs
r13363 r13373 5 5 using HeuristicLab.Core; 6 6 using HeuristicLab.Data; 7 using ENCODING_NAMESPACE;8 7 using HeuristicLab.Optimization; 9 8 using HeuristicLab.Problems.Programmable; 9 //using HeuristicLab.Encodings.BinaryVectorEncoding; 10 //using HeuristicLab.Encodings.IntegerVectorEncoding; 11 //using HeuristicLab.Encodings.RealVectorEncoding; 12 //using HeuristicLab.Encodings.PermutationEncoding; 13 //using HeuristicLab.Encodings.LinearLinkageEncoding; 14 //using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding; 10 15 11 16 namespace HeuristicLab.Problems.Programmable { 12 public class CompiledSingleObjectiveProblemDefinition : CompiledSingleObjectiveProblemDefinition< ENCODING_CLASS, SOLUTION_CLASS> {13 public override bool Maximization { get { return false; } }17 public class CompiledSingleObjectiveProblemDefinition : CompiledSingleObjectiveProblemDefinition<CombinedEncoding, CombinedSolution> { 18 public override bool Maximization { get { return true; } } 14 19 15 20 public override void Initialize() { … … 17 22 // Define e.g. the length of the solution encoding or the solution creator by modifying the Encoding property 18 23 // Add additional initialization code e.g. private variables that you need for evaluating 24 //Encoding.Add(new BinaryVectorEncoding("b") { Length = 10 }); 25 //Encoding.Add(new IntegerVectorEncoding("i") { Length = 10, Bounds = new int[,] { { -100, 100 } } }); 26 //Encoding.Add(new RealVectorEncoding("r") { Length = 10, Bounds = new double[,] { { -100, 100 } } }); 27 //Encoding.Add(new PermutationEncoding("p") { Length = 20, PermutationType = PermutationTypes.Absolute }); 28 //Encoding.Add(new LinearLinkageEncoding("lle") { Length = 30 }); 29 //Encoding.Add(new SymbolicExpressionTreeEncoding("tree") { ... }); 19 30 } 20 31 21 public override double Evaluate( SOLUTION_CLASSsolution, IRandom random) {32 public override double Evaluate(CombinedSolution solution, IRandom random) { 22 33 // Use vars.yourVariable to access variables in the variable store i.e. yourVariable 23 34 var quality = 0.0; 35 // var b = solution.GetSolution<BinaryVector>("b"); 36 // quality = b.Count(x => x); // one max! 37 // var r = solution.GetSolution<RealVector>("r"); 38 // quality += r.Sum(x => -x * x); // sphere 39 40 // NOTE: Check the Maximization property above (true or false)! 24 41 return quality; 25 42 } 26 43 27 public override void Analyze( SOLUTION_CLASS[] solution, double[] qualities, ResultCollection results, IRandom random) {44 public override void Analyze(CombinedSolution[] solutions, double[] qualities, ResultCollection results, IRandom random) { 28 45 // Use vars.yourVariable to access variables in the variable store i.e. yourVariable 29 46 // Write or update results given the range of vectors and resulting qualities 30 // Uncomment the following lines if you want to retrieve the best individual47 // Uncomment the following lines if you want to retrieve the best solution 31 48 32 //var ordered Individuals = individuals.Zip(qualities, (i, q) => new { Individual= i, Quality = q }).OrderBy(z => z.Quality);33 //var best = Maximization ? ordered Individuals.Last().Individual : orderedIndividuals.First().Individual;49 //var orderedSolutions = solutions.Zip(qualities, (i, q) => new { Solution = i, Quality = q }).OrderBy(z => z.Quality); 50 //var best = Maximization ? orderedSolutions.Last().Solution : orderedSolutions.First().Solution; 34 51 35 52 //if (!results.ContainsKey("Best Solution")) { … … 39 56 } 40 57 41 public override IEnumerable< SOLUTION_CLASS> GetNeighbors(SOLUTION_CLASS individual, IRandom random) {58 public override IEnumerable<CombinedSolution> GetNeighbors(CombinedSolution solution, IRandom random) { 42 59 // Use vars.yourVariable to access variables in the variable store i.e. yourVariable 43 60 // Create new vectors, based on the given one that represent small changes … … 46 63 // Algorithm will draw only a finite amount of samples 47 64 // Change to a for-loop to return a concrete amount of neighbors 48 var neighbor = ( SOLUTION_CLASS)individual.Clone();65 var neighbor = (CombinedSolution)solution.Clone(); 49 66 // modify the solution specified as neighbor 50 67 yield return neighbor; -
branches/ProblemRefactoring/HeuristicLab.Problems.Programmable/3.3/Templates/SingleObjectiveProblem_Template.cs
r13363 r13373 16 16 // Use vars.yourVariable to access variables in the variable store i.e. yourVariable 17 17 // Define e.g. the length of the solution encoding or the solution creator by modifying the Encoding property 18 // Encoding.Length = 100; 18 19 // Add additional initialization code e.g. private variables that you need for evaluating 19 20 } … … 25 26 } 26 27 27 public override void Analyze(SOLUTION_CLASS[] solution , double[] qualities, ResultCollection results, IRandom random) {28 public override void Analyze(SOLUTION_CLASS[] solutions, double[] qualities, ResultCollection results, IRandom random) { 28 29 // Use vars.yourVariable to access variables in the variable store i.e. yourVariable 29 30 // Write or update results given the range of vectors and resulting qualities 30 // Uncomment the following lines if you want to retrieve the best individual31 // Uncomment the following lines if you want to retrieve the best solution 31 32 32 //var ordered Individuals = individuals.Zip(qualities, (i, q) => new { Individual= i, Quality = q }).OrderBy(z => z.Quality);33 //var best = Maximization ? ordered Individuals.Last().Individual : orderedIndividuals.First().Individual;33 //var orderedSolutions = solutions.Zip(qualities, (i, q) => new { Solution = i, Quality = q }).OrderBy(z => z.Quality); 34 //var best = Maximization ? orderedSolutions.Last().Solution : orderedSolutions.First().Solution; 34 35 35 36 //if (!results.ContainsKey("Best Solution")) { … … 39 40 } 40 41 41 public override IEnumerable<SOLUTION_CLASS> GetNeighbors(SOLUTION_CLASS individual, IRandom random) {42 public override IEnumerable<SOLUTION_CLASS> GetNeighbors(SOLUTION_CLASS solution, IRandom random) { 42 43 // Use vars.yourVariable to access variables in the variable store i.e. yourVariable 43 44 // Create new vectors, based on the given one that represent small changes … … 46 47 // Algorithm will draw only a finite amount of samples 47 48 // Change to a for-loop to return a concrete amount of neighbors 48 var neighbor = (SOLUTION_CLASS) individual.Clone();49 var neighbor = (SOLUTION_CLASS)solution.Clone(); 49 50 // modify the solution specified as neighbor 50 51 yield return neighbor;
Note: See TracChangeset
for help on using the changeset viewer.