towr::SoftConstraint Class Reference

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 | |

VecBound | GetBounds () const final |

Jacobian | GetJacobian () const override |

The row-vector of derivatives of the cost term. | |

VectorXd | GetValues () const override |

average value of each upper and lower bound. | |

void | SetVariables (const VectorXd &x) 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 59 of file soft_constraint.h.

towr::SoftConstraint::SoftConstraint | ( | const ConstraintPtr & | constraint | ) |

Creates a soft constraint (=cost) from a hard constraint.

**Parameters:**-
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]` |

VecBound towr::SoftConstraint::GetBounds | ( | ) | const` [inline, private]` |

Definition at line 93 of file soft_constraint.h.

SoftConstraint::Jacobian towr::SoftConstraint::GetJacobian | ( | ) | const` [override, private]` |

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]` |

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.

void towr::SoftConstraint::SetVariables | ( | const VectorXd & | x | ) | ` [inline, private]` |

Definition at line 94 of file soft_constraint.h.

VectorXd towr::SoftConstraint::b_` [private]` |

Definition at line 76 of file soft_constraint.h.

ConstraintPtr towr::SoftConstraint::constraint_` [private]` |

Definition at line 74 of file soft_constraint.h.

VectorXd towr::SoftConstraint::W_` [private]` |

weights how each constraint violation contributes to the cost.

Definition at line 75 of file soft_constraint.h.

The documentation for this class was generated from the following files: