<?xml version="1.0" encoding="UTF-8"?>
<solver>
  <!--<environmentMode>FULL_ASSERT</environmentMode>--><!-- To slowly prove there are no bugs in this code -->
  <!--<moveThreadCount>AUTO</moveThreadCount>--><!-- To solve faster by saturating multiple CPU cores -->

  <solutionClass>org.optaplanner.examples.travelingtournament.domain.TravelingTournament</solutionClass>
  <entityClass>org.optaplanner.examples.travelingtournament.domain.Match</entityClass>

  <scoreDirectorFactory>
    <!--<constraintProviderClass>org.optaplanner.examples.travelingtournament.optional.score.TravelingTournamentConstraintProvider</constraintProviderClass>-->
    <scoreDrl>org/optaplanner/examples/travelingtournament/solver/travelingTournamentConstraints.drl</scoreDrl>
    <!--<assertionScoreDirectorFactory>-->
    <!--<scoreDrl>org/optaplanner/examples/travelingtournament/solver/travelingTournamentConstraints.drl</scoreDrl>-->
    <!--</assertionScoreDirectorFactory>-->
  </scoreDirectorFactory>

  <termination>
    <bestScoreLimit>0hard/0soft</bestScoreLimit>
  </termination>

  <!-- WARNING: This is an old, complex, tailored example. You're probably better off with one of the other examples. -->
  <localSearch>
    <unionMoveSelector>
      <swapMoveSelector>
        <cacheType>PHASE</cacheType>
        <selectionOrder>SHUFFLED</selectionOrder> <!-- TODO with no acceptedCountLimit this should be ORIGINAL -->
        <filterClass>org.optaplanner.examples.travelingtournament.solver.move.factory.InverseMatchSwapMoveFilter</filterClass>
      </swapMoveSelector>
      <moveListFactory>
        <cacheType>STEP</cacheType>
        <selectionOrder>SHUFFLED</selectionOrder> <!-- TODO with no acceptedCountLimit this should be ORIGINAL -->
        <moveListFactoryClass>org.optaplanner.examples.travelingtournament.solver.move.factory.MatchChainRotationsMoveFactory</moveListFactoryClass>
      </moveListFactory>
    </unionMoveSelector>
    <acceptor>
      <simulatedAnnealingStartingTemperature>2hard/10000soft</simulatedAnnealingStartingTemperature>
    </acceptor>
    <forager>
      <acceptedCountLimit>4</acceptedCountLimit>
    </forager>
  </localSearch>
</solver>
