= [wiki:ReviewHeuristicLab3.3.0Code HeuristicLab 3.3.0 Code Review] - HeuristicLab.Selection-3.3 = == Reviewer: abeham == * `Selector` should not implement `ISelector`, all derived classes that are selectors in the sense of `ISelector` should implement this interface instead. Currently `TabuSelector` and probably future custom selectors appear as selectors in the SGA. It is true that `TabuSelector` is a selector (divides subscopes in remaining and selected), but not an `ISelector`. * A related note: Currently `TabuSelector` is the only "Selector" that appears twice in the !SelectorParameter of the SGA. * abeham: Removed `ISelector` from `Selector` in r3129. I leave the other changes for swagner to decide. * swagner: I agree. In general I think it would be better, if the abstract selector base classes do not implement any selector interfaces. It should be left to the concrete selectors to decide which kind of selector they are. I changed this for selectors and reducers in r3138. * mkommend: In my opinion one of the classes / interfaces should be renamed (e.g. `IChildrenSelector`). * swagner: I'm not so happy with the name `IChildrenSelector`. The concept of sub-scope selection is independent of any metaheuristic optimization method. Therefore, talking about "Children" (which is a term from evolutionary algorithms) is not so appropriate in my opinion. I think it is the better solution to leave interface implementations to the concrete operators. ----