Free cookie consent management tool by TermsFeed Policy Generator

Changes between Version 8 and Version 9 of Documentation/Howto/OptimizeExternalApplications


Ignore:
Timestamp:
06/04/10 18:49:10 (14 years ago)
Author:
abeham
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Documentation/Howto/OptimizeExternalApplications

    v8 v9  
    139139In the tutorial section it will be shown how to configure these parameters to solve a real problem.
    140140
     141For completeness reasons a class diagram of the !HeuristicLab.Problems.!ExternalEvaluation namespace shall also be given. The interaction of the classes shall be explained and the operators described.
     142
     143[[Image(ExternalEvaluationCD.png)]]
     144
     145The equivalent to the channels in the java service framework are implemented also in C# for use in HeuristicLab. There is an Interface //IEvaluationChannel// that defines a channel. As can be seen from the class diagram the methods that each channel has to provide are exactly the same as in the java service framework. Basically a channel can be //opened// and //closed// and there are two functions for //sending// and //receiving//. In HeuristicLab however there exists a third channel, the `EvaluationProcessChannel`, that provides a convenience wrapper around an `EvaluationStreamChannel` that is attached to the stdin and stdout streams of a process started from HeuristicLab.
     146
     147Also shown in the class diagram are a number of converters that are used to convert HeuristicLab data types, such as the variables that contain the solution representation, to a `SolutionMessage`. The `SolutionMessageBuilder` is the class that contains a number of converters and allows the `ExternalEvaluator` to construct the message. Which converter shall be used can be configured in the GUI when creating the `ExternalEvaluationProblem` and the converters are naturally extensible. A user can define an own converter implementing `IItemToSolutionMessageConverter` and add it to the `SolutionMessageBuilder` in the GUI. By default the `SolutionMessageBuilder` is configured with all the converters that can be seen which in turn cover all the data types in the !HeuristicLab.Data namespace. The solution representations in !HeuristicLab.Encodings are derived from those, so the converters also cover them too. But any solution representation not derived directly from one of the objects in !HeuristicLab.Data naturally requires an own converter (e.g. !HeuristicLab.Encodings.!SymbolicExpressionTree is such a type). Next in the class diagram is the `EvaluationServiceClient` which holds a Channel and allows the `ExternalEvaluator` to communicate with the remote process. Finally, there is a class that describes the `ExternalEvaluationPRoblem` itself, as well as the `QualityMessage` (the expected answer from the service) and the `SolutionMessage`. These two are automatically created by parsing the !ExternalEvaluationMessages.proto file with the compiler tools of Google's protocol buffer framework.
     148
    141149== Tutorial ==