51 | | An evaluator is just a normal HL operator that implements at least either ISingleObjectiveEvaluator or IMultiObjectiveEvaluator. |
52 | | This is important as an evaluator should at least have a QualityParameter that is used for returning the result. |
53 | | Normally, as evaluators are problem-specific, there are problem specific interfaces and may also base-classes. |
54 | | So in this example, we therefore have the IOneMaxEvaluator. But if you have e.g. a look at the test-functions problem, you can see that there is a base-class (SingleObjectiveTestFunctionProblemEvaluator) that you should use. |
| 51 | An evaluator is just a normal HL operator that implements at least either `ISingleObjectiveEvaluator` or `IMultiObjectiveEvaluator`. |
| 52 | This is important as an evaluator must have a `QualityParameter` that is used for returning the result. |
| 53 | Normally, as evaluators are problem-specific, there are problem-specific interfaces and may also base-classes. |
| 54 | So in this example, we have the `IOneMaxEvaluator`. But if you have e.g. a look at the test-functions problem, you can see that there is a base-class (`SingleObjectiveTestFunctionProblemEvaluator`) that you should use. |
59 | | The evaluator has two parameters: The before-mentioned Quality parameter and the BinaryVector parameter. |
60 | | The second one is again problem specific. If you think again of test functions, this would not be of type BinaryVector but RealVector. |
61 | | The name of this parameter, now in this case the same as the type name. |
62 | | Now how the solutions are then really called in the scopes is set by the problem and may be different for every problem. |
63 | | Normally the problem looks up all operators and tells them this name. This may not work for operators that you add after you created a new problem in HL, so always check if the parameters of your evaluator are correctly named an set it otherwise yourself. |
| 59 | The evaluator has two parameters: The before-mentioned `Quality` parameter and the `BinaryVector` parameter. |
| 60 | The second one is again problem specific. If you think again of test functions, this would not be of type `BinaryVector` but `RealVector`. |
| 61 | So these are the names how the parameters are called. Now how the solutions are really called in the scopes is set by the problem and may be different for every problem. |
| 62 | Normally, the problem looks up all operators and tells them the real (actual) name. |
| 63 | You have to be cautions here as this may not work for operators that you add after you created a new problem in HL, so always check if the parameters of your evaluator are correctly named an set and otherwise set them yourself. |
74 | | Here you can see all the scopes, each containing the solution and, if they were already evaluated, the quality value named as discussed before. |
75 | | So if the evaluator was configured with the correct names, it can look up the solution (first line in InstrumentedApply()), compute it's quality value and return it by setting the quality parameter. |
| 74 | Here you can see all the scopes, each containing the solution and, if they were already evaluated, the quality value named as discussed before. |
| 75 | So if the evaluator was configured with the correct names, it can look up the solution (first line in InstrumentedApply()) through the `BinaryVector` parameter, compute the quality value and return it by setting the quality parameter. |