diff --git a/src/libs/linprog/QPSolverInterface.cpp b/src/libs/linprog/QPSolverInterface.cpp index a9f7bf7db5..74cd8e5973 100644 --- a/src/libs/linprog/QPSolverInterface.cpp +++ b/src/libs/linprog/QPSolverInterface.cpp @@ -45,6 +45,7 @@ QPSolverInterface::ConstraintAdded(Constraint* constraint) data.minSlackConstraint = fLinearSpec->AddConstraint(1., data.slack->Var(), kEQ, 0., constraint->PenaltyNeg(), constraint->PenaltyPos()); + data.constraint = constraint; fInEqSlackConstraints.push_back(data); SummandList* leftSide = constraint->LeftSide(); @@ -63,7 +64,7 @@ QPSolverInterface::ConstraintRemoved(Constraint* constraint) for (unsigned int i = 0; i < fInEqSlackConstraints.size(); i++) { SoftInEqData& data = fInEqSlackConstraints[i]; - if (data.minSlackConstraint != constraint) + if (data.constraint != constraint) continue; SummandList* leftSide = constraint->LeftSide(); diff --git a/src/libs/linprog/QPSolverInterface.h b/src/libs/linprog/QPSolverInterface.h index e7233bfe2a..7713a26291 100644 --- a/src/libs/linprog/QPSolverInterface.h +++ b/src/libs/linprog/QPSolverInterface.h @@ -27,6 +27,7 @@ public: private: struct SoftInEqData { Summand* slack; + Constraint* constraint; Constraint* minSlackConstraint; };