ILOG CPLEX 11.0 User's Manual > Languages and APIs > ILOG Concert Technology for Java Users > Modeling an Optimization Problem with Concert Technology

An optimization problem is represented by a set of interconnected modeling objects in an instance of IloCplex or IloCplexModeler. Modeling objects in Concert Technology are objects of type IloNumVar and its extensions, or IloAddable and its extensions. Since these are Java interfaces and not classes, objects of these types cannot be created explicitly. Rather, modeling objects are created using methods of an instance of IloModeler or one of its extensions, such as IloMPModeler or IloCPModeler.

Notes

The class IloCplex extends IloCplexModeler. All the modeling methods in IloCplex derive from IloCplexModeler. IloCplex implements the solving methods.

The class IloCplexModeler, which implements IloMPModeler, makes it possible for a user to build models in a Java application as pure Java objects, without using the class IloCplex.

In particular, a model built with IloCplexModeler using no instance of IloCplex does not require loading of the CPLEX.dll nor any shared library.

Furthermore, IloCplexModeler is serializable. For example, a user may develop a pure Java application that builds a model with IloCplexModeler and sends the model and modeling objects off to an optimization server that uses IloCplex.

The example CplexServer.java shows you how to write an optimization server that accepts pure Java model taking advantage of the class IloCplexModeler in a native J2EE client application.

This discussion concentrates on IloModeler and IloMPModeler because the classes IloCplex and IloCplexModeler implement these interfaces and thus inherit their methods. To create a new modeling object, you must first create the IloModeler which will be used to create the modeling object. For the discussion here, the model will be an instance of IloCplex, and it is created like this:

  IloCplex cplex = new IloCplex();

Since class IloCplex implements IloMPModeler (and thus its parent interface IloModeler) all methods from IloMPModeler and IloModeler can be used for building a model. IloModeler defines the methods to:

Models that consist only of such constructs can be built and solved with any ILOG optimizer implementing the IloModeler interface, including IloCplex, which implements the IloMPModeler extension.

The IloMPModeler interface extends IloModeler by adding functionality specific to mathematical programming applications. This functionality includes these additional modeling object types:

It also includes these modeling features to support specific needs:

Table 2.1 summarizes those observations about the interfaces of ILOG CPLEX with Concert Technology for Java users.

Table 2.1 Modeling Classes of ILOG CPLEX with Concert Technology for Java Users
To Model This  
Use an Object of This Class or Interface 
variable 
IloNumVar and its extensions IloIntVar and IloSemiContVar 
range constraint 
IloRange with (piecewise) linear or quadratic expressions  
other relational constraint 
IloConstraint of the form expr1 relation expr2, where both expressions are linear or quadratic and may optionally contain piecewise linear terms. 
LP matrix 
IloLPMatrix 
linear or quadratic objective 
IloObjective with (piecewise) linear or quadratic expressions 
variable type-conversion  
IloConversion 
special ordered set 
IloSOS1 or IloSOS2 
logical constraints 
IloOr, IloAnd, and methods such as not 

For an explanation of quadratic constraints, see Solving Problems with Quadratic Constraints (QCP). For more information about quadratic objective functions, see Solving Problems with a Quadratic Objective (QP). For examples of piecewise linear constraints, see Using Piecewise Linear Functions in Optimization: a Transport Example. For a description of special ordered sets, see Using Special Ordered Sets (SOS). For more about logical constraints, see Logical Constraints in Optimization.