Opened 17 months ago
Closed 3 months ago
#296 closed defect (migrated)
MUMPS solver problems
Reported by: | marco.giuntoli | Owned by: | ipopt-team |
---|---|---|---|
Priority: | normal | Component: | Ipopt |
Version: | 3.11 | Severity: | normal |
Keywords: | Cc: |
Description
Dears, I'm using IPOPT for some research studies. I'm looking a strange behavior due to IPOPT: in particular, I'm creating an instance of IPOPT inside a for-loop, but the result can be very different, specially in term of iteration numbers. I did some debug analysis and at the end I found this: if I run the ipopt with "print_level" equal to 10, I can see that from two different istance of IPOPT the first different data is this:
FROM INSTANCE 1: Component 1:
DenseVector? "SOL[ 0][ 0]" with 112 elements: SOL[ 0][ 0][ 1]=6.1341458048112744e-002
FROM INSTANCE 2 Component 1:
DenseVector? "SOL[ 0][ 0]" with 112 elements: SOL[ 0][ 0][ 1]=6.1341458048112467e-002
I think that this kind of results becomes from MUMPS solvers. Starting from this point the two instances takes two different ways and the solution can be unstable (doesn't find a solution).
I'm using visual studio 2017, c++, and I'm using IPOPT dll binary. I have tried 3.8, 3.9 and 3.11.0 but the problem reaming the same. Also, I'm using quasi-newton method for Hessian matrix.
Thanks a lot. Marco
Change History (3)
comment:1 follow-up: ↓ 2 Changed 16 months ago by stefan
comment:2 in reply to: ↑ 1 Changed 16 months ago by marco.giuntoli
Dear, thanks for your answer. Basically, this is the pseudo code:
-preparing object function (and its gradient); -preparing constraints function; -preparing jacobian function; -preparing x0;
for (1...N)
- Starting memory for IPOPT
- CreateIpoptProblem?(...)
- pass x=x0
- IpoptSolve?(x)
- get x
- FreeIpoptProblem?()
end
At each iteration have a different result (the differents starting after the 8th digit) and the interations can be different (from 15 iterations to 45 iterations). I'm using vs2017 with IpOpt?-vc10.dll: I think that this can be the problem. I need to use the same compiler.
Any suggestions? Thanks a lot.
Marco
Replying to stefan:
But you are running Ipopt on different problem instances here, right? Then it can (or should) happen that the solution process differs, of course. It is not so nice if the performance of Ipopt changes a lot due when there are only small changes in the problem instance, but I wouldn't know what to do about this.
comment:3 Changed 3 months ago by stefan
- Resolution set to migrated
- Status changed from new to closed
This ticket has been migrated to GitHub and will be followed up there: https://github.com/coin-or/Ipopt/issues/296
But you are running Ipopt on different problem instances here, right? Then it can (or should) happen that the solution process differs, of course. It is not so nice if the performance of Ipopt changes a lot due when there are only small changes in the problem instance, but I wouldn't know what to do about this.