Choosing an optimizer: network considerations

Describes conditions under which the network optimizer is appropriate.

As explained in Using the Callable Library in an application, to exploit IBM ILOG CPLEX in your own application, you must first create a CPLEX environment, instantiate a problem object, and populate the problem object with data. As your next step, you call a CPLEX optimizer.

If part of your problem is structured as a network, then you may want to consider calling the CPLEX network optimizer. This optimizer may have a positive impact on performance. There are two alternative ways of calling the network optimizer:

  • If your problem is an LP where a large part is a network structure, you may call the network optimizer for the populated LP object.

  • If your entire problem consists of a network flow, you should consider creating a network object instead of an LP object. Then populate it, and solve it with the network optimizer. This alternative generally yields the best performance because it does not incur the overhead of LP data structures. This option is available only for the Callable library.

How much performance improvement you observe between using only a simplex optimizer versus using the network optimizer followed by either of the simplex optimizers depends on the number and nature of the other constraints in your problem. On a pure network problem, performance has been measured as 10–100 times faster with the network optimizer. However, if the network component of your problem is small relative to its other parts, then using the solution of the network part of the problem as a starting point for the remainder may or may not improve performance, compared to running the primal or dual simplex optimizer. Only experiments with your own problem can tell.