Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Detect redundant equations #77

Open
bchretien opened this issue Oct 20, 2014 · 2 comments
Open

Detect redundant equations #77

bchretien opened this issue Oct 20, 2014 · 2 comments

Comments

@bchretien
Copy link
Member

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.
@thomas-moulard
Copy link
Member

I had this issue before. However, from the ML these options do not seem to be working well, so unless they are reimplemented somehow on RobOptim side...

@bchretien
Copy link
Member Author

This is what I suggested here. After all, we have early support for postprocessing callbacks, so this could be part of some optional preprocessing callbacks that analyze the problem and assess its properties. In this specific case, that may be a bit complex though... I clearly don't have the time for this, but at least people facing this issue will know how to circumvent it for now.

As for the experimental options, I only tested them with a dummy problem I use for debugging. I would strongly discourage people from using these options in any real-life application.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Development

No branches or pull requests

2 participants