Program: 64469
Project: 64469
Buggy source:
/** 
 * The algorithm list is composed of pairs   {@link Algorithm} + {@link Problem} which form part ofa  {@link ExperimentAlgorithm}, which is a decorator for class   {@link Algorithm}. The   {@link ExperimentAlgorithm} has an optional tag component, that can be set as it is shown in this example,where four variants of a same algorithm are defined.
 */
static List<ExperimentAlgorithm<DoubleSolution,List<DoubleSolution>>> configureAlgorithmList(List<ExperimentProblem<DoubleSolution>> problemList){
  List<ExperimentAlgorithm<DoubleSolution,List<DoubleSolution>>> algorithms=new ArrayList<>();
  for (int i=0; i < problemList.size(); i++) {
    Algorithm<List<DoubleSolution>> algorithm=new NSGAIIBuilder<>(problemList.get(i).getProblem(),new SBXCrossover(1.0,20),new PolynomialMutation(1.0 / problemList.get(i).getProblem().getNumberOfVariables(),20.0)).setMaxEvaluations(25000).setPopulationSize(100).build();
    algorithms.add(new ExperimentAlgorithm<>(algorithm,problemList.get(i).getTag()));
  }
  for (int i=0; i < problemList.size(); i++) {
    Algorithm<List<DoubleSolution>> algorithm=new SPEA2Builder<DoubleSolution>(problemList.get(i).getProblem(),new SBXCrossover(1.0,10.0),new PolynomialMutation(1.0 / problemList.get(i).getProblem().getNumberOfVariables(),20.0)).build();
    algorithms.add(new ExperimentAlgorithm<>(algorithm,problemList.get(i).getTag()));
  }
  for (int i=0; i < problemList.size(); i++) {
    double mutationProbability=1.0 / problemList.get(i).getProblem().getNumberOfVariables();
    double mutationDistributionIndex=20.0;
    Algorithm<List<DoubleSolution>> algorithm=new SMPSOBuilder((DoubleProblem)problemList.get(i).getProblem(),new CrowdingDistanceArchive<DoubleSolution>(100)).setMutation(new PolynomialMutation(mutationProbability,mutationDistributionIndex)).setMaxIterations(250).setSwarmSize(100).setSolutionListEvaluator(new SequentialSolutionListEvaluator<DoubleSolution>()).build();
    algorithms.add(new ExperimentAlgorithm<>(algorithm,problemList.get(i).getTag()));
  }
  for (int i=0; i < problemList.size(); i++) {
    double cr=0.5;
    double f=0.5;
    Algorithm<List<DoubleSolution>> algorithm=new GDE3Builder((DoubleProblem)problemList.get(i).getProblem()).setCrossover(new DifferentialEvolutionCrossover(cr,f,"String_Node_Str")).setSelection(new DifferentialEvolutionSelection()).setMaxEvaluations(25000).setPopulationSize(100).setSolutionSetEvaluator(new SequentialSolutionListEvaluator<>()).build();
    algorithms.add(new ExperimentAlgorithm<>(algorithm,problemList.get(i).getTag()));
  }
  for (int i=0; i < problemList.size(); i++) {
    Algorithm<List<DoubleSolution>> algorithm=new MOCellBuilder<DoubleSolution>((DoubleProblem)problemList.get(i).getProblem(),new SBXCrossover(1.0,20.0),new PolynomialMutation(1.0 / problemList.get(i).getProblem().getNumberOfVariables(),20.0)).setSelectionOperator(new BinaryTournamentSelection<>()).setMaxEvaluations(25000).setPopulationSize(100).setArchive(new CrowdingDistanceArchive<DoubleSolution>(100)).build();
    algorithms.add(new ExperimentAlgorithm<>(algorithm,problemList.get(i).getTag()));
  }
  return algorithms;
}

Fixed version (ground truth):
/** 
 * The algorithm list is composed of pairs   {@link Algorithm} + {@link Problem} which form part ofa  {@link ExperimentAlgorithm}, which is a decorator for class   {@link Algorithm}. The   {@link ExperimentAlgorithm} has an optional tag component, that can be set as it is shown in this example,where four variants of a same algorithm are defined.
 */
static List<ExperimentAlgorithm<DoubleSolution,List<DoubleSolution>>> configureAlgorithmList(List<ExperimentProblem<DoubleSolution>> problemList){
  List<ExperimentAlgorithm<DoubleSolution,List<DoubleSolution>>> algorithms=new ArrayList<>();
  for (int run=0; run < INDEPENDENT_RUNS; run++) {
    for (int i=0; i < problemList.size(); i++) {
      Algorithm<List<DoubleSolution>> algorithm=new NSGAIIBuilder<>(problemList.get(i).getProblem(),new SBXCrossover(1.0,20),new PolynomialMutation(1.0 / problemList.get(i).getProblem().getNumberOfVariables(),20.0)).setMaxEvaluations(25000).setPopulationSize(100).build();
      algorithms.add(new ExperimentAlgorithm<>(algorithm,problemList.get(i).getTag(),run));
    }
    for (int i=0; i < problemList.size(); i++) {
      Algorithm<List<DoubleSolution>> algorithm=new SPEA2Builder<DoubleSolution>(problemList.get(i).getProblem(),new SBXCrossover(1.0,10.0),new PolynomialMutation(1.0 / problemList.get(i).getProblem().getNumberOfVariables(),20.0)).build();
      algorithms.add(new ExperimentAlgorithm<>(algorithm,problemList.get(i).getTag(),run));
    }
    for (int i=0; i < problemList.size(); i++) {
      double mutationProbability=1.0 / problemList.get(i).getProblem().getNumberOfVariables();
      double mutationDistributionIndex=20.0;
      Algorithm<List<DoubleSolution>> algorithm=new SMPSOBuilder((DoubleProblem)problemList.get(i).getProblem(),new CrowdingDistanceArchive<DoubleSolution>(100)).setMutation(new PolynomialMutation(mutationProbability,mutationDistributionIndex)).setMaxIterations(250).setSwarmSize(100).setSolutionListEvaluator(new SequentialSolutionListEvaluator<DoubleSolution>()).build();
      algorithms.add(new ExperimentAlgorithm<>(algorithm,problemList.get(i).getTag(),run));
    }
    for (int i=0; i < problemList.size(); i++) {
      double cr=0.5;
      double f=0.5;
      Algorithm<List<DoubleSolution>> algorithm=new GDE3Builder((DoubleProblem)problemList.get(i).getProblem()).setCrossover(new DifferentialEvolutionCrossover(cr,f,"String_Node_Str")).setSelection(new DifferentialEvolutionSelection()).setMaxEvaluations(25000).setPopulationSize(100).setSolutionSetEvaluator(new SequentialSolutionListEvaluator<>()).build();
      algorithms.add(new ExperimentAlgorithm<>(algorithm,problemList.get(i).getTag(),run));
    }
    for (int i=0; i < problemList.size(); i++) {
      Algorithm<List<DoubleSolution>> algorithm=new MOCellBuilder<DoubleSolution>((DoubleProblem)problemList.get(i).getProblem(),new SBXCrossover(1.0,20.0),new PolynomialMutation(1.0 / problemList.get(i).getProblem().getNumberOfVariables(),20.0)).setSelectionOperator(new BinaryTournamentSelection<>()).setMaxEvaluations(25000).setPopulationSize(100).setArchive(new CrowdingDistanceArchive<DoubleSolution>(100)).build();
      algorithms.add(new ExperimentAlgorithm<>(algorithm,problemList.get(i).getTag(),run));
    }
  }
  return algorithms;
}