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.