Opened 11 years ago

Closed 11 years ago

Last modified 11 years ago

#866 closed task (done)

SimOpt Communication refactoring

Reported by: abeham Owned by: abeham
Priority: high Milestone: HeuristicLab 3.3.0
Component: Problems.ExternalEvaluation Version: 3.3
Keywords: Cc:

Description (last modified by abeham)

A number of recent developments has made refactoring the communication branch worthwile:

  1. There exist good libraries for converting data to and from e.g. JSON both on C# and Java which facilitates interlanguage communication. Even the new serialization in HeuristicLab 3.3 would allow for a JSON backend.
  2. The whole statemachine idea was nice, but hardly ever practical or useful. Google's own take on such an interface (protocol buffers) doesn't need a state machine. A simple set of messages should do it in our cases too.
  3. I have more upcoming use for this, so I'd like more comfortable configuration and handling

After discussion with swagner on this issue it was decided to use and try protocol buffers. A new problem should be created called ExternalEvaluationProblem that would allow to configure the communication means and provide an operator for collecting values which can be configured by the user. This operator would create protocol buffer messages that are sent over a driver to the external process.

Change History (22)

comment:1 Changed 11 years ago by abeham

  • Status changed from new to assigned

comment:2 Changed 11 years ago by abeham

  • Description modified (diff)

r3852

  • Added project HeuristicLab.Problems.ExternalEvaluation

comment:3 Changed 11 years ago by abeham

r3857

  • Added protobuf-csharp-port to ExtLibs

comment:4 Changed 11 years ago by abeham

r3859

  • Updated external evaluation problem
  • Added some Drivers
  • Updated message

comment:5 Changed 11 years ago by abeham

r3860

  • see previous commit

comment:6 Changed 11 years ago by abeham

r3861

  • worked on external evaluation problem

comment:7 Changed 11 years ago by abeham

r3862

  • updated external evaluation problem
  • included in build config

comment:8 Changed 11 years ago by abeham

r3864

  • Removed warning in ExternalEvaluationProblem
  • Added views project for ExternalEvaluation
  • Fixed class name of ExternalEvaluationProcessDriver

comment:9 Changed 11 years ago by abeham

r3865

  • Worked on view for ExternalEvaluationProcessDriver

comment:10 Changed 11 years ago by abeham

  • Component changed from Communication.Data to Problems.ExternalEvaluation
  • Priority changed from major to critical
  • Version changed from 3.2 to 3.3

comment:11 Changed 11 years ago by abeham

r3870

  • Updated external evaluation problem

comment:12 Changed 11 years ago by abeham

r3872

  • Updated ExternalEvaluationProblem
  • Removed the custom crossover, manipulator, and solution creator (they're replaced with the UserDefined ones)
  • Renamed all drivers to channels
  • Added a client that takes the role of the previous driver
  • Moved the BestScopeSolutionAnalyzer into Analysis (it's a generic operator after all)

comment:13 Changed 11 years ago by abeham

r3881

  • Added license headers to designer files
  • Refactored message building, to be user customizable and better extendable
    • A SolutionMessageBuilder holds several Converters
    • A Converter specifies several types to convert and a conversion method
  • ExternalEvaluator has the message builder as parameter and exposes it to the UI through the parameters collection
  • The proto file has been updated to include a length field in the array variables
  • Converters exist for all types in HeuristicLab.Data

comment:14 Changed 11 years ago by abeham

r3883

  • Added tcp channel for communicating messages
  • Removed unnecessary enabled propagation in SolutionMessageBuilderView

comment:15 Changed 11 years ago by abeham

r3890

  • Fixed EvaluationTCPChannel
    • Message delimiter and message are sent in the same call to socket.Send
  • Added EvaluationTCPChannelView

r3893

  • Fixed a bug when calculating amount of encoded bytes of a varint32

comment:16 Changed 11 years ago by abeham

r3895

  • Improved exception handling and added the client by default

comment:17 Changed 11 years ago by abeham

r3896

  • Changed error display from message box to plugin infrastructure

comment:18 Changed 11 years ago by abeham

r3897

  • Added class diagram

comment:19 Changed 11 years ago by abeham

r3898

  • VS not saving project file automatically....

comment:20 Changed 11 years ago by abeham

  • Resolution set to fixed
  • Status changed from assigned to closed

The ExternalEvaluation problem has been implemented and documentation written (DevelopersOptimizingExternalApplications). Further changes and requests should go into separate tickets.

comment:21 Changed 11 years ago by swagner

  • Milestone changed from Iteration 4 to Current

Milestone Iteration 4 deleted

comment:11 Changed 11 years ago by swagner

  • Milestone changed from Current to HeuristicLab 3.3.0

Milestone Current deleted

Note: See TracTickets for help on using tickets.