Allow to extend programmable problem with encoding specific operations
|Reported by:||abeham||Owned by:|
When combining a programmable problem with a multi encoding often the use case arises that the elements of the multi encoding should be manipulated jointly. The multi encoding provides only independent manipulations and the programmable problem cannot provide additional means to specify such manipulations currently. Such joint manipulations are assumed to be of high complexity and would need to be provided by the user as C# code.
It has been discussed (mkommend, jkarder, abeham), that this feature can be realized by allowing the dynamically created problem instance to implement several interfaces. The interface ISingleObjectiveProblemDefinition should be limited to just Maximize, Evaluate and Analyze. The method GetNeighbors, which was never fully fit in its current place anyway, and several other such operations (Crossover, Manipulate, etc.) should be delegated to other interfaces which must be implemented by the problem. To each interface an operator exists that is instantiated by the programmable problem host if the compiled instance implements it.