/* * Copyright © 2010 by Ondrej Skalicka. All Rights Reserved */ package cz.cvut.felk.cig.jcop.util; import cz.cvut.felk.cig.jcop.algorithm.simulatedannealing.SimulatedAnnealing; import cz.cvut.felk.cig.jcop.problem.sat.SAT; import cz.cvut.felk.cig.jcop.result.Result; import cz.cvut.felk.cig.jcop.result.ResultEntry; import cz.cvut.felk.cig.jcop.solver.SimpleSolver; import cz.cvut.felk.cig.jcop.solver.Solver; import cz.cvut.felk.cig.jcop.solver.condition.IterationCondition; import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.testng.annotations.Test; import java.io.File; /** * Tests proper behavior of {@link JcopRandom} utility. * * @author Ondrej Skalicka */ public class JcopRandomTest { @Test public void testSetSeed() throws Exception { Logger.getRootLogger().setLevel(Level.WARN); for (int i = 0; i < 4; ++i) { Solver solver = new SimpleSolver(new SimulatedAnnealing(100, 0.99), new SAT(new File("data/sat/uf100-0100.cnf"))); JcopRandom.setSeed(1); solver.addStopCondition(new IterationCondition(50)); solver.run(); Result result = solver.getResult(); ResultEntry resultEntryFirst = result.getResultEntries().get(0); solver = new SimpleSolver(new SimulatedAnnealing(100, 0.99), new SAT(new File("data/sat/uf100-0100.cnf"))); JcopRandom.setSeed(1); solver.addStopCondition(new IterationCondition(50)); solver.run(); result = solver.getResult(); ResultEntry resultEntrySecond = result.getResultEntries().get(0); assert resultEntryFirst.getBestFitness() == resultEntrySecond.getBestFitness() : "Expected same results, got " + resultEntryFirst.getBestFitness() + " first and " + resultEntrySecond.getBestFitness() + " second."; assert resultEntryFirst.getBestConfiguration().equals(resultEntrySecond.getBestConfiguration()) : "Expected same results, got " + resultEntryFirst.getBestConfiguration() + " first and " + resultEntrySecond.getBestConfiguration() + " second."; } } }