Package jsprit.analysis.toolbox

Examples of jsprit.analysis.toolbox.ComputationalLaboratory


    VehicleRoutingProblem vrp = vrpBuilder.build();
   
    /*
     * Create ComputationalLaboratory
     */
    ComputationalLaboratory computationalLab = new ComputationalLaboratory();
    /*
     * add benchmarking instance
     */
    computationalLab.addInstance("SolomonR101", vrp);
    /*
     * add algorithms through factories
     *
     *
     *
     */
    computationalLab.addAlgorithmFactory("schrimpfAcceptance", new VehicleRoutingAlgorithmFactory() {
     
      @Override
      public VehicleRoutingAlgorithm createAlgorithm(VehicleRoutingProblem vrp) {
        VehicleRoutingAlgorithm vra = VehicleRoutingAlgorithms.readAndCreateAlgorithm(vrp, "input/algorithmConfigWithSchrimpfAcceptance.xml");
        vra.setMaxIterations(4000);
        return vra;
      }
    });
    /*
     * run schrimpfAcceptance 5 times (and thus each with another seed of random number generator)
     */
    computationalLab.setNuOfRuns(5);
       
    /*
     * plot search progress of different algorithms
     */
    final XYLineChartBuilder chartBuilder = XYLineChartBuilder.newInstance("random variations", "iterations", "costs");
    computationalLab.addListener(new CalculationListener() {
     
      @Override
      public void calculationStarts(BenchmarkInstance p, final String algorithmName,VehicleRoutingAlgorithm algorithm, final int run) {
        algorithm.addListener(new IterationStartsListener() {
         
          @Override
          public void informIterationStarts(int i, VehicleRoutingProblem problem,Collection<VehicleRoutingProblemSolution> solutions) {
            /*
             * since there will be more than 1 run and we want to plot each run, we need to specify an apropriate
             * XYSeries-name. Thus we add run to algorithmName.
             */
            chartBuilder.addData(algorithmName+"_"+run, i, Solutions.bestOf(solutions).getCost());
          }
         
        });
       
      }
     
      @Override
      public void calculationEnds(BenchmarkInstance p, String algorithmName,VehicleRoutingAlgorithm algorithm, int run,Collection<VehicleRoutingProblemSolution> solutions) {}
     
    });
   
    computationalLab.setThreads(2);
    /*
     * run the experiments
     */
    computationalLab.run();
   
    /*
     * plot the lineChart
     */
    XYLineChartBuilder.saveChartAsPNG(chartBuilder.build(), "output/computationalStudies_randomVariations.png");
View Full Code Here


    VehicleRoutingProblem vrp = vrpBuilder.build();
   
    /*
     * Create ComputationalLaboratory
     */
    ComputationalLaboratory computationalLab = new ComputationalLaboratory();
    /*
     * add benchmarking instance
     */
    computationalLab.addInstance("SolomonR101", vrp);
    /*
     * add algorithms through factories
     *
     *
     *
     */
    computationalLab.addAlgorithmFactory("schrimpfAcceptance_1", getAlgorithmFactory(1));
    computationalLab.addAlgorithmFactory("schrimpfAcceptance_100", getAlgorithmFactory(100));
    computationalLab.addAlgorithmFactory("schrimpfAcceptance_500", getAlgorithmFactory(500));
    computationalLab.addAlgorithmFactory("schrimpfAcceptance_1000", getAlgorithmFactory(1000));
    computationalLab.addAlgorithmFactory("schrimpfAcceptance_2000", getAlgorithmFactory(2000));
    computationalLab.addAlgorithmFactory("schrimpfAcceptance_4000", getAlgorithmFactory(4000));
    computationalLab.addAlgorithmFactory("schrimpfAcceptance_8000", getAlgorithmFactory(8000));
    computationalLab.addAlgorithmFactory("schrimpfAcceptance_12000", getAlgorithmFactory(12000));
   
   
    /*
     * run schrimpfAcceptance 5 times (and thus each with another seed of random number generator)
     */
    computationalLab.setNuOfRuns(5);
       
    /*
     * plot search progress of different algorithms
     */
    final DataCollector dataCollector = new DataCollector();
    computationalLab.addListener(new CalculationListener() {
     
      @Override
      public void calculationStarts(BenchmarkInstance p, final String algorithmName,VehicleRoutingAlgorithm algorithm, final int run) {}
     
      @Override
      public void calculationEnds(BenchmarkInstance p, String algorithmName,VehicleRoutingAlgorithm algorithm, int run,Collection<VehicleRoutingProblemSolution> solutions) {
        dataCollector.addDate("R101", algorithmName, run, "costs", Solutions.bestOf(solutions).getCost());
      }
     
    });
   
    computationalLab.setThreads(2);
    /*
     * run the experiments
     */
    computationalLab.run();
   
    /*
     * plot min, avg and max
     */
    XYLineChartBuilder chartBuilder = XYLineChartBuilder.newInstance("variations with iterations", "iterations", "costs");
    for(String algorithmName : computationalLab.getAlgorithmNames()){
      String[] nameTokens = algorithmName.split("_");
      int iteration = Integer.parseInt(nameTokens[1]);
      chartBuilder.addData("min", iteration, min(dataCollector.getData("R101", algorithmName, "costs")));
      chartBuilder.addData("max", iteration, max(dataCollector.getData("R101", algorithmName, "costs")));
      chartBuilder.addData("avg", iteration, avg(dataCollector.getData("R101", algorithmName, "costs")));
View Full Code Here

    VehicleRoutingProblem vrp = vrpBuilder.build();
   
    /*
     * Create ComputationalLaboratory
     */
    ComputationalLaboratory computationalLab = new ComputationalLaboratory();
    /*
     * add benchmarking instance
     */
    computationalLab.addInstance("SolomonR101", vrp);
    /*
     * add algorithms through factories
     *
     *
     * Define 2 algorithms
     * - algorithmsConfigWithSchrimpfAcceptance (4000 iterations)
     * - algorithmsConfigWithGreedyAcceptance (4000 iterations)
     *
     */
    computationalLab.addAlgorithmFactory("schrimpfAcceptance", new VehicleRoutingAlgorithmFactory() {
     
      @Override
      public VehicleRoutingAlgorithm createAlgorithm(VehicleRoutingProblem vrp) {
        VehicleRoutingAlgorithm vra = VehicleRoutingAlgorithms.readAndCreateAlgorithm(vrp, "input/algorithmConfigWithSchrimpfAcceptance.xml");
        vra.setMaxIterations(4000);
        return vra;
      }
    });
    computationalLab.addAlgorithmFactory("greedyAcceptance", new VehicleRoutingAlgorithmFactory() {
     
      @Override
      public VehicleRoutingAlgorithm createAlgorithm(VehicleRoutingProblem vrp) {
        VehicleRoutingAlgorithm vra = VehicleRoutingAlgorithms.readAndCreateAlgorithm(vrp, "input/algorithmConfig_solomon.xml");
        vra.setMaxIterations(4000);
        return vra;
      }
    });
       
    /*
     * plot search progress of different algorithms
     */
    final XYLineChartBuilder chartBuilder = XYLineChartBuilder.newInstance("schrimpf vs greedy", "iterations", "costs");
    computationalLab.addListener(new CalculationListener() {
     
      @Override
      public void calculationStarts(BenchmarkInstance p, final String algorithmName,VehicleRoutingAlgorithm algorithm, int run) {
        algorithm.addListener(new IterationStartsListener() {
         
          @Override
          public void informIterationStarts(int i, VehicleRoutingProblem problem,Collection<VehicleRoutingProblemSolution> solutions) {
            chartBuilder.addData(algorithmName, i, Solutions.bestOf(solutions).getCost());
          }
         
        });
       
      }
     
      @Override
      public void calculationEnds(BenchmarkInstance p, String algorithmName,VehicleRoutingAlgorithm algorithm, int run,Collection<VehicleRoutingProblemSolution> solutions) {}
     
    });
   
    computationalLab.setThreads(2);
    /*
     * run the experiments
     */
    computationalLab.run();
   
    /*
     * plot the lineChart
     */
    XYLineChartBuilder.saveChartAsPNG(chartBuilder.build(), "output/computationalStudies_schrimpf_vs_greedy.png");
View Full Code Here

    VehicleRoutingProblem vrp = vrpBuilder.build();
   
    /*
     * Create ComputationalLaboratory
     */
    ComputationalLaboratory computationalLab = new ComputationalLaboratory();
    /*
     * add benchmarking instance
     */
    computationalLab.addInstance("SolomonR101", vrp);
    /*
     * add algorithms through factories
     *
     *
     *
     */
    for(double alphaVal=0.;alphaVal<.4;alphaVal+=.1){
     
      final String alpha = String.valueOf(alphaVal).substring(0, 3);
      computationalLab.addAlgorithmFactory("alpha_"+alpha, new VehicleRoutingAlgorithmFactory() {

        @Override
        public VehicleRoutingAlgorithm createAlgorithm(VehicleRoutingProblem vrp) {
          return VehicleRoutingAlgorithms.createAlgorithm(vrp, getAlgorithmConfig(alpha));
        }
       
      });
     
    }
       
    /*
     * plot search progress of different algorithms
     */
    final XYLineChartBuilder chartBuilder = XYLineChartBuilder.newInstance("alpha-sensitivity", "iterations", "costs");
    computationalLab.addListener(new CalculationListener() {
     
      @Override
      public void calculationStarts(BenchmarkInstance p, final String algorithmName,VehicleRoutingAlgorithm algorithm, int run) {
        algorithm.addListener(new IterationStartsListener() {
         
          @Override
          public void informIterationStarts(int i, VehicleRoutingProblem problem,Collection<VehicleRoutingProblemSolution> solutions) {
            /*
             * plot only distance-costs, i.e. without fixed costs
             */
            VehicleRoutingProblemSolution bestOf = Solutions.bestOf(solutions);
            chartBuilder.addData(algorithmName, i, bestOf.getCost()-bestOf.getRoutes().size()*100.);
          }
         
        });
       
      }
     
      @Override
      public void calculationEnds(BenchmarkInstance p, String algorithmName,VehicleRoutingAlgorithm algorithm, int run,Collection<VehicleRoutingProblemSolution> solutions) {}
     
    });
    /*
     * define dataCollector to collect an arbitrary number of indicators as well as solutions
     */
    final DataCollector dataCollector = new DataCollector();
    computationalLab.addListener(new CalculationListener() {
     
      @Override
      public void calculationStarts(BenchmarkInstance p, String algorithmName,VehicleRoutingAlgorithm algorithm, int run) {}
     
      @Override
      public void calculationEnds(BenchmarkInstance p, String algorithmName,VehicleRoutingAlgorithm algorithm, int run,Collection<VehicleRoutingProblemSolution> solutions) {
        //memorize solution
        dataCollector.addSolution(p.name, algorithmName, run, Solutions.bestOf(solutions));
      }
     
    });
    /*
     * determine number of threads to be used
     */
    computationalLab.setThreads(2);
    /*
     * run the experiments
     */
    computationalLab.run();
   
    /*
     * plot the lineChart
     */
    XYLineChartBuilder.saveChartAsPNG(chartBuilder.build(), "output/computationalStudies_alphaSensitivity.png");
View Full Code Here

TOP

Related Classes of jsprit.analysis.toolbox.ComputationalLaboratory

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.