#include <split_delta.h>
Public Member Functions | |
split_delta () | |
split_delta (unsigned int _node_num, const interval &_l, const interval &_u) | |
split_delta (unsigned int _node_num, const std::vector< interval > &_m) | |
split_delta (const std::vector< unsigned int > &_i, const std::vector< interval > &_l, const std::vector< interval > &_u) | |
split_delta (const std::list< std::vector< delta > > &__dl) | |
split_delta (const std::vector< unsigned int > nnum, const std::vector< std::pair< interval, interval > > &bds) | |
split_delta (const std::vector< unsigned int > nnum, const std::vector< std::vector< interval > > &bds) | |
~split_delta () | |
split_delta (const split_delta &__s) | |
split_delta * | new_copy () const |
void | destroy_copy (delta_base *__d) const |
void | add_delta (const delta &__d) |
void | add_deltas (const std::vector< delta > &__d) |
void | add_split (const std::vector< unsigned int > &_i, const std::vector< interval > &_b) |
void | add_split (unsigned int _nnum, interval _b) |
void | add_split (unsigned int _nnum, interval _l, interval _u) |
void | add_split (const std::vector< unsigned int > &_i, const std::vector< interval > &_l, const std::vector< interval > &_u) |
void | add_multisplit (const std::vector< unsigned int > nnum, const std::vector< std::pair< interval, interval > > &bds) |
void | add_multisplit (const std::vector< unsigned int > nnum, const std::vector< std::vector< interval > > &bds) |
bool | apply (work_node &x, undelta_base *&_u, const delta_id &_did) const |
bool | operator== (const delta_base &_c) const |
bool | operator!= (const delta_base &_c) const |
bool | operator== (const split_delta &_c) const |
bool | operator!= (const split_delta &_c) const |
delta | make_delta (const std::string &a) |
const std::string & | get_action () const |
virtual void | convert (work_node &_x, delta_base *&_d) |
virtual void | unkeep () |
virtual bool | apply3 (work_node &_x, const work_node &_y, undelta_base *&_u, const delta_id &_d) const |
Public Attributes | |
std::list< std::vector< delta > > | splits |
Protected Attributes | |
std::string | _action |
Definition at line 79 of file split_delta.h.
coco::split_delta::split_delta | ( | ) | [inline] |
Standard Constructor
Definition at line 91 of file split_delta.h.
coco::split_delta::split_delta | ( | unsigned int | _node_num, | |
const interval & | _l, | |||
const interval & | _u | |||
) | [inline] |
Constructor, which initializes a split in two subproblems. The parameter _node_num
specifies which variable is split. The intervals _l
and _u
give the intervals into which the variable _node_num
is bisected.
Definition at line 101 of file split_delta.h.
coco::split_delta::split_delta | ( | unsigned int | _node_num, | |
const std::vector< interval > & | _m | |||
) | [inline] |
Constructor, which initializes a split in a number of subproblems. The parameter _node_num
specifies which variable is split. The vector _m
gives a list of intervals into which the variable _node_num
is multisected.
Definition at line 114 of file split_delta.h.
coco::split_delta::split_delta | ( | const std::vector< unsigned int > & | _i, | |
const std::vector< interval > & | _l, | |||
const std::vector< interval > & | _u | |||
) | [inline] |
Constructor, which initializes a split in two subproblems. The first of the subproblems is given by a bound_delta with indices vector _i
and bounds vector _l
, while the second subproblem has the same index vector _i
but the bounds vector _u
.
Definition at line 129 of file split_delta.h.
coco::split_delta::split_delta | ( | const std::list< std::vector< delta > > & | __dl | ) | [inline] |
Constructor, which initializes the split member with __dl
.
Definition at line 138 of file split_delta.h.
coco::split_delta::split_delta | ( | const std::vector< unsigned int > | nnum, | |
const std::vector< std::pair< interval, interval > > & | bds | |||
) | [inline] |
Constructor which initializes the splits member with a multisplit of subproblems, where
is the length of the
nnum
and bds
vectors. The nnum
vector specifies which nodes are to be split, and the vector contains for every node split the lower and the upper subdivision interval.
Definition at line 147 of file split_delta.h.
coco::split_delta::split_delta | ( | const std::vector< unsigned int > | nnum, | |
const std::vector< std::vector< interval > > & | bds | |||
) | [inline] |
Constructor which initializes the splits member with a multisplit of an exponential number of subproblems, where nnum
and bds
are vectors of the same length. The nnum
vector specifies which nodes are to be split, and the vector contains for every node split the generated subintervals.
Definition at line 156 of file split_delta.h.
coco::split_delta::~split_delta | ( | ) | [inline] |
Standard Destructor
Definition at line 162 of file split_delta.h.
coco::split_delta::split_delta | ( | const split_delta & | __s | ) | [inline] |
Standard Copy Constructor
Definition at line 165 of file split_delta.h.
void coco::split_delta::add_delta | ( | const delta & | __d | ) | [inline] |
This method adds a new subproblem in the splits determined by the single delta __d
.
Definition at line 174 of file split_delta.h.
void coco::split_delta::add_deltas | ( | const std::vector< delta > & | __d | ) | [inline] |
This method adds a new subproblem in the splits determined by the vector of deltas __d
.
Definition at line 181 of file split_delta.h.
void coco::split_delta::add_multisplit | ( | const std::vector< unsigned int > | nnum, | |
const std::vector< std::vector< interval > > & | bds | |||
) | [inline] |
This method generates a multisplit of exponentially many boxes. The nnum
vector specifies which nodes are to be split, and the vector contains for every node split the generated subdivision intervals.
Definition at line 319 of file split_delta.h.
void coco::split_delta::add_multisplit | ( | const std::vector< unsigned int > | nnum, | |
const std::vector< std::pair< interval, interval > > & | bds | |||
) | [inline] |
This method generates a multisplit of boxes, where
is the length of the
nnum
and bds
vectors. The nnum
vector specifies which nodes are to be split, and the vector contains for every node split the lower and the upper subdivision interval.
Definition at line 285 of file split_delta.h.
void coco::split_delta::add_split | ( | const std::vector< unsigned int > & | _i, | |
const std::vector< interval > & | _l, | |||
const std::vector< interval > & | _u | |||
) | [inline] |
This method adds two subproblems to the splits. The first of the subproblems is given by a bound_delta with indices vector _i
and bounds vector _l
, while the second subproblem has the same index vector _i
but the bounds vector _u
.
Definition at line 216 of file split_delta.h.
This method adds two subproblems to the splits. The parameter _nnum
specifies which variable is split. The intervals _l
and _u
give the intervals into which the variable _node_num
is bisected.
Definition at line 206 of file split_delta.h.
void coco::split_delta::add_split | ( | unsigned int | _nnum, | |
interval | _b | |||
) | [inline] |
This method adds one subproblem to the splits. The parameter _nnum
specifies which variable is split. The interval _b
specifies the new interval.
Definition at line 197 of file split_delta.h.
void coco::split_delta::add_split | ( | const std::vector< unsigned int > & | _i, | |
const std::vector< interval > & | _b | |||
) | [inline] |
This method adds a further subproblem to the splits. It is given by a bound_delta with indices vector _i
and bounds vector _b
.
Definition at line 187 of file split_delta.h.
bool coco::split_delta::apply | ( | work_node & | x, | |
undelta_base *& | _u, | |||
const delta_id & | _did | |||
) | const [inline, virtual] |
Apply the delta with delta_id _d
to work node _x
, hereby changing the bounds as requested.
Reimplemented from coco::delta_base.
Definition at line 271 of file split_delta.h.
bool coco::delta_base::apply3 | ( | work_node & | _x, | |
const work_node & | _y, | |||
undelta_base *& | _u, | |||
const delta_id & | _d | |||
) | const [inline, virtual, inherited] |
Apply the delta with delta_id _d
to work node _x
, constructing in the process work_node _y
, without changing _x
. In this process the undo information for this delta is stored in _u
. This method should be overloaded in the specializations of this class for maximal efficiency, but it need not since a standard procedure is available, which uses the work_node copy constructur and the apply
method.
Definition at line 88 of file api_delta.h.
virtual void coco::delta_base::convert | ( | work_node & | _x, | |
delta_base *& | _d | |||
) | [inline, virtual, inherited] |
Convert this delta to a delta which can be stored in _x
, this is e.g. used for all delta version, which are actually stored as annotation changes.
Reimplemented in coco::table_delta.
Definition at line 189 of file api_deltabase.h.
void coco::split_delta::destroy_copy | ( | delta_base * | __d | ) | const [inline] |
Clone Destructor
Definition at line 170 of file split_delta.h.
const std::string& coco::delta_base::get_action | ( | ) | const [inline, inherited] |
Retrieve the action information (the delta type) for this delta.
Definition at line 184 of file api_deltabase.h.
delta coco::delta_base::make_delta | ( | const std::string & | a | ) | [inline, inherited] |
Construct a delta from this delta_base with the action a
.
Definition at line 175 of file api_deltabase.h.
split_delta* coco::split_delta::new_copy | ( | ) | const [inline, virtual] |
bool coco::split_delta::operator!= | ( | const split_delta & | _c | ) | const [inline] |
Definition at line 252 of file split_delta.h.
bool coco::split_delta::operator!= | ( | const delta_base & | _c | ) | const [inline] |
Definition at line 245 of file split_delta.h.
bool coco::split_delta::operator== | ( | const split_delta & | _c | ) | const [inline] |
Comparison operators
Definition at line 250 of file split_delta.h.
bool coco::split_delta::operator== | ( | const delta_base & | _c | ) | const [inline] |
Comparison operators
Definition at line 242 of file split_delta.h.
virtual void coco::delta_base::unkeep | ( | ) | [inline, virtual, inherited] |
Perform this operation when the delta is released (unkept) from a work_node.
Reimplemented in coco::dag_delta.
Definition at line 194 of file api_deltabase.h.
std::string coco::delta_base::_action [protected, inherited] |
The action (type) of this delta
Definition at line 154 of file api_deltabase.h.
std::list<std::vector<delta> > coco::split_delta::splits |
splits represents a list of newly created submodels. Each of these submodels is generated from the work node by a number of deltas stored in the inner vector.
Definition at line 85 of file split_delta.h.