/** * */ package vroom.optimization.alns; import java.io.File; import java.util.ArrayList; import java.util.List; import java.util.Map; import vroom.common.heuristics.alns.DiversifiedPool; import vroom.common.modeling.io.DynamicPersistenceHelper; import vroom.common.utilities.Stopwatch; import vroom.common.utilities.logging.LoggerHelper; import vroom.common.utilities.logging.Logging; import vroom.common.utilities.optimization.OptimizationSense; import vroom.trsp.ALNSSCSolver; import vroom.trsp.bench.TRSPBench; import vroom.trsp.bench.TRSPRunBase; import vroom.trsp.datamodel.TRSPInstance; import vroom.trsp.datamodel.TRSPSolution; import vroom.trsp.io.DynamicTRSPPersistenceHelper; import vroom.trsp.io.ITRSPPersistenceHelper; import vroom.trsp.optimization.TRSPUtilities; import vroom.trsp.optimization.constructive.TRSPConstructiveHeuristic; import vroom.trsp.util.BrokenPairsDistance; import vroom.trsp.util.TRSPGlobalParameters; import vroom.trsp.util.TRSPLogging; /** * JAVADOC <code>DiversifiedPoolTest</code> * <p> * Creation date: Feb 29, 2012 - 1:28:40 PM * * @author Victor Pillac, <a href="http://uniandes.edu.co">Universidad de Los Andes</a>-<a * href="http://copa.uniandes.edu.co">Copa</a> <a href="http://www.emn.fr">Ecole des Mines de Nantes</a>-<a * href="http://www.irccyn.ec-nantes.fr/irccyn/d/en/equipes/Slp">SLP</a> * @version 1.0 */ public class DiversifiedPoolTest { /** * JAVADOC * * @param args */ public static void main(String[] args) { String configFile = "./config/bench/bench_cvrptw_palnssc.cfg"; String instanceFile = "C104.txt"; LoggerHelper.setupRootLogger(LoggerHelper.LEVEL_WARN, LoggerHelper.LEVEL_DEBUG, true); TRSPLogging.getRunLogger().setLevel(LoggerHelper.LEVEL_DEBUG); Logging.getSetupLogger().setLevel(LoggerHelper.LEVEL_INFO); TRSPGlobalParameters params = new TRSPGlobalParameters(); try { params.loadParameters(new File(configFile)); } catch (Exception e) { TRSPLogging.getBaseLogger().exception("TRSPRunBase.main", e); System.exit(1); } TRSPBench.setup(params, true, "TRSPRunBase_test"); ITRSPPersistenceHelper reader = TRSPUtilities.getPersistenceHelper(params .get(TRSPGlobalParameters.RUN_INSTANCE_FOLDER)); TRSPInstance instance = null; String com = ""; try { instance = reader.readInstance( new File(String.format("%s/%s", params.get(TRSPGlobalParameters.RUN_INSTANCE_FOLDER), instanceFile)), params.isCVRPTW()); if (params.isDynamic()) { Map<String, List<File>> rdFileMapping = DynamicPersistenceHelper.getRelDateFiles( params.get(TRSPGlobalParameters.RUN_REL_DATE_FOLDER), new int[] { 10 }); List<File> rdFiles = rdFileMapping.get(instance.getName()); if (rdFiles != null && !rdFiles.isEmpty()) { DynamicTRSPPersistenceHelper.readRelDates(instance, rdFiles.get(0), params.isCVRPTW()); com = rdFiles.get(0).getName(); } } } catch (Exception e) { e.printStackTrace(); System.exit(2); } TRSPRunBase run = new TRSPRunBase(null, instance, params, null, 0, com); DiversifiedPool<TRSPSolution> pool = new DiversifiedPool<>(new BrokenPairsDistance(), OptimizationSense.MINIMIZATION, 4); ((ALNSSCSolver) run.getSolver()).initialization(); TRSPConstructiveHeuristic init = ((ALNSSCSolver) run.getSolver()).getInit(); System.out.println("Generating solutions"); ArrayList<TRSPSolution> solutions = new ArrayList<>(1000); for (int i = 0; i < 100; i++) { init.call(); solutions.add(init.getSolution()); } System.out.println("---------------"); Stopwatch timer = new Stopwatch(); timer.start(); for (TRSPSolution s : solutions) { System.out.println(" New Solution: " + s); boolean added = pool.add(s, false); System.out.println(pool); System.out.println(" Added : " + added); System.out.println(" Best Solution: " + pool.getBest().getObjectiveValue()); // System.out.println(" Check pool : " + pool.checkPool()); System.out.println(); } timer.stop(); System.out.println("Total time : " + timer.readTimeString()); System.out.println("Time per it: " + timer.readTimeS()); } }