Multi encoding operators are not parameterized correctly
|Reported by:||abeham||Owned by:||architects|
Please bear with me, the problem requires some understanding of the implemented algorithms, encodings and the parameter lookup and wiring. I'll try to explain:
The problem surfaces when using a multi-encoded problem with ALPS. An exception will be thrown, that the random number generator is not found. ALPS doesn't have a "Random" parameter, but uses a "LocalRandom" RNG instance for each layer in addition to a "GlobalRandom" RNG instance. Algorithms are responsible to scan all of the problem's operators that implement the IStochasticOperator interface and parameterize them accordingly, ALPS does this as well. However, if the operator is never seen by the algorithm wiring will not occur. All that ALPS sees is e.g. the MultiEncodingSolutionCreator, but not the solution creator of each encoding.
The solution would be to implement IStochasticOperator on all multi encoding operators. Then the algorithms would parameterize these and the name translation would work to identify the right RNG to use. This would work for random parameters. ALPS would then correctly parameterize the operators with LocalRandom. But the general problem of not being able to parameterize individual operators remains. A general solution however cannot be to return all operators of the embedded encodings as a concatenation as this would cause, e.g. individual crossovers to appear in the crossover parameter as well.
This problem has never surfaced earlier, because every other algorithms calls the RNG instance Random which is the default name in all operators and which thus find it "by chance".