Refactor AbstractProblem into a concrete class by delegating random solution generation. Introduce an interface RandomSolutionGenerator for this purpose. This avoids the need to extend an abstract class for custom problem specification. Specific predefined problems (subset, permutation, ...) can still extend this class to provide a default, but customizable, random solution generator.
Refactor
AbstractProblem
into a concrete class by delegating random solution generation. Introduce an interfaceRandomSolutionGenerator
for this purpose. This avoids the need to extend an abstract class for custom problem specification. Specific predefined problems (subset, permutation, ...) can still extend this class to provide a default, but customizable, random solution generator.Question: appropriate new name for this class?
GenericProblem
UniversalProblem