Public Member Functions | |
| LP_Problem () | |
| Default constructor: builds a trivial LP problem. | |
| LP_Problem (const Constraint_System &cs, const Linear_Expression &obj=Linear_Expression::zero(), Optimization_Mode mode=MAXIMIZATION) | |
Builds an LP problem from the constraint system cs, the objective function obj and optimization mode mode. | |
| LP_Problem (const LP_Problem &y) | |
| Ordinary copy-constructor. | |
| ~LP_Problem () | |
| Destructor. | |
| LP_Problem & | operator= (const LP_Problem &y) |
| Assignment operator. | |
| dimension_type | space_dimension () const |
| Returns the space dimension of the current LP problem. | |
| const Constraint_System & | constraints () const |
| Returns the constraints defining the current feasible region. | |
| const Linear_Expression & | objective_function () const |
| Returns the current objective function. | |
| Optimization_Mode | optimization_mode () const |
| Returns the current optimization mode. | |
| void | clear () |
Resets *this to be equal to the trivial LP problem. | |
| void | add_constraint (const Constraint &c) |
Adds a copy of constraint c to the current LP problem, increasing the number of space dimensions if needed. | |
| void | add_constraints (const Constraint_System &cs) |
Adds a copy of the constraints in cs to the current LP problem, increasing the number of space dimensions if needed. | |
| void | set_objective_function (const Linear_Expression &obj) |
Sets the objective function to obj. | |
| void | set_optimization_mode (Optimization_Mode mode) |
Sets the optimization mode to mode. | |
| bool | is_satisfiable () const |
Checks satisfiability of *this. | |
| LP_Problem_Status | solve () const |
| Optimizes the current LP problem using the primal simplex algorithm. | |
| void | evaluate_objective_function (const Generator &evaluating_point, Coefficient &num, Coefficient &den) const |
Sets num and den so that is the result of evaluating the objective function on evaluating_point. | |
| const Generator & | feasible_point () const |
Returns a feasible point for *this, if it exists. | |
| const Generator & | optimizing_point () const |
Returns an optimal point for *this, if it exists. | |
| void | optimal_value (Coefficient &num, Coefficient &den) const |
Sets num and den so that is the solution of the optimization problem. | |
| bool | OK () const |
| Checks if all the invariants are satisfied. | |
| memory_size_type | total_memory_in_bytes () const |
Returns the total size in bytes of the memory occupied by *this. | |
| memory_size_type | external_memory_in_bytes () const |
Returns the size in bytes of the memory managed by *this. | |
| void | swap (LP_Problem &y) |
Swaps *this with y. | |
Static Public Member Functions | |
| static dimension_type | max_space_dimension () |
| Returns the maximum space dimension a LP_Problem can handle. | |
| Parma_Polyhedra_Library::LP_Problem::LP_Problem | ( | ) | [inline] |
Default constructor: builds a trivial LP problem.
The trivial LP problem requires to maximize the objective function
on the zero-dimensional vector space under no constraints at all: the origin of the vector space is the optimal solution.
| Parma_Polyhedra_Library::LP_Problem::LP_Problem | ( | const Constraint_System & | cs, | |
| const Linear_Expression & | obj = Linear_Expression::zero(), |
|||
| Optimization_Mode | mode = MAXIMIZATION | |||
| ) | [inline, explicit] |
Builds an LP problem from the constraint system cs, the objective function obj and optimization mode mode.
| cs | The constraint system defining the feasible region for the LP problem. | |
| obj | The objective function for the LP problem (optional argument with default value ). | |
| mode | The optimization mode (optional argument with default value MAXIMIZATION). |
| std::invalid_argument | Thrown if the constraint system contains any strict inequality or if the space dimension of the objective function is strictly greater than the space dimension of the constraint system. |
| void Parma_Polyhedra_Library::LP_Problem::add_constraint | ( | const Constraint & | c | ) | [inline] |
Adds a copy of constraint c to the current LP problem, increasing the number of space dimensions if needed.
| std::invalid_argument | Thrown if the constraint c is a strict inequality. |
| void Parma_Polyhedra_Library::LP_Problem::add_constraints | ( | const Constraint_System & | cs | ) | [inline] |
Adds a copy of the constraints in cs to the current LP problem, increasing the number of space dimensions if needed.
| std::invalid_argument | Thrown if the constraint system cs contains any strict inequality. |
| void Parma_Polyhedra_Library::LP_Problem::set_objective_function | ( | const Linear_Expression & | obj | ) | [inline] |
Sets the objective function to obj.
| std::invalid_argument | Thrown if the space dimension of obj is strictly greater than the space dimension of *this. |
| bool Parma_Polyhedra_Library::LP_Problem::is_satisfiable | ( | ) | const |
Checks satisfiability of *this.
true if and only if the LP problem is satisfiable. | LP_Problem_Status Parma_Polyhedra_Library::LP_Problem::solve | ( | ) | const [inline] |
Optimizes the current LP problem using the primal simplex algorithm.
| void Parma_Polyhedra_Library::LP_Problem::evaluate_objective_function | ( | const Generator & | evaluating_point, | |
| Coefficient & | num, | |||
| Coefficient & | den | |||
| ) | const |
Sets num and den so that
is the result of evaluating the objective function on evaluating_point.
| evaluating_point | The point on which the objective function will be evaluated. | |
| num | On exit will contain the numerator of the evaluated value. | |
| den | On exit will contain the denominator of the evaluated value. |
| std::invalid_argument | Thrown if *this and evaluating_point are dimension-incompatible or if the generator evaluating_point is not a point. |
| const Generator & Parma_Polyhedra_Library::LP_Problem::feasible_point | ( | ) | const [inline] |
Returns a feasible point for *this, if it exists.
| std::domain_error | Thrown if the LP problem is not satisfiable. |
| const Generator & Parma_Polyhedra_Library::LP_Problem::optimizing_point | ( | ) | const [inline] |
Returns an optimal point for *this, if it exists.
| std::domain_error | Thrown if *this doesn't not have an optimizing point, i.e., if the LP problem is unbounded or not satisfiable. |
| void Parma_Polyhedra_Library::LP_Problem::optimal_value | ( | Coefficient & | num, | |
| Coefficient & | den | |||
| ) | const [inline] |
Sets num and den so that
is the solution of the optimization problem.
| std::domain_error | Thrown if *this doesn't not have an optimizing point, i.e., if the LP problem is unbounded or not satisfiable. |
1.4.6-20060227