You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 6 Next »

Introduction

This article is a tutorial on using callbacks, a group of advanced CPLEX features. The Traveling Salesmen Problem (TSP) will be used as a running example. CPLEX will be accessed through the Java Concert Technology interface. It will be assumed that the reader has completed all of the prerequisites given here.

Background: The Traveling Salesmen Problem

The Traveling Salesmen Problem (TSP) is as follows: given a set of cities, or vertices

Unknown macro: {mathinline}

V

a set of direct routes between cities, or edges

Unknown macro: {mathinline}

E

, and for each edge

Unknown macro: {mathinline}

e

a distance

Unknown macro: {mathinline}

d_e

, what is the shortest tour through all the cities that visits each city exactly once? As this problem is quite difficult, we often consider the special case where

Unknown macro: {mathinline}

d_e

is assumed to be metric, the metric TSP.

One good integer programming formulation for TSP is the cutset formulation. For any

Unknown macro: {mathinline}

S \subset V

, let

Unknown macro: {mathinline}

\delta(S) = {(u,v) \in E \mid u \in S, v \not \in S}

. With a slight abuse of notation, for

Unknown macro: {mathinline}

v \in V

, we also let

Unknown macro: {mathinline}

\delta(v) = \delta({v})

. The cutset formulation is:

Unknown macro: {mathdisplay}

\begin

Unknown macro: {aligned}

&\min & \sum_

Unknown macro: {e in E}

d_e x_e
&\text

Unknown macro: {subject to}

& \sum_

Unknown macro: {e in delta(v)}

x_e &= 2&v&\in V
&& \sum_

Unknown macro: {e in delta(S)}

x_e &\geq 2& S &\subset V&S&\neq V,\emptyset
\end

  • No labels