codac 1.5.6
|
Projection of a separator. More...
#include <codac_SepProj.h>
Inherits Sep.
Public Member Functions | |
SepProj (Sep &sep, const IntervalVector &y_init, double prec) | |
Construct a new Sep Proj object. | |
SepProj (Sep &sep, const Interval &y_init, double prec) | |
Construct a new Sep Proj object. | |
~SepProj () | |
Destroy the Sep Proj object. | |
void | separate (IntervalVector &x_in, IntervalVector &x_out) |
Separate method. | |
Protected Member Functions | |
bool | process (IntervalVector &x_in, IntervalVector &x_out, IntervalVector &y, ImpactStatus &impact, bool use_point) |
SepProj::process Separate cartesian product [x_in].[y] and [x_out].[y] if an inner (or outer) contraction happends, the flags impact_cin is set to true and the removed part of the box is stored in first_cin_boxes. | |
Protected Attributes | |
Sep & | sep |
The Separator. | |
IntervalVector | y_init |
Initial box of the parameters (can be set dynamically) | |
double | prec |
precision | |
LargestFirst * | bsc |
internal variable used to count the number of call of the SepProj::process method | |
Projection of a separator.
Given \(\mathbb{X}\subset\mathbb{R}^{n}\) and \(\mathbb{Y}\subset\mathbb{R}^{p}\). If \(\mathbb{Z}=\mathbb{X}\times\mathbb{Y}\), then the projection of a subset \(\mathbb{Z}_{1}\) of \(\mathbb{Z}\) onto \(\mathbb{X}\) (with respect to \(\mathbb{Y}\)) is defined as:
\( {proj}_{\mathbb{X}}(\mathbb{Z}_{1})=\left\{ \mathbf{x}\in\mathbb{X}\mid\exists\mathbf{y}\in\mathbb{Y},(\mathbf{x},\mathbf{y})\in\mathbb{Z}_{1}\right\}\)
Given a separator \(\mathcal{S}([\mathbf{x}],\left[\mathbf{y}\right])=\left\{ \mathcal{S}^{\text{in}}([\mathbf{x}],\left[\mathbf{y}\right]),\mathcal{S}^{\text{out}}([\mathbf{x}],\left[\mathbf{y}\right])\right\}\), the projection of \(\mathcal{S}\) is defined by :
\({proj}_{\mathbf{x}}(\mathcal{S})([\textbf{x}])=\left\{ \bigcap_{\textbf{y}\in[\textbf{y}]}\partial_{\textbf{x}}\mathcal{S}^{in}([\textbf{x}],\mathbf{y}),\bigcup_{\textbf{y}\in[\textbf{y}]}\partial_{\textbf{x}}\mathcal{S}^{out}([\textbf{x}],\mathbf{y})\right\}\)
The separator algorythm is inspired from the ibexlib ones but performs the inner and outer contraction concurently.
See Ibexlib (CtcForAll and CtcExist)[https://ibex-team.github.io/ibex-lib/contractor.html#exists-and-forall] documentation for more details.
codac::SepProj::SepProj | ( | Sep & | sep, |
const IntervalVector & | y_init, | ||
double | prec ) |
Construct a new Sep Proj object.
sep | Separator to use for the projection. The input box dimension must be equal to dim([x]) + dim([y_init]). given a two IntervalVector \([\mathbf{x}]\) and \([\mathbf{y}]\), the separator is called with a new box \([\mathbf{z}] = [\mathbf{y}] X [\mathbf{y}]\). |
y_init | Initial box for the parameters |
prec | Bisection precision on the parameters (the contraction involves a bisection process on y) |
codac::SepProj::SepProj | ( | Sep & | sep, |
const Interval & | y_init, | ||
double | prec ) |
Construct a new Sep Proj object.
sep | Separator used for the projection. The input dimension must be equal to size(x) + size(y_init). given a two IntervalVector \([\mathbf{x}]\) and \([\mathbf{y}]\), the separator is called with a new box \([\mathbf{z}] = [\mathbf{y}] X [\mathbf{y}]\). |
y_init | Initial Interval for the parameters |
prec | Bisection precision on the parameters (the contraction involves a bisection process on y) |
void codac::SepProj::separate | ( | IntervalVector & | x_in, |
IntervalVector & | x_out ) |
Separate method.
x_in | the n-dimensional box \([\mathbf{x}_{\textrm{in}}]\) to be inner-contracted |
x_out | the n-dimensional box \([\mathbf{x}_{\textrm{out}}]\) to be outer-contracted |
|
protected |
SepProj::process Separate cartesian product [x_in].[y] and [x_out].[y] if an inner (or outer) contraction happends, the flags impact_cin is set to true and the removed part of the box is stored in first_cin_boxes.
x_in | : projected inner box |
x_out | : projected outer box |
y | : parameter box |
impact | : used to trace contraction of the input box |
use_point |
|
protected |
internal variable used to count the number of call of the SepProj::process method
the outer contractor / inner contractor has an impact
store the firsr box contractor by the inner/ outer contractor
a bisector