Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
02/04/15 21:38:28 (9 years ago)
Author:
abeham
Message:

#2174:

  • Added possibility to define neighborhood and analyze function for external evaluation problems
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  
        55*.vs10x
        66Plugin.cs
         7*.DotSettings
  • branches/ProgrammableProblem/HeuristicLab.Problems.ExternalEvaluation/3.4/ExternalEvaluationProblem.cs

    r11892 r11893  
    2929using HeuristicLab.Core;
    3030using HeuristicLab.Data;
     31using HeuristicLab.Optimization;
    3132using HeuristicLab.Parameters;
    3233using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
     
    5455      get { return (IValueParameter<SolutionMessageBuilder>)Parameters["MessageBuilder"]; }
    5556    }
     57    public IFixedValueParameter<SingleObjectiveOptimizationSupportScript> SupportScriptParameter {
     58      get { return (IFixedValueParameter<SingleObjectiveOptimizationSupportScript>)Parameters["SupportScript"]; }
     59    }
    5660
    5761    public EvaluationCache Cache {
     
    6468      get { return MessageBuilderParameter.Value; }
    6569    }
     70    public SingleObjectiveOptimizationSupportScript OptimizationSupportScript {
     71      get { return SupportScriptParameter.Value; }
     72    }
     73    private ISingleObjectiveOptimizationSupport OptimizationSupport {
     74      get { return SupportScriptParameter.Value; }
     75    }
    6676
    6777    [StorableConstructor]
    6878    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    }
    7088    public override IDeepCloneable Clone(Cloner cloner) {
    7189      return new ExternalEvaluationProblem(this, cloner);
     
    7694      Parameters.Add(new ValueParameter<CheckedItemCollection<IEvaluationServiceClient>>("Clients", "The clients that are used to communicate with the external application.", new CheckedItemCollection<IEvaluationServiceClient>() { new EvaluationServiceClient() }));
    7795      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      }
    78106    }
    79107
     
    85113      return Cache == null ? EvaluateOnNextAvailableClient(BuildSolutionMessage(individual)).Quality
    86114        : 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);
    87123    }
    88124
Note: See TracChangeset for help on using the changeset viewer.