Linear Programming namespace. More...
Namespaces | |
| detail | |
| Detail of Linear Programming namespace. | |
Classes | |
| struct | LowerBoundTag |
| struct | UpperBoundTag |
| struct | RightBoundTag |
| struct | LeftBoundTag |
| class | single_bounded_expression |
| class | double_bounded_expression |
| class | linear_expression |
| class | Id |
| struct | col_id |
| struct | row_id |
| class | add_max_violated |
| functor for adding maximum violated constraint More... | |
| struct | max_violated_separation_oracle |
| functor computing add_max_violated More... | |
| class | add_first_violated |
| functor More... | |
| struct | first_violated_separation_oracle |
| functor computing add_first_violated More... | |
| struct | random_violated_separation_oracle |
| detail More... | |
Typedefs | |
| using | glp = detail::lp_base< detail::glp_impl > |
Enumerations | |
| enum | optimization_type { MINIMIZE, MAXIMIZE } |
| optimization type | |
| enum | simplex_type { PRIMAL, DUAL } |
| simplex method type | |
| enum | problem_type { OPTIMAL, INFEASIBLE, UNBOUNDED, UNDEFINED } |
| LP problem type. | |
Functions | |
| template<typename Stream , typename BoundDirection > | |
| Stream & | operator<< (Stream &o, const single_bounded_expression< LowerBoundTag, BoundDirection > &expr) |
| operator<< for Lower Bound | |
| template<typename Stream , typename BoundDirection > | |
| Stream & | operator<< (Stream &o, const single_bounded_expression< UpperBoundTag, BoundDirection > &expr) |
| operator<< for Upper Bound | |
| template<typename Stream > | |
| Stream & | operator<< (Stream &o, const double_bounded_expression &expr) |
| detail More... | |
|
single_bounded_expression < LowerBoundTag, LeftBoundTag > | operator<= (double val, const linear_expression &expr) |
| double <= linear_expression operator. | |
|
single_bounded_expression < LowerBoundTag, RightBoundTag > | operator>= (const linear_expression &expr, double val) |
| linear_expression >= double operator. | |
|
single_bounded_expression < UpperBoundTag, LeftBoundTag > | operator>= (double val, const linear_expression &expr) |
| double >= linear_expression operator. | |
|
single_bounded_expression < UpperBoundTag, RightBoundTag > | operator<= (const linear_expression &expr, double val) |
| linear_expression <= double operator. | |
| double_bounded_expression | operator>= (double val, const single_bounded_expression< LowerBoundTag, RightBoundTag > &expr) |
| double >= right_lower_bound_expression operator. | |
| double_bounded_expression | operator<= (const single_bounded_expression< LowerBoundTag, LeftBoundTag > &expr, double val) |
| left_lower_bound_expression <= double operator. | |
| double_bounded_expression | operator<= (double val, const single_bounded_expression< UpperBoundTag, RightBoundTag > &expr) |
| double <= right_upper_bound_expression operator. | |
| double_bounded_expression | operator>= (const single_bounded_expression< UpperBoundTag, LeftBoundTag > &expr, double val) |
| left_upper_bound_expression >= double operator. | |
| double_bounded_expression | operator== (double val, const linear_expression &expr) |
| double == linear_expression operator. | |
| double_bounded_expression | operator== (const linear_expression &expr, double val) |
| linear_expression == double operator. | |
| template<typename Stream > | |
| Stream & | operator<< (Stream &o, const linear_expression &expr) |
| operator<< : printing expression | |
| linear_expression | operator+ (linear_expression expr_left, const linear_expression &expr_right) |
| linear_expression + linear_expression operator. | |
| linear_expression | operator- (linear_expression expr_left, const linear_expression &expr_right) |
| linear_expression - linear_expression operator. | |
| linear_expression | operator* (linear_expression expr, double val) |
| linear_expression * double operator. | |
| linear_expression | operator* (double val, const linear_expression &expr) |
| double * linear_expression operator. | |
| linear_expression | operator/ (linear_expression expr, double val) |
| linear_expression / double operator. | |
| linear_expression | operator- (const linear_expression &expr) |
| Unary - operator. | |
| template<class TryAddViolated , class SolveLp > | |
| problem_type | row_generation (TryAddViolated try_add_violated, SolveLp solve_lp) |
Linear Programming namespace.
| Stream& paal::lp::operator<< | ( | Stream & | o, |
| const double_bounded_expression & | expr | ||
| ) |
| problem_type paal::lp::row_generation | ( | TryAddViolated | try_add_violated, |
| SolveLp | solve_lp | ||
| ) |
Finds an extreme point solution to the LP using row generation: solves the initial LP and then ask the separation oracle if the found solution is a feasible solution to the complete problem. If not, adds a new row (generated by the oracle) to the LP and re-optimizes it. This procedure is iterated until a feasible solution to the full LP is found.
Definition at line 36 of file lp_row_generation.hpp.
1.8.5