<?xml version="1.0" encoding="UTF-8"?>
<plannerBenchmark>
  <benchmarkDirectory>local/data/nqueens/scoreDirector</benchmarkDirectory>
  <warmUpSecondsSpentLimit>30</warmUpSecondsSpentLimit>

  <inheritedSolverBenchmark>
    <problemBenchmarks>
      <xStreamAnnotatedClass>org.optaplanner.examples.nqueens.domain.NQueens</xStreamAnnotatedClass>
      <inputSolutionFile>data/nqueens/unsolved/32queens.xml</inputSolutionFile>
      <inputSolutionFile>data/nqueens/unsolved/64queens.xml</inputSolutionFile>
      <inputSolutionFile>data/nqueens/unsolved/256queens.xml</inputSolutionFile>
    </problemBenchmarks>
    <solver>
      <solutionClass>org.optaplanner.examples.nqueens.domain.NQueens</solutionClass>
      <entityClass>org.optaplanner.examples.nqueens.domain.Queen</entityClass>
      <scoreDirectorFactory>
        <initializingScoreTrend>ONLY_DOWN</initializingScoreTrend>
      </scoreDirectorFactory>
      <termination>
        <terminationCompositionStyle>OR</terminationCompositionStyle>
        <bestScoreLimit>0</bestScoreLimit>
        <secondsSpentLimit>60</secondsSpentLimit>
      </termination>
      <constructionHeuristic>
        <constructionHeuristicType>FIRST_FIT_DECREASING</constructionHeuristicType>
      </constructionHeuristic>
      <localSearch>
        <changeMoveSelector>
          <selectionOrder>ORIGINAL</selectionOrder>
        </changeMoveSelector>
        <acceptor>
          <entityTabuSize>5</entityTabuSize>
        </acceptor>
      </localSearch>
    </solver>
  </inheritedSolverBenchmark>

  <solverBenchmark>
    <name>Easy java (basic)</name>
    <solver>
      <scoreDirectorFactory>
        <easyScoreCalculatorClass>org.optaplanner.examples.nqueens.solver.score.NQueensEasyScoreCalculator</easyScoreCalculatorClass>
      </scoreDirectorFactory>
    </solver>
  </solverBenchmark>
  <solverBenchmark>
    <name>Easy java (advanced)</name>
    <solver>
      <scoreDirectorFactory>
        <easyScoreCalculatorClass>org.optaplanner.examples.nqueens.solver.score.NQueensMapBasedEasyScoreCalculator</easyScoreCalculatorClass>
      </scoreDirectorFactory>
    </solver>
  </solverBenchmark>
  <solverBenchmark>
    <name>Incremental java (basic)</name>
    <solver>
      <scoreDirectorFactory>
        <incrementalScoreCalculatorClass>org.optaplanner.examples.nqueens.solver.score.NQueensBasicIncrementalScoreCalculator</incrementalScoreCalculatorClass>
      </scoreDirectorFactory>
    </solver>
  </solverBenchmark>
  <solverBenchmark>
    <name>Incremental java (advanced)</name>
    <solver>
      <scoreDirectorFactory>
        <incrementalScoreCalculatorClass>org.optaplanner.examples.nqueens.solver.score.NQueensAdvancedIncrementalScoreCalculator</incrementalScoreCalculatorClass>
      </scoreDirectorFactory>
    </solver>
  </solverBenchmark>
  <solverBenchmark>
    <name>ConstraintStreams (Drools)</name>
    <solver>
      <scoreDirectorFactory>
        <constraintProviderClass>org.optaplanner.examples.nqueens.solver.score.NQueensConstraintProvider</constraintProviderClass>
      </scoreDirectorFactory>
    </solver>
  </solverBenchmark>
  <solverBenchmark>
    <name>ConstraintStreams (Bavet)</name>
    <solver>
      <scoreDirectorFactory>
        <constraintStreamImplType>BAVET</constraintStreamImplType>
        <constraintProviderClass>org.optaplanner.examples.nqueens.solver.score.NQueensConstraintProvider</constraintProviderClass>
      </scoreDirectorFactory>
    </solver>
  </solverBenchmark>
  <solverBenchmark>
    <name>DRL (Drools)</name>
    <solver>
      <scoreDirectorFactory>
        <scoreDrl>org/optaplanner/examples/nqueens/solver/nQueensScoreRules.drl</scoreDrl>
      </scoreDirectorFactory>
    </solver>
  </solverBenchmark>
</plannerBenchmark>
