Hello all, I have recently started using Couenne to solve MINLPs and have now encountered problems where I don’t obtain a solution in a reasonable amount of time. I am wondering if I can get set a time limit and obtain the best feasible solution for my problem. Right now if I set a time limit of say 10 minutes, when I try to access the values of the solution I get an error because the problem wasn’t solved globally in the time period.
When running the solver I see two things, first I see
Couenne: new cutoff value 2.4950000000e+01
Cbc0010I After 1600 nodes, 437 on tree, 1e+50 best solution, best possible 23.235597
At the end I see
Lower bound: 23.2862
Upper bound: 24.95 (gap: 6.85%)
So the upper bound matches the cutoff value. Is there a way to get the values of the variables that would provide me the upper bound value? So that even if I timeout and don’t get the best answer I still have something.
Are you using Couenne through JuMP? If so, the recommended way to query solutions is to check that a primal solution indeed exists.
Normally, if a solver has found a feasible solution (even if it was not able to prove global optimality), it should let you query it. In your case, you want to check that
primal_status(model) == FEASIBLE_POINT.
If, for some reason, the solver log suggests that a feasible solution has been found, but the above check fails, there may be an issue in either Couenne itself or its wrapper.
Can you provide a reproducible example? (you can have a look here for guidelines on how to do that)
If you’re calling through AmplNLWriter, then it depends on whether Couenne writes a
.sol file before existing, and what the contents of that are.
Can you post the results of calling
optimize!? That should tell us what happened.
Hi @odow: Can you please take a look at my Julia/JuMP - Couenne issue that I just posted in here?
I was using AmplNLWriter. Thanks in advance.
Di you have a reproducible example?
Hi Oscar: Thank you for your reply to here and in stackoverflow. My code involves thousands of integer variables and loading external data. I will work on creating a small sample problem, reproducing this scenario.
You could also use
JuMP.write_to_file(model, "problem.nl") instead of
optimize! and then upload that.
Hi Oscar @odow : I tried to put the nl file here. But the size (44381 lines) exceeds the limit on # of characters allowed. How to upload the nl file? I am going to reduce the problem size and give you a small-size example.
Can you open an issue here: Issues · jump-dev/AmplNLWriter.jl · GitHub? GitHub let’s you upload text files as attachments.