I know that a novelty of CPLEX 10 is that it recognizes the suffix .lazy on constraints.
I also know how to use and define the lazy suffix using AMPL:
suffix lazy IN;
let {i in ORIG, j in 1..J} Flow[i,j].lazy := 1;
The following values can be given to the suffix lazy:
lazy := 1 ; CPLEX considers the corresponding constraint as a lazy constraint;
lazy := 2 ; CPLEX considers the corresponding constraint as a user cut;
lazy:= 3; CPLEX considers the corresponding constraint as both lazy constraint and user cut.
My question is:
What does it mean for CPLEX that a constraint is lazy, or is a user cut, or is both?
How will CPLEX use a lazy constraint in the branch-and-cut algorithm?
How will CPLEX use a user cut in the branch-and-cut algorithm?
How will CPLEX use a constraint defined as both user cut and lazy constraint in the branch-and-cut algorithm?
What is the differnce between there three options? What is the respective impact on these three options on the branching algorithm?
Pratim
_________________________________________________________________
All-in-one security and maintenance for your PC. Get a free 90-day trial!
http://www.windowsonecare.com/purchase/trial.aspx?sc_cid=wl_wlmail
.lazy = 1 is for lazy constraints. These constraints must be satisfied in a
feasible solution, but initially CPLEX does not put them all into the
problem being solved; it puts in only those that have been violated by a
solution that has been found. Possibly only a small fraction of the lazy
constraints will need to be put into the problem explicitly, and then the
rest will turn out to be satisfied anyhow; if this is the case then the work
of solving might be reduced, because a smaller constraint matrix and basis
matrix are used.
.lazy = 2 is for user cuts, and applies only when there are integer
variables. The user cuts are implied by the other constraints, and so they
are not needed at all; but they cut off some fractional solutions and so may
yield better lower bounds for the branch-and-bound procedure, thereby
speeding its search of the solution space. CPLEX does not put all of these
cuts into the problem it is solving, but rather only includes ones that cut
off a fractional solution that has been obtained at some node of the search
tree. Using only these "active" cuts may reduce solution time, because a
smaller constraint matrix and basis matrix are involved.
I don't see any reason why it could help to declare a constraint to be both
a user cut and a lazy constraint. As a user cut, the constraint would
always be satisfied, so there would be no reason to add it using the lazy
constraint mechanism.
Bob Fourer
4...@ampl.com
The lazy constraints and user cuts don't seem to be documented in any of the
AMPL/CPLEX materials, though they're mentioned in the regular CPLEX user's
guide. That's clearly something to be fixed in the next release.
Bob Fourer
4...@ampl.com
> -----Original Message-----
> From: am...@googlegroups.com [mailto:am...@googlegroups.com] On Behalf Of