CtcBox: \(\mathcal{C}_{box}\)

The \(\mathcal{C}_{box}\) is contracting IntervalVector around a support box of \(\mathbb{R}^n\). This contractor is based on the inverse of a canonical injection between the provided box and \(\mathbb{R}^n\).

Definition

Important

\[\iota^{-1}_\mathbf{b} : \mathbb{R}^n \hookrightarrow \mathbf{b} : x \mapsto x \longrightarrow \mathcal{C}_{box}\big([\mathbf{b}]\big)\]
c = CtcBox(b)
c.contract(x)
CtcBox c(b);
c.contract(x);

Optimality

This contractor is optimal as it is based on intersection between boxes which is optimal and does not add any pessimism.

Example

Let consider a box \(\mathbf{b} = ((1, 2), (3, 4))\) around which we want to contract boxes.

b = IntervalVector([[1, 2], [3, 4]])
ctc_box = CtcBox(b)

x1 = IntervalVector([[0, 3], [2, 5]])
x2 = IntervalVector([[1.5, 3.5], [3.5, 6.5]])

ctc_box.contract(x1)
ctc_box.contract(x2)
IntervalVector b{{1, 2}, {3, 4}};
CtcBox ctc_box(b);

IntervalVector x1{{0, 3}, {2, 5}};
IntervalVector x2{{1.5, 3.5}, {3.5, 6.5}};

ctc_box.contract(x1);
ctc_box.contract(x2);