coco::split_delta Class Reference
[Deltas]

The split delta class for proposing useful splits. More...

#include <split_delta.h>

Inheritance diagram for coco::split_delta:

Inheritance graph
[legend]
Collaboration diagram for coco::split_delta:

Collaboration graph
[legend]

List of all members.

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


Detailed Description

This class is used to propose useful splits and store them in the proposed_splits structure in the work_node.

Definition at line 79 of file split_delta.h.


Constructor & Destructor Documentation

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 $2^n$ subproblems, where $n$ 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.


Member Function Documentation

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 $2^n$ boxes, where $n$ 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.

void coco::split_delta::add_split ( unsigned int  _nnum,
interval  _l,
interval  _u 
) [inline]

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]

Clone Operation

Reimplemented from coco::delta_base.

Definition at line 168 of file split_delta.h.

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.


Member Data Documentation

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.


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

Generated on Tue Feb 9 14:50:05 2010 for COCONUT API by  doxygen 1.5.8