[Clp] problem: CLP 1.17.3 Interior Point via OSI falsely not reporting unbounded

John Forrest jjhforrest at gmail.com
Sun Nov 10 05:40:26 EST 2019


Robert,

I am unable to reproduce the error but that may be because I do not know 
how you are using Interior Point with Osi as there is no option to do so.

I added OsiDoBarrierInInitial as a hint (in trunk) and in my test using 
OsiClpSolverInterface I added

solver.setHintParam(OsiDoBarrierInInitial,true,OsiHintTry);

and tried it on an unbounded problem.  I attach the files I used.

I see you are using OsiOslSolverInterface.hpp.  This is not in current 
distributions of Clp and it looks as if it was updated 16 years ago. 
Try swapping OsiClp for OsiOsl.

John Forrest
On 08/11/2019 23:36, Lacroix, Robert wrote:
> We have been relying on CLP daily for several years with our production planning tool for problems now typically having around 60,000 rows and 83,000 columns.
> To have such confidence in CLP we tested it extensively and CLP came out superior or comparable to 3 other solvers at the time we evaluated it.
> Having a working Open Solver Interface in our problem formulator was central to this evaluation and it is the key component which allowed us to change solvers (the previous solver had seen at least 20 years of service).
> 
> Naturally we have our own test suite of toy problems to ensure that we correctly implemented the Open Solver Interface.
> CLP 1.14.8 and CLP 1.16.11 both passed this test suite, using both the Simplex and Interior Point methods of CLP.
> 
> But moving to CLP 1.17.3 the OSI incorrectly reports an unbounded toy problem as having an optimal solution with CLP's Interior Point method, even though CLP's own output says the problem is unbounded or infeasible. In contrast, CLP's Simplex method correctly reports the problem is unbounded in its output and through the OSI. So something has changed in CLP or the OSI between 1.16.11 and 1.17.3
> 
> The status checks section in our formulator is this
> 
> #include "OsiOslSolverInterface.hpp"
> typedef OsiOslSolverInterface OsiXxxSolverInterface;
> 
> OsiXxxSolverInterface *si = new OsiXxxSolverInterface();
> 
> ...
> 
> 	if (si->isAbandoned()) {
> 		Namespace->solutionstate = mi_error;
> 		/* numerical issues, forget about variable values */
> 	}
> 	else if (si->isIterationLimitReached()) {
> 		Namespace->solutionstate = mi_max_iters_exceeded;
> 		solution = si->getColSolution();	/* no solution yet, get variable values anyway */
> 	}
> 	else if (si->isPrimalObjectiveLimitReached()) {
> 		Namespace->solutionstate = mi_not_solved;	/* solver has stopped */
> 		solution = si->getColSolution();	/* get variable values anyway */
> 	}
> 	else if (si->isProvenOptimal()) {
> 		Namespace->solutionstate = mi_normal;
> 		solution = si->getStrictColSolution();	/* ensure variables don't exceed bounds */
> 	}
> 	else if (si->isProvenPrimalInfeasible()) {
> 		Namespace->solutionstate = mi_infeasible;	/* also dual may be infeasible */
> 		solution = si->getColSolution();	/* solution can be anywhere */
> 	}
> 	else if (si->isProvenDualInfeasible()) {
> 		Namespace->solutionstate = mi_unbounded;	/* primal is feasible */
> 		solution = si->getColSolution();	/* solution can be anywhere */
> 	}
> 	else {
> 		Namespace->solutionstate = mi_error;	/* unknown, maybe cycling or error */
> 		/* potentially no variable values */
> 	}
> 
> I see the same issue whether isProvenOptimal() is coded as shown above or if it is moved to last place in this chain of if-else tests.
> So I don't think it's a coding problem on our end.
> 
> Since we have been relying on Simplex and it still works, I don't have authorization to spend time bisecting the git tree and debugging CLP/OSI.
> Any possibility of getting CLP/OSI fixed?
> 
> Robert Lacroix
> Manitoba Hydro
> 
> _______________________________________________
> Clp mailing list
> Clp at list.coin-or.org
> https://list.coin-or.org/mailman/listinfo/clp
> 

-------------- next part --------------
A non-text attachment was scrubbed...
Name: OsiSolverParameters.hpp
Type: text/x-c++hdr
Size: 4882 bytes
Desc: not available
URL: <http://list.coin-or.org/pipermail/clp/attachments/20191110/e0025741/attachment-0003.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OsiClpSolverInterface.cpp
Type: text/x-c++src
Size: 378766 bytes
Desc: not available
URL: <http://list.coin-or.org/pipermail/clp/attachments/20191110/e0025741/attachment-0004.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: osibarrier.cpp
Type: text/x-c++src
Size: 17140 bytes
Desc: not available
URL: <http://list.coin-or.org/pipermail/clp/attachments/20191110/e0025741/attachment-0005.bin>


More information about the Clp mailing list