Free cookie consent management tool by TermsFeed Policy Generator

source: branches/2817-BinPackingSpeedup/HeuristicLab.Problems.ExternalEvaluation/3.4/Protos/ExternalEvaluationMessages.proto

Last change on this file 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
Line 
1package HeuristicLab.Problems.ExternalEvaluation;
2option java_package = "com.heuristiclab.problems.externalevaluation";
3
4message SolutionMessage {
5  required int32 solutionId = 1;
6 
7  message IntegerVariable {
8    required string name = 1;
9    optional int32 data = 2;
10  }
11  repeated IntegerVariable integerVars = 2;
12 
13  message IntegerArrayVariable {
14    required string name = 1;
15    repeated int32 data = 2;
16    optional int32 length = 3;
17  }
18  repeated IntegerArrayVariable integerArrayVars = 3;
19 
20  message DoubleVariable {
21    required string name = 1;
22    optional double data = 2;
23  }
24  repeated DoubleVariable doubleVars = 4;
25 
26  message DoubleArrayVariable {
27    required string name = 1;
28    repeated double data = 2;
29    optional int32 length = 3;
30  }
31  repeated DoubleArrayVariable doubleArrayVars = 5;
32 
33  message BoolVariable {
34    required string name = 1;
35    optional bool data = 2;
36  }
37  repeated BoolVariable boolVars = 6;
38 
39  message BoolArrayVariable {
40    required string name = 1;
41    repeated bool data = 2;
42    optional int32 length = 3;
43  }
44  repeated BoolArrayVariable boolArrayVars = 7;
45 
46  message StringVariable {
47    required string name = 1;
48    optional string data = 2;
49  }
50  repeated StringVariable stringVars = 8;
51 
52  message StringArrayVariable {
53    required string name = 1;
54    repeated string data = 2;
55    optional int32 length = 3;
56  }
57  repeated StringArrayVariable stringArrayVars = 9;
58 
59  message RawVariable {
60    required string name = 1;
61    optional bytes data = 2;
62  }
63  repeated RawVariable rawVars = 10;
64}
65
66// Nested Extensions http://www.indelible.org/ink/protobuf-polymorphism/
67message QualityMessage {
68  required int32 solutionId = 1;
69  enum Type {
70    SingleObjectiveQualityMessage = 1;
71    MultiObjectiveQualityMessage = 2;
72  }
73  required Type type = 2;
74  extensions 1000 to max;
75}
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
90 
91service EvaluationService {
92  rpc EvaluateSingleObjective (SolutionMessage) returns (SingleObjectiveQualityMessage);
93  rpc EvaluateMultiObjectives (SolutionMessage) returns (MultiObjectiveQualityMessage);
94}
Note: See TracBrowser for help on using the repository browser.