PPL  1.2
Parma_Polyhedra_Library::PIP_Solution_Node Class Reference

A tree node representing part of the space of solutions. More...

#include <ppl.hh>

Inheritance diagram for Parma_Polyhedra_Library::PIP_Solution_Node:

Classes

struct  No_Constraints
 A tag type to select the alternative copy constructor. More...
 

Public Member Functions

 PIP_Solution_Node (const PIP_Problem *owner)
 Constructor: builds a solution node owned by *owner.
 
virtual PIP_Tree_Nodeclone () const
 Returns a pointer to a dynamically-allocated copy of *this.
 
virtual ~PIP_Solution_Node ()
 Destructor.
 
virtual bool OK () const
 Returns true if and only if *this is well formed.
 
virtual const PIP_Solution_Nodeas_solution () const
 Returns this.
 
virtual const PIP_Decision_Nodeas_decision () const
 Returns 0, since this is not a decision node.
 
const Linear_Expressionparametric_values (Variable var) const
 Returns a parametric expression for the values of problem variable var. More...
 
void ascii_dump (std::ostream &os) const
 Dumps to os an ASCII representation of *this.
 
bool ascii_load (std::istream &is)
 Loads from is an ASCII representation (as produced by ascii_dump(std::ostream&) const) and sets *this accordingly. Returns true if successful, false otherwise.
 
virtual memory_size_type total_memory_in_bytes () const
 Returns the total size in bytes of the memory occupied by *this.
 
virtual memory_size_type external_memory_in_bytes () const
 Returns the size in bytes of the memory managed by *this.
 
- Public Member Functions inherited from Parma_Polyhedra_Library::PIP_Tree_Node
virtual ~PIP_Tree_Node ()
 Destructor.
 
const Constraint_Systemconstraints () const
 Returns the system of parameter constraints controlling *this. More...
 
Artificial_Parameter_Sequence::const_iterator art_parameter_begin () const
 Returns a const_iterator to the beginning of local artificial parameters.
 
Artificial_Parameter_Sequence::const_iterator art_parameter_end () const
 Returns a const_iterator to the end of local artificial parameters.
 
dimension_type art_parameter_count () const
 Returns the number of local artificial parameters.
 
void print (std::ostream &s, int indent=0) const
 Prints on s the tree rooted in *this. More...
 
void ascii_dump (std::ostream &s) const
 Dumps to s an ASCII representation of *this.
 
bool ascii_load (std::istream &s)
 Loads from s an ASCII representation (as produced by ascii_dump(std::ostream&) const) and sets *this accordingly. Returns true if successful, false otherwise.
 

Protected Member Functions

 PIP_Solution_Node (const PIP_Solution_Node &y)
 Copy constructor.
 
 PIP_Solution_Node (const PIP_Solution_Node &y, No_Constraints)
 Alternative copy constructor. More...
 
virtual void set_owner (const PIP_Problem *owner)
 Sets the pointer to the PIP_Problem owning object.
 
virtual bool check_ownership (const PIP_Problem *owner) const
 Returns true if and only if all the nodes in the subtree rooted in *this is owned by *pip.
 
virtual void update_tableau (const PIP_Problem &pip, dimension_type external_space_dim, dimension_type first_pending_constraint, const Constraint_Sequence &input_cs, const Variables_Set &parameters)
 Implements pure virtual method PIP_Tree_Node::update_tableau.
 
void update_solution (const std::vector< bool > &pip_dim_is_param) const
 Update the solution values. More...
 
void update_solution () const
 Helper method.
 
virtual PIP_Tree_Nodesolve (const PIP_Problem &pip, bool check_feasible_context, const Matrix< Row > &context, const Variables_Set &params, dimension_type space_dim, int indent_level)
 Implements pure virtual method PIP_Tree_Node::solve.
 
void generate_cut (dimension_type index, Variables_Set &parameters, Matrix< Row > &context, dimension_type &space_dimension, int indent_level)
 Generate a Gomory cut using non-integer tableau row index. More...
 
virtual void print_tree (std::ostream &s, int indent, const std::vector< bool > &pip_dim_is_param, dimension_type first_art_dim) const
 Prints on s the tree rooted in *this.
 
- Protected Member Functions inherited from Parma_Polyhedra_Library::PIP_Tree_Node
 PIP_Tree_Node (const PIP_Problem *owner)
 Constructor: builds a node owned by *owner.
 
 PIP_Tree_Node (const PIP_Tree_Node &y)
 Copy constructor.
 
const PIP_Problemget_owner () const
 Returns a pointer to the PIP_Problem owning object.
 
const PIP_Decision_Nodeparent () const
 Returns a pointer to this node's parent.
 
void set_parent (const PIP_Decision_Node *p)
 Set this node's parent to *p.
 
void add_constraint (const Row &row, const Variables_Set &parameters)
 Inserts a new parametric constraint in internal row format.
 
void parent_merge ()
 Merges parent's artificial parameters into *this.
 

Additional Inherited Members

- Public Types inherited from Parma_Polyhedra_Library::PIP_Tree_Node
typedef std::vector< Artificial_ParameterArtificial_Parameter_Sequence
 A type alias for a sequence of Artificial_Parameter's.
 
- Protected Types inherited from Parma_Polyhedra_Library::PIP_Tree_Node
typedef std::vector< ConstraintConstraint_Sequence
 A type alias for a sequence of constraints.
 
- Static Protected Member Functions inherited from Parma_Polyhedra_Library::PIP_Tree_Node
static void indent_and_print (std::ostream &s, int indent, const char *str)
 A helper function used when printing PIP trees.
 
static bool compatibility_check (Matrix< Row > &s)
 Checks whether a context matrix is satisfiable. More...
 
static bool compatibility_check (const Matrix< Row > &context, const Row &row)
 Helper method: checks for satisfiability of the restricted context obtained by adding row to context.
 
- Protected Attributes inherited from Parma_Polyhedra_Library::PIP_Tree_Node
const PIP_Problemowner_
 A pointer to the PIP_Problem object owning this node.
 
const PIP_Decision_Nodeparent_
 A pointer to the parent of *this, null if *this is the root.
 
Constraint_System constraints_
 The local system of parameter constraints.
 
Artificial_Parameter_Sequence artificial_parameters
 The local sequence of expressions for local artificial parameters.
 

Detailed Description

A tree node representing part of the space of solutions.

Constructor & Destructor Documentation

Parma_Polyhedra_Library::PIP_Solution_Node::PIP_Solution_Node ( const PIP_Solution_Node y,
No_Constraints   
)
protected

Alternative copy constructor.

This constructor differs from the default copy constructor in that it will not copy the constraint system, nor the artificial parameters.

Member Function Documentation

const Linear_Expression& Parma_Polyhedra_Library::PIP_Solution_Node::parametric_values ( Variable  var) const

Returns a parametric expression for the values of problem variable var.

The returned linear expression may involve problem parameters as well as artificial parameters.

Parameters
varThe problem variable which is queried about.
Exceptions
std::invalid_argumentThrown if var is dimension-incompatible with the PIP_Problem owning this solution node, or if var is a problem parameter.
void Parma_Polyhedra_Library::PIP_Solution_Node::update_solution ( const std::vector< bool > &  pip_dim_is_param) const
protected

Update the solution values.

Parameters
pip_dim_is_paramA vector of Boolean flags telling which PIP problem dimensions are problem parameters. The size of the vector is equal to the PIP problem internal space dimension (i.e., no artificial parameters).
void Parma_Polyhedra_Library::PIP_Solution_Node::generate_cut ( dimension_type  index,
Variables_Set parameters,
Matrix< Row > &  context,
dimension_type space_dimension,
int  indent_level 
)
protected

Generate a Gomory cut using non-integer tableau row index.

Parameters
indexRow index in simplex tableau from which the cut is generated.
parametersA std::set of the current parameter dimensions (including artificials); to be updated if a new artificial parameter is to be created.
contextA set of linear inequalities on the parameters, in matrix form; to be updated if a new artificial parameter is to be created.
space_dimensionThe current space dimension, including variables and all parameters; to be updated if an extra parameter is to be created.
indent_levelThe indentation level (for debugging output only).

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