org.optaplanner.examples.app.benchmark.generalOptaPlannerBenchmarkConfig.xml Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of optaplanner-examples Show documentation
Show all versions of optaplanner-examples Show documentation
OptaPlanner solves planning problems.
This lightweight, embeddable planning engine implements powerful and scalable algorithms
to optimize business resource scheduling and planning.
This module contains the examples which demonstrate how to use it in a normal Java application.
<?xml version="1.0" encoding="UTF-8"?> <plannerBenchmark> <benchmarkDirectory>local/data/general</benchmarkDirectory> <warmUpSecondsSpend>30</warmUpSecondsSpend> <inheritedSolverBenchmark> <problemBenchmarks> <problemStatisticType>BEST_SCORE</problemStatisticType> </problemBenchmarks> </inheritedSolverBenchmark> <solverBenchmark> <name>travelingtournament_tabuSearch</name> <problemBenchmarks> <xstreamAnnotatedClass>org.optaplanner.examples.travelingtournament.domain.TravelingTournament</xstreamAnnotatedClass> <inputSolutionFile>data/travelingtournament/unsolved/1-nl14.xml</inputSolutionFile> </problemBenchmarks> <solver> <solutionClass>org.optaplanner.examples.travelingtournament.domain.TravelingTournament</solutionClass> <planningEntityClass>org.optaplanner.examples.travelingtournament.domain.Match</planningEntityClass> <scoreDirectorFactory> <scoreDefinitionType>HARD_SOFT</scoreDefinitionType> <scoreDrl>/org/optaplanner/examples/travelingtournament/solver/travelingTournamentScoreRules.drl</scoreDrl> </scoreDirectorFactory> <termination> <maximumMinutesSpend>5</maximumMinutesSpend> </termination> <localSearch> <unionMoveSelector> <swapMoveSelector> <cacheType>PHASE</cacheType> <selectionOrder>SHUFFLED</selectionOrder> <filterClass>org.optaplanner.examples.travelingtournament.solver.move.factory.InverseMatchSwapMoveFilter</filterClass> </swapMoveSelector> <moveListFactory> <cacheType>STEP</cacheType> <selectionOrder>SHUFFLED</selectionOrder> <moveListFactoryClass>org.optaplanner.examples.travelingtournament.solver.move.factory.MatchChainRotationsMoveFactory</moveListFactoryClass> </moveListFactory> </unionMoveSelector> <acceptor> <solutionTabuSize>1500</solutionTabuSize> <moveTabuSize>7</moveTabuSize> </acceptor> <forager> <!-- Real world problems require to use of <acceptedCountLimit> --> </forager> </localSearch> </solver> </solverBenchmark> <solverBenchmark> <name>curriculumcourse_tabuSearch</name> <problemBenchmarks> <xstreamAnnotatedClass>org.optaplanner.examples.curriculumcourse.domain.CourseSchedule</xstreamAnnotatedClass> <inputSolutionFile>data/curriculumcourse/unsolved/comp08.xml</inputSolutionFile> <problemStatisticType>BEST_SCORE</problemStatisticType> </problemBenchmarks> <solver> <solutionClass>org.optaplanner.examples.curriculumcourse.domain.CourseSchedule</solutionClass> <planningEntityClass>org.optaplanner.examples.curriculumcourse.domain.Lecture</planningEntityClass> <scoreDirectorFactory> <scoreDefinitionType>HARD_SOFT</scoreDefinitionType> <scoreDrl>/org/optaplanner/examples/curriculumcourse/solver/curriculumCourseScoreRules.drl</scoreDrl> </scoreDirectorFactory> <termination> <maximumMinutesSpend>10</maximumMinutesSpend> </termination> <constructionHeuristic> <constructionHeuristicType>FIRST_FIT_DECREASING</constructionHeuristicType> <forager> <pickEarlyType>FIRST_NON_DETERIORATING_SCORE</pickEarlyType> </forager> </constructionHeuristic> <localSearch> <unionMoveSelector> <moveListFactory> <cacheType>PHASE</cacheType> <moveListFactoryClass>org.optaplanner.examples.curriculumcourse.solver.move.factory.PeriodChangeMoveFactory</moveListFactoryClass> </moveListFactory> <moveListFactory> <cacheType>PHASE</cacheType> <moveListFactoryClass>org.optaplanner.examples.curriculumcourse.solver.move.factory.RoomChangeMoveFactory</moveListFactoryClass> </moveListFactory> <moveListFactory> <cacheType>PHASE</cacheType> <moveListFactoryClass>org.optaplanner.examples.curriculumcourse.solver.move.factory.LectureSwapMoveFactory</moveListFactoryClass> </moveListFactory> </unionMoveSelector> <acceptor> <entityTabuSize>10</entityTabuSize> <solutionTabuSize>1500</solutionTabuSize> </acceptor> <forager> <acceptedCountLimit>900</acceptedCountLimit><!-- TODO tweak me --> </forager> </localSearch> </solver> </solverBenchmark> <solverBenchmark> <name>examination_tabuSearch</name> <problemBenchmarks> <xstreamAnnotatedClass>org.optaplanner.examples.examination.domain.Examination</xstreamAnnotatedClass> <inputSolutionFile>data/examination/unsolved/exam_comp_set2.xml</inputSolutionFile> </problemBenchmarks> <solver> <solutionClass>org.optaplanner.examples.examination.domain.Examination</solutionClass> <planningEntityClass>org.optaplanner.examples.examination.domain.Exam</planningEntityClass> <scoreDirectorFactory> <scoreDefinitionType>HARD_SOFT</scoreDefinitionType> <scoreDrl>/org/optaplanner/examples/examination/solver/examinationScoreRules.drl</scoreDrl> </scoreDirectorFactory> <termination> <maximumMinutesSpend>10</maximumMinutesSpend> </termination> <customSolverPhase> <customSolverPhaseCommandClass>org.optaplanner.examples.examination.solver.solution.initializer.ExaminationSolutionInitializer</customSolverPhaseCommandClass> </customSolverPhase> <localSearch> <unionMoveSelector> <moveListFactory> <cacheType>PHASE</cacheType> <moveListFactoryClass>org.optaplanner.examples.examination.solver.move.factory.PeriodChangeMoveFactory</moveListFactoryClass> </moveListFactory> <moveListFactory> <cacheType>PHASE</cacheType> <moveListFactoryClass>org.optaplanner.examples.examination.solver.move.factory.RoomChangeMoveFactory</moveListFactoryClass> </moveListFactory> <moveListFactory> <cacheType>PHASE</cacheType> <moveListFactoryClass>org.optaplanner.examples.examination.solver.move.factory.ExamSwapMoveFactory</moveListFactoryClass> </moveListFactory> </unionMoveSelector> <acceptor> <solutionTabuSize>1000</solutionTabuSize> <entityTabuSize>10</entityTabuSize> </acceptor> <forager> <acceptedCountLimit>1400</acceptedCountLimit> </forager> </localSearch> </solver> </solverBenchmark> <solverBenchmark> <name>pas_tabuSearch</name> <problemBenchmarks> <xstreamAnnotatedClass>org.optaplanner.examples.pas.domain.PatientAdmissionSchedule</xstreamAnnotatedClass> <inputSolutionFile>data/pas/unsolved/testdata01.xml</inputSolutionFile> </problemBenchmarks> <solver> <solutionClass>org.optaplanner.examples.pas.domain.PatientAdmissionSchedule</solutionClass> <planningEntityClass>org.optaplanner.examples.pas.domain.BedDesignation</planningEntityClass> <scoreDirectorFactory> <scoreDefinitionType>HARD_SOFT</scoreDefinitionType> <scoreDrl>/org/optaplanner/examples/pas/solver/patientAdmissionScheduleBaseScoreRules.drl</scoreDrl> </scoreDirectorFactory> <termination> <maximumMinutesSpend>5</maximumMinutesSpend> </termination> <customSolverPhase> <customSolverPhaseCommandClass>org.optaplanner.examples.pas.solver.solution.initializer.PatientAdmissionScheduleSolutionInitializer</customSolverPhaseCommandClass> </customSolverPhase> <localSearch> <moveListFactory> <moveListFactoryClass>org.optaplanner.examples.pas.solver.move.factory.BedDesignationPillarPartSwapMoveFactory</moveListFactoryClass> </moveListFactory> <acceptor> <solutionTabuSize>1000</solutionTabuSize> <undoMoveTabuSize>3</undoMoveTabuSize> </acceptor> <forager> <acceptedCountLimit>500</acceptedCountLimit> </forager> </localSearch> </solver> </solverBenchmark> <solverBenchmark> <name>nurseRostering_tabuSearch</name> <problemBenchmarks> <xstreamAnnotatedClass>org.optaplanner.examples.nurserostering.domain.NurseRoster</xstreamAnnotatedClass> <inputSolutionFile>data/nurserostering/unsolved/medium01.xml</inputSolutionFile> </problemBenchmarks> <solver> <solutionClass>org.optaplanner.examples.nurserostering.domain.NurseRoster</solutionClass> <planningEntityClass>org.optaplanner.examples.nurserostering.domain.ShiftAssignment</planningEntityClass> <scoreDirectorFactory> <scoreDefinitionType>HARD_SOFT</scoreDefinitionType> <scoreDrl>/org/optaplanner/examples/nurserostering/solver/nurseRosteringScoreRules.drl</scoreDrl> </scoreDirectorFactory> <termination> <maximumMinutesSpend>10</maximumMinutesSpend> </termination> <constructionHeuristic> <constructionHeuristicType>BEST_FIT</constructionHeuristicType> </constructionHeuristic> <localSearch> <unionMoveSelector> <moveListFactory> <cacheType>PHASE</cacheType> <moveListFactoryClass>org.optaplanner.examples.nurserostering.solver.move.factory.EmployeeChangeMoveFactory</moveListFactoryClass> </moveListFactory> <moveListFactory> <cacheType>PHASE</cacheType> <moveListFactoryClass>org.optaplanner.examples.nurserostering.solver.move.factory.ShiftAssignmentSwapMoveFactory</moveListFactoryClass> </moveListFactory> <moveListFactory> <cacheType>STEP</cacheType> <moveListFactoryClass>org.optaplanner.examples.nurserostering.solver.move.factory.ShiftAssignmentPillarPartSwapMoveFactory</moveListFactoryClass> </moveListFactory> </unionMoveSelector> <acceptor> <solutionTabuSize>1000</solutionTabuSize> <entityTabuSize>11</entityTabuSize> </acceptor> <forager> <acceptedCountLimit>800</acceptedCountLimit> </forager> </localSearch> </solver> </solverBenchmark> <solverBenchmark> <name>nurseRostering_simulatedAnnealing</name> <problemBenchmarks> <xstreamAnnotatedClass>org.optaplanner.examples.nurserostering.domain.NurseRoster</xstreamAnnotatedClass> <inputSolutionFile>data/nurserostering/unsolved/medium01.xml</inputSolutionFile> </problemBenchmarks> <solver> <solutionClass>org.optaplanner.examples.nurserostering.domain.NurseRoster</solutionClass> <planningEntityClass>org.optaplanner.examples.nurserostering.domain.ShiftAssignment</planningEntityClass> <scoreDirectorFactory> <scoreDefinitionType>HARD_SOFT</scoreDefinitionType> <scoreDrl>/org/optaplanner/examples/nurserostering/solver/nurseRosteringScoreRules.drl</scoreDrl> </scoreDirectorFactory> <termination> <maximumMinutesSpend>10</maximumMinutesSpend> </termination> <constructionHeuristic> <constructionHeuristicType>BEST_FIT</constructionHeuristicType> </constructionHeuristic> <localSearch> <unionMoveSelector> <moveListFactory> <cacheType>PHASE</cacheType> <moveListFactoryClass>org.optaplanner.examples.nurserostering.solver.move.factory.EmployeeChangeMoveFactory</moveListFactoryClass> </moveListFactory> <moveListFactory> <cacheType>PHASE</cacheType> <moveListFactoryClass>org.optaplanner.examples.nurserostering.solver.move.factory.ShiftAssignmentSwapMoveFactory</moveListFactoryClass> </moveListFactory> <moveListFactory> <cacheType>STEP</cacheType> <moveListFactoryClass>org.optaplanner.examples.nurserostering.solver.move.factory.ShiftAssignmentPillarPartSwapMoveFactory</moveListFactoryClass> </moveListFactory> </unionMoveSelector> <acceptor> <simulatedAnnealingStartingTemperature>0hard/8soft</simulatedAnnealingStartingTemperature> <entityTabuSize>5</entityTabuSize> </acceptor> <forager> <!--<pickEarlyType>FIRST_BEST_SCORE_IMPROVING</pickEarlyType>--> <acceptedCountLimit>4</acceptedCountLimit> </forager> </localSearch> </solver> </solverBenchmark> </plannerBenchmark>