I’m trying to compare solving a problem with CPLEX vs constraint programming in CPOptimizer. When I use CPOptimizer for my project, I found it could find the optimal solution (same with the optimal solution found by CPLEX) extremely fast (5s vs 350s in CPLEX). However, the CPOptimizer couldn’t stop automatically because the Gap is still beyond 90% due to the best bound increasing extremely slowly...and it turned out the best bound finally reached the optimal objective value after ~3000s and then the CPOptimizer stopped. That’s confused me a lot. So my question would be:
- How does this “best bound” come from in constraint programming? Is it the same thing with lower bound in CPLEX?
- When a problem is very complex, is it normal to observe what I saw-the best bound increaseing very slowly?
- I do have the MTZ subtour elimination constraint in my problem which is famous for its weak LP relaxation. Will this be part of the reason why the best bound increase so slow?
- Is it possible to set a stopping cretiria other than using the gap? (like no improvement in 1000 iteration, etc)?