Changeset 16816 for branches/2521_ProblemRefactoring/HeuristicLab.Problems.ExternalEvaluation/3.4/MultiObjectiveExternalEvaluationProblem.cs
- Timestamp:
- 04/18/19 14:06:00 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2521_ProblemRefactoring/HeuristicLab.Problems.ExternalEvaluation/3.4/MultiObjectiveExternalEvaluationProblem.cs
r16751 r16816 26 26 using System.Threading; 27 27 using Google.ProtocolBuffers; 28 using HEAL.Attic; 28 29 using HeuristicLab.Common; 29 30 using HeuristicLab.Core; … … 31 32 using HeuristicLab.Optimization; 32 33 using HeuristicLab.Parameters; 33 using HEAL.Attic;34 34 35 35 namespace HeuristicLab.Problems.ExternalEvaluation { … … 37 37 [Creatable(CreatableAttribute.Categories.ExternalEvaluationProblems, Priority = 200)] 38 38 [StorableType("CCA50199-A6AB-4C84-B4FA-0262CAF416EC")] 39 public class MultiObjectiveExternalEvaluationProblem : MultiObjectiveProblem<IEncoding<IEncodedSolution>, IEncodedSolution>, IExternalEvaluationProblem { 39 public class MultiObjectiveExternalEvaluationProblem<TEncoding, TEncodedSolution> : MultiObjectiveProblem<TEncoding, TEncodedSolution>, IExternalEvaluationProblem 40 where TEncoding : class, IEncoding<TEncodedSolution> 41 where TEncodedSolution : class, IEncodedSolution { 40 42 41 43 public static new Image StaticItemImage { … … 53 55 get { return (IValueParameter<SolutionMessageBuilder>)Parameters["MessageBuilder"]; } 54 56 } 55 public IFixedValueParameter<MultiObjectiveOptimizationSupportScript> SupportScriptParameter { 56 get { return (IFixedValueParameter<MultiObjectiveOptimizationSupportScript>)Parameters["SupportScript"]; } 57 } 58 59 private IFixedValueParameter<BoolArray> MaximizationParameter { 60 get { return (IFixedValueParameter<BoolArray>)Parameters["Maximization"]; } 57 public IFixedValueParameter<MultiObjectiveOptimizationSupportScript<TEncodedSolution>> SupportScriptParameter { 58 get { return (IFixedValueParameter<MultiObjectiveOptimizationSupportScript<TEncodedSolution>>)Parameters["SupportScript"]; } 61 59 } 62 60 #endregion 63 61 64 62 #region Properties 65 public new IEncoding<IEncodedSolution>Encoding {63 public new TEncoding Encoding { 66 64 get { return base.Encoding; } 67 65 set { base.Encoding = value; } … … 76 74 get { return MessageBuilderParameter.Value; } 77 75 } 78 public MultiObjectiveOptimizationSupportScript OptimizationSupportScript {76 public MultiObjectiveOptimizationSupportScript<TEncodedSolution> OptimizationSupportScript { 79 77 get { return SupportScriptParameter.Value; } 80 78 } 81 private IMultiObjectiveOptimizationSupport OptimizationSupport {79 private IMultiObjectiveOptimizationSupport<TEncodedSolution> OptimizationSupport { 82 80 get { return SupportScriptParameter.Value; } 83 81 } … … 86 84 [StorableConstructor] 87 85 protected MultiObjectiveExternalEvaluationProblem(StorableConstructorFlag _) : base(_) { } 88 protected MultiObjectiveExternalEvaluationProblem(MultiObjectiveExternalEvaluationProblem original, Cloner cloner) : base(original, cloner) { }86 protected MultiObjectiveExternalEvaluationProblem(MultiObjectiveExternalEvaluationProblem<TEncoding, TEncodedSolution> original, Cloner cloner) : base(original, cloner) { } 89 87 public override IDeepCloneable Clone(Cloner cloner) { 90 return new MultiObjectiveExternalEvaluationProblem (this, cloner);88 return new MultiObjectiveExternalEvaluationProblem<TEncoding, TEncodedSolution>(this, cloner); 91 89 } 92 public MultiObjectiveExternalEvaluationProblem( )93 : base( ) {90 public MultiObjectiveExternalEvaluationProblem(TEncoding encoding) 91 : base(encoding) { 94 92 Parameters.Remove("Maximization"); // readonly in base class 95 93 Parameters.Add(new FixedValueParameter<BoolArray>("Maximization", "Set to false if the problem should be minimized.", new BoolArray())); … … 97 95 Parameters.Add(new ValueParameter<CheckedItemCollection<IEvaluationServiceClient>>("Clients", "The clients that are used to communicate with the external application.", new CheckedItemCollection<IEvaluationServiceClient>() { new EvaluationServiceClient() })); 98 96 Parameters.Add(new ValueParameter<SolutionMessageBuilder>("MessageBuilder", "The message builder that converts from HeuristicLab objects to SolutionMessage representation.", new SolutionMessageBuilder()) { Hidden = true }); 99 Parameters.Add(new FixedValueParameter<MultiObjectiveOptimizationSupportScript >("SupportScript", "A script that can analyze the results of the optimization.", new MultiObjectiveOptimizationSupportScript()));97 Parameters.Add(new FixedValueParameter<MultiObjectiveOptimizationSupportScript<TEncodedSolution>>("SupportScript", "A script that can analyze the results of the optimization.", new MultiObjectiveOptimizationSupportScript<TEncodedSolution>())); 100 98 } 101 99 … … 114 112 } 115 113 116 public override double[] Evaluate( IEncodedSolution individual, IRandom random) {114 public override double[] Evaluate(TEncodedSolution individual, IRandom random) { 117 115 var qualityMessage = Evaluate(BuildSolutionMessage(individual)); 118 116 if (!qualityMessage.HasExtension(MultiObjectiveQualityMessage.QualityMessage_)) … … 126 124 } 127 125 128 public override void Analyze( IEncodedSolution[] individuals, double[][] qualities, ResultCollection results, IRandom random) {126 public override void Analyze(TEncodedSolution[] individuals, double[][] qualities, ResultCollection results, IRandom random) { 129 127 OptimizationSupport.Analyze(individuals, qualities, results, random); 130 128 } … … 164 162 } 165 163 166 private SolutionMessage BuildSolutionMessage( IEncodedSolution solution, int solutionId = 0) {164 private SolutionMessage BuildSolutionMessage(TEncodedSolution solution, int solutionId = 0) { 167 165 lock (clientLock) { 168 166 SolutionMessage.Builder protobufBuilder = SolutionMessage.CreateBuilder();
Note: See TracChangeset
for help on using the changeset viewer.