-
Notifications
You must be signed in to change notification settings - Fork 37
Open
Labels
Description
I just had an issue with the Ipopt plugin and a problem containing some redundant equations:
Exception of type: TOO_FEW_DOF in file "../../../../Ipopt/src/Interfaces/IpIpoptApplication.cpp" at line 887:
Exception message: status != TOO_FEW_DEGREES_OF_FREEDOM evaluated false: Too few degrees of freedom (rethrown)!
EXIT: Problem has too few degrees of freedom.
Apparently, Ipopt assumes that there is no redundancy:
This somehow assumes that your equations are not redundant, which would be bad in general anyway.
The same thing probably happens in other solvers. Thus, it would be nice to detect this in a precomputation step to ease debugging (redundant constraints would be reported back to the users before letting Ipopt choke on them).
In the meantime, for Ipopt, we can use some undocumented experimental hidden features:
name: dependency_detector (string)
valid values: none, mumps, wsmp, ma28
default: none
description: Indicates which linear solver should be used to detect
linearly dependent equality constraints. The default and available
choices depend on how Ipopt has been compiled. This is experimental and
does not work well.
name: dependency_detection_with_rhs (string)
valid values: no, yes
default: no
description: Indicates if the right hand sides of the constraints should
be considered during dependency detection.
no only look at gradients
yes also consider right hand side
name: mumps_dep_tol (real)
default: 0
description; Pivot threshold for detection of linearly dependent
constraints in MUMPS.
When MUMPS is used to determine linearly dependent constraints, this is
determines the threshold for a pivot to be considered zero. This is
CNTL(3) in MUMPS.