<?xml version="1.0" encoding="UTF-8"?>
<plannerBenchmark xmlns="https://www.optaplanner.org/xsd/benchmark" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="https://www.optaplanner.org/xsd/benchmark https://www.optaplanner.org/xsd/benchmark/benchmark.xsd">
  <benchmarkDirectory>local/data/pas</benchmarkDirectory>
  <parallelBenchmarkCount>AUTO</parallelBenchmarkCount>

  <inheritedSolverBenchmark>
    <solver>
      <solutionClass>org.optaplanner.examples.pas.domain.PatientAdmissionSchedule</solutionClass>
      <entityClass>org.optaplanner.examples.pas.domain.BedDesignation</entityClass>
      <scoreDirectorFactory>
        <constraintProviderClass>org.optaplanner.examples.pas.score.PatientAdmissionScheduleConstraintProvider</constraintProviderClass>
      </scoreDirectorFactory>
      <termination>
        <secondsSpentLimit>300</secondsSpentLimit>
      </termination>
    </solver>
    <problemBenchmarks>
      <solutionFileIOClass>org.optaplanner.examples.pas.persistence.PatientAdmissionScheduleXmlSolutionFileIO</solutionFileIOClass>
      <inputSolutionFile>data/pas/unsolved/testdata01.xml</inputSolutionFile>
      <inputSolutionFile>data/pas/unsolved/testdata02.xml</inputSolutionFile>
      <inputSolutionFile>data/pas/unsolved/testdata03.xml</inputSolutionFile>
      <inputSolutionFile>data/pas/unsolved/testdata04.xml</inputSolutionFile>
      <inputSolutionFile>data/pas/unsolved/testdata05.xml</inputSolutionFile>
      <inputSolutionFile>data/pas/unsolved/testdata06.xml</inputSolutionFile>
      <inputSolutionFile>data/pas/unsolved/testdata07.xml</inputSolutionFile>
      <inputSolutionFile>data/pas/unsolved/testdata08.xml</inputSolutionFile>
      <inputSolutionFile>data/pas/unsolved/testdata09.xml</inputSolutionFile>
      <inputSolutionFile>data/pas/unsolved/testdata10.xml</inputSolutionFile>
      <inputSolutionFile>data/pas/unsolved/testdata11.xml</inputSolutionFile>
      <inputSolutionFile>data/pas/unsolved/testdata12.xml</inputSolutionFile>
      <inputSolutionFile>data/pas/unsolved/testdata13.xml</inputSolutionFile>
      <!--<problemStatisticType>BEST_SCORE</problemStatisticType>-->
      <!--<problemStatisticType>STEP_SCORE</problemStatisticType>-->
      <!--<problemStatisticType>SCORE_CALCULATION_SPEED</problemStatisticType>-->
      <!--<problemStatisticType>BEST_SOLUTION_MUTATION</problemStatisticType>-->
      <!--<problemStatisticType>MOVE_COUNT_PER_STEP</problemStatisticType>-->
      <!--<problemStatisticType>MEMORY_USE</problemStatisticType>-->
      <!--<singleStatisticType>CONSTRAINT_MATCH_TOTAL_BEST_SCORE</singleStatisticType>-->
      <!--<singleStatisticType>CONSTRAINT_MATCH_TOTAL_STEP_SCORE</singleStatisticType>-->
      <!--<singleStatisticType>PICKED_MOVE_TYPE_BEST_SCORE_DIFF</singleStatisticType>-->
      <!--<singleStatisticType>PICKED_MOVE_TYPE_STEP_SCORE_DIFF</singleStatisticType>-->
    </problemBenchmarks>
  </inheritedSolverBenchmark>

  <solverBenchmark>
    <name>First Fit Decreasing</name>
    <solver>
      <constructionHeuristic>
        <constructionHeuristicType>FIRST_FIT_DECREASING</constructionHeuristicType>
      </constructionHeuristic>
    </solver>
  </solverBenchmark>

  <solverBenchmark>
    <name>Weakest Fit Decreasing</name>
    <solver>
      <constructionHeuristic>
        <constructionHeuristicType>WEAKEST_FIT_DECREASING</constructionHeuristicType>
      </constructionHeuristic>
    </solver>
  </solverBenchmark>

  <solverBenchmark>
    <name>Tabu Search</name>
    <solver>
      <constructionHeuristic>
        <constructionHeuristicType>WEAKEST_FIT_DECREASING</constructionHeuristicType>
      </constructionHeuristic>
      <localSearch>
        <unionMoveSelector>
          <changeMoveSelector/>
          <swapMoveSelector/>
          <pillarSwapMoveSelector/>
        </unionMoveSelector>
        <acceptor>
          <entityTabuSize>7</entityTabuSize>
        </acceptor>
        <forager>
          <acceptedCountLimit>1000</acceptedCountLimit>
        </forager>
      </localSearch>
    </solver>
  </solverBenchmark>
  <solverBenchmark>
    <name>Late Acceptance</name>
    <solver>
      <constructionHeuristic>
        <constructionHeuristicType>WEAKEST_FIT_DECREASING</constructionHeuristicType>
      </constructionHeuristic>
      <localSearch>
        <unionMoveSelector>
          <changeMoveSelector/>
          <swapMoveSelector/>
          <pillarSwapMoveSelector/>
        </unionMoveSelector>
        <acceptor>
          <lateAcceptanceSize>200</lateAcceptanceSize>
        </acceptor>
        <forager>
          <acceptedCountLimit>1</acceptedCountLimit>
        </forager>
      </localSearch>
    </solver>
  </solverBenchmark>
</plannerBenchmark>
