JBoss.orgCommunity Documentation

Drools Planner User Guide


1. Planner introduction
1.1. What is Drools Planner?
1.2. Status of Drools Planner
1.3. Getting Drools Planner and running the examples
1.3.1. Getting the release package and running the examples
1.3.2. Get it with maven
1.3.3. Build it from source
1.4. Questions, issues and blogs
2. Use cases and examples
2.1. Introduction
2.2. The n queens example
2.2.1. Screenshot
2.2.2. Problem statement
2.2.3. Solution(s)
2.2.4. Problem size
2.2.5. Domain class diagram
2.3. The Manners 2009 example
2.3.1. Problem statement
2.4. The Traveling Salesman Problem (TSP) example
2.4.1. Problem statement
2.5. The Traveling Tournament Problem (TTP) example
2.5.1. Screenshot
2.5.2. Problem statement
2.5.3. Simple and smart implementation
2.5.4. Problem size
2.6. Cloud balancing
2.6.1. Problem statement
2.7. The ITC 2007 curriculum course example
2.7.1. Problem statement
2.8. The ITC 2007 examination example
2.8.1. Screenshot
2.8.2. Problem statement
2.8.3. Problem size
2.8.4. Domain class diagram
2.9. The patient admission scheduling (PAS) example
2.10. The INRC 2010 nurse rostering example
2.10.1. Problem statement
3. Planner configuration
3.1. Types of solvers
3.1.1. Brute force
3.1.2. Branch and bound
3.1.3. Simplex
3.1.4. Genetic algorithms
3.1.5. Local search (tabu search, simulated annealing, ...)
3.2. The size of real world problems
3.3. The Solver interface
3.4. Building a Solver
3.4.1. Environment mode
3.5. The Solution interface
3.5.1. The getScore and setScore methods
3.5.2. The getFacts method
3.5.3. The cloneSolution method
3.6. The starting solution
3.6.1. A simple filler algorithm
3.6.2. StartingSolutionInitializer
3.7. Solving a problem
4. Score calculation with a rule engine
4.1. Rule based score calculation
4.2. Defining the score rules source
4.2.1. A scoreDrl resource on the classpath
4.2.2. A RuleBase (possibly defined by Guvnor)
4.3. Implementing a score rule
4.4. Delta based score calculation
4.5. The ScoreDefinition interface
4.6. Tips and tricks
5. Local search solver
5.1. Overview
5.2. A move
5.3. Move generation
5.4. A step
5.5. Getting stuck in local optima
5.6. Deciding the next step
5.6.1. Selector
5.6.2. Acceptor
5.6.3. Forager
5.7. Best solution
5.8. Termination
5.8.1. TimeMillisSpendTermination
5.8.2. StepCountTermination
5.8.3. ScoreAttainedTermination
5.8.4. UnimprovedStepCountTermination
5.8.5. Combining Terminations
5.8.6. Another thread can ask a Solver to terminate early
5.9. Using a custom Selector, Acceptor, Forager or Termination
6. Benchmarking and tweaking
6.1. Finding the best configuration
6.2. Building a Benchmarker
6.3. Best score over time statistic (graph and CSV)
Index