Originally posted by: EdKlotz
When you say you "start with a lowerbound of 0", what exactly do you mean? Do you mean that is the lower bound CPLEX reports when it solves the initial LP relaxation at the root node of the branch and bound tree? And does the tighter lower bound arise because of the subtour elimination constraints you add? Or do you add a constraint on the objective to enforce these lower bounds? And how do you know that the solution with objective 6526 is not optimal? Given that you appear to be minimizing, that means you are saying that CPLEX claims an infeasible solution is optimal. Here are some tactics that might help better assess if that is the case. While you can execute these within your program, you may find it easier to export a SAV file of the model from your program and do these tests in the interactive CPLEX optimizer.
1) Check the solution quality. On some models, solutions that just barely satisfy CPLEX's feasibility and integrality tolerances can have better objectives than expected due to those slight violations. However, this typically requires some combination of large objective coefficients and numerical instability or ill conditioning, neither of which typically appears in TSP types of problems. Still, make sure this is not involved.
2) Change the problem to fixed that yields the supposedly "fake" optimal objective, and solve the fixed LP. Is it infeasible? If not, then you should take a look at the solution values and assess why you think there are not acceptable? Is there some constraint that you think that solution doesn't satisfy? If so, make sure that constraint is truly present in the model. One way you can get an objective that is better than expected is if your model is missing some constraints that you intended to include, or if some of the constraints in the model are not exactly the ones you intended
3) Turn off dual presolve reductions (i.e. set the presolve reduce parameter to 1) and turn off all presolve reductions completely (i.e. set presolve reduce to 0). Does this change the optimal solution objective value?
4) Take the model that solves with an optimal solution of 6547, and add a constraint that the objective function must be <= 6526. Is the resulting model infeasible? If so, run CPLEX's conflict refiner on this infeasible model to get a minimal set of constraints and bounds that explains why this model is infeasible. That output should shed some light on what is happening here.
#CPLEXOptimizers#DecisionOptimization