-
Notifications
You must be signed in to change notification settings - Fork 22
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
ERROR: Non-negative step lengths expected. #2
Comments
Hello, this is an internal sanity check, in general, a solution you get by bypassing it is trash. The reason why you get this error is most likely numerical issues (the solver is not very good at handling numerically difficult problems). Could also be a bug, it is hard to say not seeing the actual problem. I recommend you to check:
|
Thanks for the fast reply!
|
Ok then I correct my guess: there are redundant constraints.
~~More precisely, friction cone constraints guarantee non-penetration.~~
Sorry, this was misleading, what I wanted to say is that nonpenetration inequalities are redundant, only friction cone + contact point equalities are needed. I am still thinking that you have redundant constraints though.
|
Hi, any progress? I would like to get the actual problem for testing (just the numbers not the formulation), otherwise I cannot help you. |
When I try to solve a QP problem with qpmad, I met the problems below:
I read the related paper, but did not fully understand it yet.
By tracing the raised exception, I tried modified one line (within solver.h):
for (MatrixIndex i = active_set_.num_equalities_; i < active_set_.size_; ++i)
{
if (dual_step_direction_(i) < -param.tolerance_)
{
// This line was modified !!! // double dual_step_length_i = -dual(i) / dual_step_direction_(i);_
double dual_step_length_i = -std::max(dual_(i), 0.0) / dual_step_direction_(i);
if (dual_step_length_i < dual_step_length)
{
dual_step_length = dual_step_length_i;
dual_blocking_index = i;
}
}
}
I just want to confirm that: is the operation above safe? Is it totally wrong? What is the correct way to fix this issue?
Thanks.
The text was updated successfully, but these errors were encountered: