Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
05/06/11 15:08:57 (13 years ago)
Author:
epitzer
Message:

Add new CachedExternalEvaluator with replaceable permanent cache of all evaluated solutions (#1516)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Problems.ExternalEvaluation/3.3/ExternalEvaluator.cs

    r5445 r6140  
    3232  [StorableClass]
    3333  public class ExternalEvaluator : ValuesCollector, IExternalEvaluationProblemEvaluator {
     34
    3435    public ILookupParameter<DoubleValue> QualityParameter {
    3536      get { return (ILookupParameter<DoubleValue>)Parameters["Quality"]; }
     
    4344    }
    4445
    45     private SolutionMessageBuilder MessageBuilder {
     46    protected SolutionMessageBuilder MessageBuilder {
    4647      get { return MessageBuilderParameter.Value; }
    4748    }
     
    6162
    6263    public override IOperation Apply() {
     64      SolutionMessage message = BuildSolutionMessage();
     65
    6366      IEvaluationServiceClient client = ClientParameter.ActualValue;
     67      QualityMessage answer = client.Evaluate(message);
     68
     69      if (QualityParameter.ActualValue == null)
     70        QualityParameter.ActualValue = new DoubleValue(answer.Quality);
     71      else QualityParameter.ActualValue.Value = answer.Quality;
     72
     73      return base.Apply();
     74    }
     75
     76    protected virtual SolutionMessage BuildSolutionMessage() {
    6477      SolutionMessage.Builder protobufBuilder = SolutionMessage.CreateBuilder();
    6578      protobufBuilder.SolutionId = 0;
     
    7184          try {
    7285            MessageBuilder.AddToMessage(value, name, protobufBuilder);
    73           }
    74           catch (ArgumentException ex) {
     86          } catch (ArgumentException ex) {
    7587            throw new InvalidOperationException("ERROR in " + Name + ": Parameter " + name + " cannot be added to the message.", ex);
    7688          }
    7789        }
    7890      }
    79       QualityMessage answer = client.Evaluate(protobufBuilder.Build());
    80       if (QualityParameter.ActualValue == null)
    81         QualityParameter.ActualValue = new DoubleValue(answer.Quality);
    82       else QualityParameter.ActualValue.Value = answer.Quality;
    83 
    84       return base.Apply();
     91      return protobufBuilder.Build();
    8592    }
    8693  }
Note: See TracChangeset for help on using the changeset viewer.