/* * Copyright © 2010 by Ondrej Skalicka. All Rights Reserved */ package cz.cvut.felk.cig.jcop.solver; import cz.cvut.felk.cig.jcop.algorithm.Algorithm; import cz.cvut.felk.cig.jcop.algorithm.graphsearch.bfs.BreadthFirstSearch; import cz.cvut.felk.cig.jcop.algorithm.graphsearch.dfs.DepthFirstSearch; import cz.cvut.felk.cig.jcop.problem.knapsack.Knapsack; import cz.cvut.felk.cig.jcop.result.ResultEntry; import cz.cvut.felk.cig.jcop.solver.condition.TimeoutCondition; import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.testng.annotations.BeforeTest; import org.testng.annotations.Test; import java.util.ArrayList; import java.util.List; /** * Tests proper behavior of {@link cz.cvut.felk.cig.jcop.solver.AlgorithmCompareSolver} solver. * * @author Ondrej Skalicka */ public class AlgorithmCompareSolverTest { @BeforeTest public void setUp() { Logger.getRootLogger().setLevel(Level.WARN); } @Test public void testRun() throws Exception { List<Algorithm> algorithms = new ArrayList<Algorithm>(); Knapsack problem = new Knapsack("9566 40 600 14 217 3 220 2 82 16 214 1 65 4 63 22 209 32 96 7 173 18 229 25 218 17 220 21 186 26 224 12 108 43 51 29 144 11 16 19 103 8 111 27 148 40 186 39 121 35 153 5 103 6 167 15 183 45 231 46 6 23 211 10 213 38 131 9 103 31 135 33 30 42 184 28 2 49 5 41 82 13 89"); Algorithm DFS = new DepthFirstSearch(); Algorithm BFS = new BreadthFirstSearch(); algorithms.add(DFS); algorithms.add(BFS); AlgorithmCompareSolver compareSolver = new AlgorithmCompareSolver(problem, algorithms); compareSolver.addStopCondition(new TimeoutCondition(100)); compareSolver.run(); ResultEntry resultDFS = compareSolver.getResult().getResultEntries().get(0); ResultEntry resultBFS = compareSolver.getResult().getResultEntries().get(1); assert resultDFS != null; assert resultBFS != null; assert resultDFS.getOptimizeCounter() > 0; assert resultBFS.getOptimizeCounter() > 0; assert resultBFS.getBestConfiguration().getOperationHistory().getCounter() < resultDFS.getBestConfiguration().getOperationHistory().getCounter(); } }