A. Solvers

List of all solvers in JCOP

In table 1 is a list of all solvers bundled with JCOP, along with brief description and default registered renders apart from SimpleRender (which is registered as default to all solvers). Note that all of them extends BaseSolver.

Name Description Additional Renders
AlgorithmCompareSolver Runs several algorithms on one problem. SimpleCompareRender
MedianSolver Wraps around another solver, runs it several times and returns median from its results. SimpleCompareRender
MultiSolver Makes cartesian product of given algorithms and problems and runs all of them. SimpleCompareRender
ProblemCompareSolver Runs one algorithm on several problems. SimpleCompareRender
SimpleSolver Runs one algorithm on one problem. none

Table 1: List of solvers in JCOP.


AlgorithmCompareSolver is created with one problem and multiple algorithms. More algorithms can be added by AlgorithmCompareSolver#addAlgorithm(Algorithm). Solver uses every algorithm in turn on supplied problem. Has default renders SimpleRender and SimpleCompareRender.


MedianSolver is very different from other solvers. It cannot solve itself, but takes another solver and runs it repeatedly, storing results from every run. After that, it makes median from results (results ordered by best fitness) and presents it as a result. This solver is very useful when you have random-based algorithm and want to eliminate statistical errors.

Note that if wrapped solver returns more than one result entry in its result, median requires that in every run solver returns same number of result entries and in same order.

MedianSolver has default renders SimpleRender and SimpleCompareRender.


MultiSolver is created with a list of problems and list of algorithms. More algorithms and problems can be added by MultiSolver#addAlgorithm(Algorithm) and MultiSolver#addProblem(Problem). Solver makes cartesian product, eg. applies every algorithm on every problem in turn. Has default renders SimpleRender and SimpleCompareRender.


ProblemCompareSolver is created with one algorithm and multiple problems. More problems can be added by ProblemCompareSolver#addProblem(Problem). Solver uses supplied algorithm on every problem in turn. Has default renders SimpleRender and SimpleCompareRender.


SimpleSolver is useful for simple testing if algorithm or problem works. Takes only single algorithm and single problem and makes one solver iteration. Has default render SimpleRender.