<?xml version="1.0" encoding="UTF-8"?>
<solver xmlns="https://www.optaplanner.org/xsd/solver" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="https://www.optaplanner.org/xsd/solver https://www.optaplanner.org/xsd/solver/solver.xsd">
  <!-- To slowly prove there are no bugs in this code -->
  <!--<environmentMode>FULL_ASSERT</environmentMode>-->
  <!-- To solve faster by saturating multiple CPU cores -->
  <!--<moveThreadCount>AUTO</moveThreadCount>-->

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

  <scoreDirectorFactory>
    <constraintProviderClass>org.optaplanner.examples.travelingtournament.score.TravelingTournamentConstraintProvider</constraintProviderClass>
    <!--<scoreDrl>org/optaplanner/examples/travelingtournament/optional/score/travelingTournamentConstraints.drl</scoreDrl>-->
    <!--<assertionScoreDirectorFactory>-->
    <!--<scoreDrl>org/optaplanner/examples/travelingtournament/optional/score/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>
