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:
[legend]

## 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_Node * | clone () 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_Node * | as_solution () const
| Returns `this`.
virtual const PIP_Decision_Node * | as_decision () const
| Returns 0, since `this` is not a decision node.
const Linear_Expression & | parametric_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_System & | constraints () 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_Node * | solve (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_Problem * | get_owner () const
| Returns a pointer to the PIP_Problem owning object.
const PIP_Decision_Node * | parent () 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_Parameter > | Artificial_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< Constraint > | Constraint_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_Problem * | owner_
| A pointer to the PIP_Problem object owning this node.
const PIP_Decision_Node * | parent_
| 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.
Related Functions inherited from Parma_Polyhedra_Library::PIP_Tree_Node
std::ostream & | operator<< (std::ostream &os, const PIP_Tree_Node &x)
| Output operator: prints the solution tree rooted in `x`. More...

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

  var | The problem variable which is queried about.

Exceptions

  std::invalid_argument | Thrown 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_param | A 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

  index | Row index in simplex tableau from which the cut is generated.
  parameters | A std::set of the current parameter dimensions (including artificials); to be updated if a new artificial parameter is to be created.
  context | A set of linear inequalities on the parameters, in matrix form; to be updated if a new artificial parameter is to be created.
  space_dimension | The current space dimension, including variables and all parameters; to be updated if an extra parameter is to be created.
  indent_level | The indentation level (for debugging output only).

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

- ppl.hh