Free cookie consent management tool by TermsFeed Policy Generator

source: trunk/sources/HeuristicLab.Problems.ExternalEvaluation/3.4/Protos/ExternalEvaluationMessages.proto @ 15296

Last change on this file since 15296 was 13180, checked in by pfleck, 9 years ago

#1674

  • ProtoBuff QualityMessages
    • Changed the QualityMessage to be able to be used for single- and multi-objective problems.
    • The new SingleObjectiveQualityMessage and MultiObjectiveQualityMessage now "inherits" from QualityMessages to be able to be used in a polymorph manner.
    • This is done via protobuf's nested extensions (see http://www.indelible.org/ink/protobuf-polymorphism/).
  • EvaluationCache
    • The EvaluationCache now now stores the QualityMessage instead of a single double. This way the cache can be used for single- and multi-objective problems and additionally opens the possibility to extend the quality message with any data. (previously extended data was lost when the cache was persisted and loaded again)
    • When deserializing an older version of the cache a new single objective quality message is created from the double value. This way, no compatibility is broken and version must not be incremented.
  • Adapted the ExternalEvaluationProblem to the changes of the EvaluationCache and the QualityMessage.
  • Added a MultiObjectiveExternalEvaluationProblem on basis of the ExternalEvaluationProblem and added a IExternalEvaluationProblem interface.
File size: 2.5 KB
RevLine 
[3857]1package HeuristicLab.Problems.ExternalEvaluation;
[3852]2option java_package = "com.heuristiclab.problems.externalevaluation";
3
[3859]4message SolutionMessage {
5  required int32 solutionId = 1;
6 
[3857]7  message IntegerVariable {
[3852]8    required string name = 1;
9    optional int32 data = 2;
10  }
[3859]11  repeated IntegerVariable integerVars = 2;
[3852]12 
[3857]13  message IntegerArrayVariable {
[3852]14    required string name = 1;
[3859]15    repeated int32 data = 2;
[3881]16    optional int32 length = 3;
[3852]17  }
[3859]18  repeated IntegerArrayVariable integerArrayVars = 3;
[3852]19 
[3857]20  message DoubleVariable {
[3852]21    required string name = 1;
22    optional double data = 2;
23  }
[3859]24  repeated DoubleVariable doubleVars = 4;
[3852]25 
[3857]26  message DoubleArrayVariable {
[3852]27    required string name = 1;
28    repeated double data = 2;
[3881]29    optional int32 length = 3;
[3852]30  }
[3859]31  repeated DoubleArrayVariable doubleArrayVars = 5;
[3852]32 
[3857]33  message BoolVariable {
[3852]34    required string name = 1;
35    optional bool data = 2;
36  }
[3859]37  repeated BoolVariable boolVars = 6;
[3852]38 
[3857]39  message BoolArrayVariable {
[3852]40    required string name = 1;
41    repeated bool data = 2;
[3881]42    optional int32 length = 3;
[3852]43  }
[3859]44  repeated BoolArrayVariable boolArrayVars = 7;
[3852]45 
[3857]46  message StringVariable {
[3852]47    required string name = 1;
48    optional string data = 2;
49  }
[3859]50  repeated StringVariable stringVars = 8;
[3852]51 
[3857]52  message StringArrayVariable {
[3852]53    required string name = 1;
54    repeated string data = 2;
[3881]55    optional int32 length = 3;
[3852]56  }
[3859]57  repeated StringArrayVariable stringArrayVars = 9;
[3852]58 
[3857]59  message RawVariable {
[3852]60    required string name = 1;
61    optional bytes data = 2;
62  }
[3859]63  repeated RawVariable rawVars = 10;
[3857]64}
65
[13180]66// Nested Extensions http://www.indelible.org/ink/protobuf-polymorphism/
[3859]67message QualityMessage {
68  required int32 solutionId = 1;
[13180]69  enum Type {
70    SingleObjectiveQualityMessage = 1;
71    MultiObjectiveQualityMessage = 2;
72  }
73  required Type type = 2;
[8298]74  extensions 1000 to max;
[3859]75}
[13180]76
77message SingleObjectiveQualityMessage {
78  extend QualityMessage {
79    required SingleObjectiveQualityMessage qualityMessage = 1000;  // unique QualityMessage extension number
80  }
81  required double quality = 1;
82}
83message MultiObjectiveQualityMessage {
84  extend QualityMessage {
85    required MultiObjectiveQualityMessage qualityMessage = 1001;  // unique QualityMessage extension number
86  }
87  repeated double qualities = 1;
88}
89
[3859]90 
[3872]91service EvaluationService {
[13180]92  rpc EvaluateSingleObjective (SolutionMessage) returns (SingleObjectiveQualityMessage);
93  rpc EvaluateMultiObjectives (SolutionMessage) returns (MultiObjectiveQualityMessage);
[3852]94}
Note: See TracBrowser for help on using the repository browser.