From 3653e9333819af75fdbac093624fca7232577adf Mon Sep 17 00:00:00 2001 From: krunalchande Date: Tue, 23 Dec 2014 16:14:50 -0500 Subject: [PATCH] fix bug in dual feasibility check. We want dual variables < 0. --- gtsam_unstable/nonlinear/LCNLPSolver.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gtsam_unstable/nonlinear/LCNLPSolver.cpp b/gtsam_unstable/nonlinear/LCNLPSolver.cpp index 3a2f017f7..0fa840ab8 100644 --- a/gtsam_unstable/nonlinear/LCNLPSolver.cpp +++ b/gtsam_unstable/nonlinear/LCNLPSolver.cpp @@ -40,8 +40,9 @@ bool LCNLPSolver::isDualFeasible(const VectorValues& duals) const { Key dualKey = inequality->dualKey(); if (!duals.exists(dualKey)) continue; // should be inactive constraint! double dual = duals.at(dualKey)[0]; // because we only support single-valued inequalities - if (dual < 0.0) + if (dual > 0.0) { // See the explanation in QPSolver::identifyLeavingConstraint, we want dual < 0 ? return false; + } } return true; }