I generated a small test problem as follows:
where \(F(x)=0\) has no issues, but \(G(y)=0\) is singular. I simply used:\[\begin{align}&y_1+y_2=1\\&y_1+y_2=1\end{align}\] Let's see what feedback we get:
Solver | Modeltype | Model Status | Feedback/Notes |
---|---|---|---|
Conopt | CNS | Locally Infeasible | ** Error in Square System: Pivot too small. **** ERRORS/WARNINGS IN EQUATION g(k1) 1 error(s): Pivot too small. **** ERRORS/WARNINGS IN VARIABLE y(k1) 1 error(s): Pivot too small. |
Ipopt | CNS | Solved | Feasible solution |
Knitro | CNS | Solved | Feasible solution |
Miles | MCP | Intermediate Infeasible | Failure to converge |
Minos | CNS | Unbounded | EXIT - The problem is unbounded (or badly scaled). |
Minos | CNS+basis | Solved | Feasible solution |
Path | CNS | Solved | Feasible solution |
Path | MCP | Optimal | Feasible solution |
Snopt | CNS | Solved | Feasible solution |
Some solvers will report a feasible solution (without a further hint). Conopt does not, but gives a good indication where things go wrong. We are not given the set of dependent equations, but Conopt at least points us clearly to one culprit.
Not related to my problem, but another question is: what if singular but no solution exists? E.g. use: \[\begin{align}&y_1+y_2=1\\&y_1+y_2=2\end{align}\] Conopt gives the same results as above. The other solvers will typically report "infeasible". In most cases a solution corresponding to a phase I "min sum of infeasibilities" objective is provided where \(x\) is feasible and \(y\) is infeasible. Some solvers just give back a solution with many infeasibilities.
No comments:
Post a Comment