PPL Configured Java Language Interface 0.12.1
A Parametric Integer Programming problem. More...
|PIP_Problem (long dim)|
|Builds a trivial PIP problem. |
|PIP_Problem (long dim, Constraint_System cs, Variables_Set params)|
|Builds a PIP problem from a sequence of constraints. |
|PIP_Problem (PIP_Problem y)|
|Builds a copy of |
|native void||free ()|
|Releases all resources managed by |
Functions that Do Not Modify the PIP_Problem
|native long||max_space_dimension ()|
|Returns the maximum space dimension an PIP_Problem can handle. |
|native long||space_dimension ()|
|Returns the space dimension of the PIP problem. |
|native long||number_of_parameter_space_dimensions ()|
|Returns the number of parameter space dimensions of the PIP problem. |
|native Variables_Set||parameter_space_dimensions ()|
|Returns all the parameter space dimensions of problem |
|native long||get_big_parameter_dimension ()|
|Returns the big parameter dimension of PIP problem |
|native long||number_of_constraints ()|
|Returns the number of constraints defining the feasible region of |
|native Constraint||constraint_at_index (long dim)|
|Returns the |
|native Constraint_System||constraints ()|
|Returns the constraints . |
|native String||ascii_dump ()|
|Returns an ascii formatted internal representation of |
|native String||toString ()|
|Returns a string representation of |
|native long||total_memory_in_bytes ()|
|Returns the size in bytes of the memory occupied by the underlying C++ object. |
|native long||external_memory_in_bytes ()|
|Returns the size in bytes of the memory managed by the underlying C++ object. |
|native boolean||OK ()|
|Returns true if the pip problem is well formed, i.e., if it satisfies all its implementation invariants; returns 0 and perhaps makes some noise if broken. Useful for debugging purposes. |
Functions that May Modify the PIP_Problem
|native void||clear ()|
|native void||add_space_dimensions_and_embed (long pip_vars, long pip_params)|
|native void||add_to_parameter_space_dimensions (Variables_Set vars)|
|Sets the space dimensions in |
|native void||set_big_parameter_dimension (long d)|
|Sets the big parameter dimension of PIP problem to |
|native void||add_constraint (Constraint c)|
|Adds a copy of constraint |
|native void||add_constraints (Constraint_System cs)|
|Adds a copy of the constraints in |
Computing the Solution of the PIP_Problem
|native boolean||is_satisfiable ()|
|Checks satisfiability of |
|native PIP_Problem_Status||solve ()|
|Optimizes the PIP problem. |
|native PIP_Tree_Node||solution ()|
|Returns a solution for the PIP problem, if it exists. |
|native PIP_Tree_Node||optimizing_solution ()|
|Returns an optimizing solution for the PIP problem, if it exists. |
Querying/Setting Control Parameters
|get_pip_problem_control_parameter (PIP_Problem_Control_Parameter_Name name)|
|Returns the value of control parameter |
|native void||set_pip_problem_control_parameter (PIP_Problem_Control_Parameter_Value value)|
|Sets control parameter |
|native void||finalize ()|
|Releases all resources managed by |
A Parametric Integer Programming problem.
An object of this class encodes a parametric integer (linear) programming problem. The PIP problem is specified by providing:
Note that all problem variables and problem parameters are assumed to take non-negative integer values, so that there is no need to specify non-negativity constraints.
The class provides support for the (incremental) solution of the PIP problem based on variations of the revised simplex method and on Gomory cut generation techniques.
The solution for a PIP problem is the lexicographic minimum of the integer points of the feasible region, expressed in terms of the parameters. As the problem to be solved only involves non-negative variables and parameters, the problem will always be either unfeasible or optimizable.
As the feasibility and the solution value of a PIP problem depend on the values of the parameters, the solution is a binary decision tree, dividing the context parameter set into subsets. The tree nodes are of two kinds:
It may happen that a decision node has no false child. This means that there is no solution if at least one of the corresponding constraints is not satisfied. Decision nodes having two or more linear tests on the parameters cannot have a false child. Decision nodes always have a true child.
Both kinds of tree nodes may also contain the definition of extra parameters which are artificially introduced by the solver to enforce an integral solution. Such artificial parameters are defined by the integer division of a linear expression on the parameters by an integer coefficient.
By exploiting the incremental nature of the solver, it is possible to reuse part of the computational work already done when solving variants of a given PIP_Problem: currently, incremental resolution supports the addition of space dimensions, the addition of parameters and the addition of constraints.
Builds a trivial PIP problem.
A trivial PIP problem requires to compute the lexicographic minimum on a vector space under no constraints and with no parameters: due to the implicit non-negativity constraints, the origin of the vector space is an optimal solution.
|dim||The dimension of the vector space enclosing |
|std::length_error||Thrown if |
Builds a PIP problem from a sequence of constraints.
Builds a PIP problem having space dimension
dim from the constraint system cs; the dimensions
vars are interpreted as parameters.
|native void parma_polyhedra_library.PIP_Problem.clear||(||)|
this to be equal to the trivial PIP problem.
The space dimension is reset to .
|native void parma_polyhedra_library.PIP_Problem.add_space_dimensions_and_embed||(||long||pip_vars,|
pip_vars + pip_params new space dimensions and embeds the PIP problem in the new vector space.
|pip_vars||The number of space dimensions to add that are interpreted as PIP problem variables (i.e., non parameters). These are added before adding the |
|pip_params||The number of space dimensions to add that are interpreted as PIP problem parameters. These are added after having added the |
The new space dimensions will be those having the highest indexes in the new PIP problem; they are initially unconstrained.
|native void parma_polyhedra_library.PIP_Problem.add_constraint||(||Constraint||c||)|
Adds a copy of constraint
c to the PIP problem.
|std::invalid_argument||Thrown if the constraint |
|native void parma_polyhedra_library.PIP_Problem.add_constraints||(||Constraint_System||cs||)|
Adds a copy of the constraints in
cs to the PIP problem.
|std::invalid_argument||Thrown if the constraint system |
|native boolean parma_polyhedra_library.PIP_Problem.is_satisfiable||(||)|
Checks satisfiability of
trueif and only if the PIP problem is satisfiable.
Optimizes the PIP problem.
Solves the PIP problem, returning an exit status.
UNFEASIBLE_PIP_PROBLEMif the PIP problem is not satisfiable;
OPTIMIZED_PIP_PROBLEMif the PIP problem admits an optimal solution.