Drake
Drake C++ Documentation
MixedIntegerRotationConstraintGenerator::ReturnType Struct Reference

#include <drake/solvers/mixed_integer_rotation_constraint.h>

## Public Attributes

std::array< std::array< VectorXDecisionVariable, 3 >, 3 > B_
B_ contains the new binary variables added to the program. More...

std::array< std::array< VectorXDecisionVariable, 3 >, 3 > lambda_
λ contains part of the new continuous variables added to the program. More...

## ◆ B_

 std::array, 3> B_

B_ contains the new binary variables added to the program.

B_[i][j] represents in which interval R(i, j) lies. If we use linear binning, then B_[i][j] is of length 2 * num_intervals_per_half_axis_. B_[i][j](k) = 1 => φ(k) ≤ R(i, j) ≤ φ(k + 1) B_[i][j](k) = 0 => R(i, j) ≥ φ(k + 1) or R(i, j) ≤ φ(k) If we use logarithmic binning, then B_[i][j] is of length 1 + log₂(num_intervals_per_half_axis_). If B_[i][j] represents integer k in reflected Gray code, then R(i, j) is in the interval [φ(k), φ(k+1)].

## ◆ lambda_

 std::array, 3> lambda_

λ contains part of the new continuous variables added to the program.

λ_[i][j] is of length 2 * num_intervals_per_half_axis_ + 1, such that R(i, j) = φᵀ * λ_[i][j]. Notice that λ_[i][j] satisfies the special ordered set of type 2 (SOS2) constraint. Namely at most two entries in λ_[i][j] can be strictly positive, and these two entries have to be consecutive. Mathematically

∑ₖ λ_[i][j](k) = 1
λ_[i][j](k) ≥ 0 ∀ k
∃ m s.t λ_[i][j](n) = 0 if n ≠ m and n ≠ m+1

The documentation for this struct was generated from the following file: