Converts a constraint to a cost by weighing the quadratic violations. More...
#include <soft_constraint.h>
Public Member Functions | |
| SoftConstraint (const ConstraintPtr &constraint) | |
| Creates a soft constraint (=cost) from a hard constraint. | |
| virtual | ~SoftConstraint () |
Private Member Functions | |
| virtual VecBound | GetBounds () const override final |
| virtual Jacobian | GetJacobian () const override |
| The row-vector of derivatives of the cost term. | |
| virtual VectorXd | GetValues () const override |
| average value of each upper and lower bound. | |
| virtual void | SetVariables (const VectorXd &x) override final |
Private Attributes | |
| VectorXd | b_ |
| ConstraintPtr | constraint_ |
| VectorXd | W_ |
| weights how each constraint violation contributes to the cost. | |
Converts a constraint to a cost by weighing the quadratic violations.
Let constraint g(x) R^m with upper bound b_u and lower bound b_l. Let g'(x) = g(x) - 0.5(b_u+b_l) = g(x) - b And it's derivative dg'(x)/dx = J(x). Define a cost as c(x) = 0.5 * g'^T * W * g', where W = diag(w1,...,wm). Then the gradient of the cost is defined as: dc(x)/dx = (g'(x)^T * W * J)^T = J^T * W * (g(x)-b).
Definition at line 47 of file soft_constraint.h.
| towr::SoftConstraint::SoftConstraint | ( | const ConstraintPtr & | constraint | ) |
Creates a soft constraint (=cost) from a hard constraint.
| constraint | The fully initialized constraint. |
Weights are set to identity, so each constraint violation contributes equally to the cost.
Definition at line 34 of file soft_constraint.cc.
| virtual towr::SoftConstraint::~SoftConstraint | ( | ) | [virtual] |
| virtual VecBound towr::SoftConstraint::GetBounds | ( | ) | const [inline, override, private, virtual] |
Definition at line 81 of file soft_constraint.h.
| SoftConstraint::Jacobian towr::SoftConstraint::GetJacobian | ( | ) | const [override, private, virtual] |
The row-vector of derivatives of the cost term.
dc(x)/dx = J^T * W * (g-b)
Definition at line 61 of file soft_constraint.cc.
| SoftConstraint::VectorXd towr::SoftConstraint::GetValues | ( | ) | const [override, private, virtual] |
average value of each upper and lower bound.
The quadratic constraint violation transformed to a cost.
c(x) = 0.5 * (g-b)^T * W * (g-b)
Definition at line 53 of file soft_constraint.cc.
| virtual void towr::SoftConstraint::SetVariables | ( | const VectorXd & | x | ) | [inline, override, private, virtual] |
Definition at line 82 of file soft_constraint.h.
VectorXd towr::SoftConstraint::b_ [private] |
Definition at line 64 of file soft_constraint.h.
ConstraintPtr towr::SoftConstraint::constraint_ [private] |
Definition at line 62 of file soft_constraint.h.
VectorXd towr::SoftConstraint::W_ [private] |
weights how each constraint violation contributes to the cost.
Definition at line 63 of file soft_constraint.h.