code: public static void main(String[] args) throws Exception {
  
      DoubleProblem problem;
      Algorithm<DoubleSolution> algorithm;
      DifferentialEvolutionSelection selection;
      DifferentialEvolutionCrossover crossover;
      SolutionListEvaluator<DoubleSolution> evaluator ;
  
      problem = new Sphere(20) ;
  
      int numberOfCores ;
      if (args.length == 1) {
        numberOfCores = Integer.valueOf(args[0]) ;
      } else {
        numberOfCores = DEFAULT_NUMBER_OF_CORES ;
      }
  
      if (numberOfCores == 1) {
        evaluator = new SequentialSolutionListEvaluator<DoubleSolution>() ;
      } else {
        evaluator = new MultithreadedSolutionListEvaluator<DoubleSolution>(numberOfCores, problem) ;
      }
  
      crossover = new DifferentialEvolutionCrossover(0.5, 0.5, "rand/1/bin") ;
      selection = new DifferentialEvolutionSelection();
  
      algorithm = new DifferentialEvolutionBuilder(problem)
          .setCrossover(crossover)
          .setSelection(selection)
          .setSolutionListEvaluator(evaluator)
          .setMaxEvaluations(25000)
          .setPopulationSize(100)
          .build() ;
  
      AlgorithmRunner algorithmRunner = new AlgorithmRunner.Executor(algorithm)
          .execute() ;
  
      DoubleSolution solution = algorithm.getResult() ;
      long computingTime = algorithmRunner.getComputingTime() ;
  
      List<DoubleSolution> population = new ArrayList<>(1) ;
      population.add(solution) ;
      new SolutionListOutput(population)
          .setSeparator("\t")
          .setVarFileOutputContext(new DefaultFileOutputContext("VAR.tsv"))
          .setFunFileOutputContext(new DefaultFileOutputContext("FUN.tsv"))
          .print();
  
      JMetalLogger.logger.info("Total execution time: " + computingTime + "ms");
      JMetalLogger.logger.info("Objectives values have been written to file FUN.tsv");
      JMetalLogger.logger.info("Variables values have been written to file VAR.tsv");
  
      JMetalLogger.logger.info("Fitness: " + solution.getObjective(0)) ;
  
      evaluator.shutdown();
    }
docs: Usage: java org.uma.jmetal.runner.singleobjective.DifferentialEvolutionRunner [cores]