IBM ILOG Dispatcher User's Manual > The Basics > IBM ILOG Dispatcher Concepts

In this lesson, you will learn how to:

IBM® ILOG® Dispatcher is a C++ library that makes it easier to develop applications for routing problems. It is based on IBM ILOG Concert Technology and IBM ILOG Solver, a generic tool for object-oriented constraint programming. One of the key advantages of constraint programming lies in the fact that it dissociates the representation of the problem, called the model, from the search algorithms used to solve it.

To find a solution to a routing problem using Dispatcher, you use a three-stage method: describe, model, and solve.

The first stage is to describe the problem in natural language. For more information, see the section "Describe".

The second stage is to use Dispatcher classes to model the problem. The model is composed of basic objects: nodes--or geographic locations, visits, and vehicles. These objects are associated with dimensions, such as weight, time, and distance. The decision variables in a Dispatcher model are the variables representing if a visit is performed--performed-variables--and the variables representing the visit immediately after a given visit--next-variables. A solution to a routing problem--a routing plan--is defined by the values assigned to each of these decision variables. A Dispatcher model also includes side constraints, such as capacity constraints, time windows, and precedence constraints. The objective is to lower the cost of a routing plan. The total cost of a routing plan is determined by summing the total costs for all vehicles and adding any costs related to unperformed visits. For more information, see the section "Model".

The third stage is to use local search to solve the routing problem. Dispatcher uses a two-phase method to solve problems. The first phase consists of generating a first solution that satisfies the problem. In the second phase, you improve this first solution using local search. For more information, see the section "Solve".

This first lesson is designed to help you understand the basic concepts of Dispatcher. This overview is somewhat theoretical; it presents the definitions of terms that appear in the rest of the manual. In later lessons, you will work through problems by describing, modeling, and solving routing problems. In these lessons, you will learn how to use the classes and functions that you learn about here.