Changeset 11893 for branches/ProgrammableProblem/HeuristicLab.Problems.ExternalEvaluation/3.4/ExternalEvaluationProblem.cs
- Timestamp:
- 02/04/15 21:38:28 (9 years ago)
- Location:
- branches/ProgrammableProblem/HeuristicLab.Problems.ExternalEvaluation/3.4
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/ProgrammableProblem/HeuristicLab.Problems.ExternalEvaluation/3.4
- Property svn:ignore
-
old new 5 5 *.vs10x 6 6 Plugin.cs 7 *.DotSettings
-
- Property svn:ignore
-
branches/ProgrammableProblem/HeuristicLab.Problems.ExternalEvaluation/3.4/ExternalEvaluationProblem.cs
r11892 r11893 29 29 using HeuristicLab.Core; 30 30 using HeuristicLab.Data; 31 using HeuristicLab.Optimization; 31 32 using HeuristicLab.Parameters; 32 33 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; … … 54 55 get { return (IValueParameter<SolutionMessageBuilder>)Parameters["MessageBuilder"]; } 55 56 } 57 public IFixedValueParameter<SingleObjectiveOptimizationSupportScript> SupportScriptParameter { 58 get { return (IFixedValueParameter<SingleObjectiveOptimizationSupportScript>)Parameters["SupportScript"]; } 59 } 56 60 57 61 public EvaluationCache Cache { … … 64 68 get { return MessageBuilderParameter.Value; } 65 69 } 70 public SingleObjectiveOptimizationSupportScript OptimizationSupportScript { 71 get { return SupportScriptParameter.Value; } 72 } 73 private ISingleObjectiveOptimizationSupport OptimizationSupport { 74 get { return SupportScriptParameter.Value; } 75 } 66 76 67 77 [StorableConstructor] 68 78 private ExternalEvaluationProblem(bool deserializing) : base(deserializing) { } 69 private ExternalEvaluationProblem(ExternalEvaluationProblem original, Cloner cloner) : base(original, cloner) { } 79 80 private ExternalEvaluationProblem(ExternalEvaluationProblem original, Cloner cloner) 81 : base(original, cloner) { 82 try { 83 OptimizationSupportScript.Compile(); 84 } catch (SingleObjectiveOptimizationSupportException ex) { 85 PluginInfrastructure.ErrorHandling.ShowErrorDialog("Support script doesn't compile.", ex); 86 } 87 } 70 88 public override IDeepCloneable Clone(Cloner cloner) { 71 89 return new ExternalEvaluationProblem(this, cloner); … … 76 94 Parameters.Add(new ValueParameter<CheckedItemCollection<IEvaluationServiceClient>>("Clients", "The clients that are used to communicate with the external application.", new CheckedItemCollection<IEvaluationServiceClient>() { new EvaluationServiceClient() })); 77 95 Parameters.Add(new ValueParameter<SolutionMessageBuilder>("MessageBuilder", "The message builder that converts from HeuristicLab objects to SolutionMessage representation.", new SolutionMessageBuilder())); 96 Parameters.Add(new FixedValueParameter<SingleObjectiveOptimizationSupportScript>("SupportScript", "A script that can provide neighborhood and analyze the results of the optimization.", new SingleObjectiveOptimizationSupportScript())); 97 } 98 99 [StorableHook(HookType.AfterDeserialization)] 100 private void AfterDeserialization() { 101 try { 102 OptimizationSupportScript.Compile(); 103 } catch (SingleObjectiveOptimizationSupportException ex) { 104 PluginInfrastructure.ErrorHandling.ShowErrorDialog("Support script doesn't compile.", ex); 105 } 78 106 } 79 107 … … 85 113 return Cache == null ? EvaluateOnNextAvailableClient(BuildSolutionMessage(individual)).Quality 86 114 : Cache.GetValue(BuildSolutionMessage(individual), m => EvaluateOnNextAvailableClient(m).Quality); 115 } 116 117 public override void Analyze(Individual[] individuals, double[] qualities, ResultCollection results, IRandom random) { 118 OptimizationSupport.Analyze(individuals, qualities, results, random); 119 } 120 121 public override IEnumerable<Individual> GetNeighbors(Individual individual, IRandom random) { 122 return OptimizationSupport.GetNeighbors(individual, random); 87 123 } 88 124
Note: See TracChangeset
for help on using the changeset viewer.