Originally posted by: martin#r
Hi,
I am doing column generation in cplex. Due to small overhead I generate all constraints in advance. As a result some constraints are trivial in the beginning. For example 0 <= x <= inf, when x is a variable between 0 and 1. In the pricing iterations these constraints get modified to 'make sense'. During this step of the solution process all variables are continuous (i.e. IloNum).
The problem I encountered is that getDual fails for some constraints, i.e. I get "CPLEX Error 1217: No solution exists.". What I already tried is to disable preprocessing via:
cplex.setParam( IloCplex::PreInd, false );
cplex.setParam( IloCplex::RelaxPreInd, 0 );
cplex.setParam( IloCplex::RepeatPresolve, 0 );
cplex.setParam( IloCplex::PreslvNd, -1 );
cplex.setParam( IloCplex::Probe, -1 );
cplex.setParam( IloCplex::AggInd, 0 );
cplex.setParam( IloCplex::Reduce, 0 );
cplex.setParam( IloCplex::PrePass, 0 );
and I also tried adding all variables explicitly via model.add. My current work-around is to catch the exceptions and assume dual values of 0 for this case which seems to work. I also tracked the number of exceptions during each iteration and they turned out to decrease as more columns are generated.
So is there a better way to recognize for which consraints dual values are available or might this just be the consequence of some other problem?
Thanks
martin
#CPLEXOptimizers#DecisionOptimization