#include <lurupa/Condition.h>
Public Member Functions | |
void | cond (const Lp *lp, INTERVAL &enclosure) |
Compute verified condition number. | |
Condition (Lurupa *lurupa, Report *report) | |
Constructor. | |
void | rho_d (const Lp *lp, INTERVAL &enclosure) |
Compute distance to dual infeasibility. | |
void | rho_p (const Lp *lp, INTERVAL &enclosure) |
Compute distance to primal infeasibility. | |
~Condition () | |
Destructor. | |
Private Member Functions | |
Lp * | generate_lp_rho_d (const Lp *lp) |
Generate lp to compute distance to dual infeasibility. | |
Lp * | generate_lp_rho_p (const Lp *lp) |
Generate lp to compute distance to primal infeasibility. | |
int | norm (const Lp *lp, INTERVAL &enclosure) |
Enclosure of the norm of an lp. | |
INTERVAL | norm_1 (const INTERVAL_VECTOR &ix) |
Enclosure of the 1 norm of a vector. | |
INTERVAL | norm_11 (const INTERVAL_MATRIX &IA, const INTERVAL_MATRIX &IB) |
Enclosure of the 1,1 operator norm of a matrix. | |
INTERVAL | norm_F (const INTERVAL_MATRIX &IA, const INTERVAL_MATRIX &IB) |
Enclosure of the Frobenius norm of a matrix. | |
INTERVAL | norm_L1 (const INTERVAL_MATRIX &IA, const INTERVAL_MATRIX &IB) |
Enclosure of the L1 norm of a matrix. | |
void | rot (int *rg, int i1, int i2, int i3) |
Rotate elements of array. | |
void | swap (int *rg, int i, int iT) |
Swap elements of array. | |
Private Attributes | |
Lurupa * | lurupa |
Lurupa reference for bound computation. | |
Report * | preport |
Reporting and debugging. |
This class implements the computation of verified condition numbers. It is based on Ordonez and Freund's [8] linear programming characterization of the condition number. This in turn can be bounded with Lurupa.
Generate lp to compute distance to dual infeasibility.
Generate the lp to compute the distance to dual infeasibility. Ordonez and Freund's lp (3.15) translates to the following lp. Note the transformation from to
.
References Lp::free_variables, Lp::free_variables_size, Lp::ia, Lp::IA, Lp::ib, Lp::IB, Lp::ic, Lp::infinite, Lp::ix, Lp::iy, Lp::iz, Lp::lurupa, Lp::maximize, Lp::name, Lp::non_fixed_vars, Lp::xl, and Lp::xu.
Referenced by rho_d().
Generate lp to compute distance to primal infeasibility.
Generate the lp to compute the distance to primal infeasibility. Ordonez and Freund's lp (3.14) translates to the following lp. Note the transformation from to
.
References Lp::free_variables, Lp::free_variables_size, Lp::ia, Lp::IA, Lp::ib, Lp::IB, Lp::ic, Lp::infinite, Lp::ix, Lp::iy, Lp::iz, Lp::lurupa, Lp::maximize, Lp::name, Lp::non_fixed_vars, Lp::xl, and Lp::xu.
Referenced by rho_p().
int Condition::norm | ( | const Lp * | lp, | |
INTERVAL & | enclosure | |||
) | [private] |
INTERVAL Condition::norm_1 | ( | const INTERVAL_VECTOR & | ix | ) | [private] |
INTERVAL Condition::norm_11 | ( | const INTERVAL_MATRIX & | IA, | |
const INTERVAL_MATRIX & | IB | |||
) | [private] |
INTERVAL Condition::norm_F | ( | const INTERVAL_MATRIX & | IA, | |
const INTERVAL_MATRIX & | IB | |||
) | [private] |
Enclosure of the Frobenius norm of a matrix.
Compute an enclosure of the Frobenius norm of the matrix .
[in] | IA | upper part of the matrix |
[in] | IB | lower part of the matrix |
Referenced by norm().
INTERVAL Condition::norm_L1 | ( | const INTERVAL_MATRIX & | IA, | |
const INTERVAL_MATRIX & | IB | |||
) | [private] |
void Condition::rho_d | ( | const Lp * | lp, | |
INTERVAL & | enclosure | |||
) |
Compute distance to dual infeasibility.
Compute distance to dual infeasibility . Consists of the following steps:
enclosure
, set to smallest lower/upper bound
[in] | lp | Lp to compute distance to primal infeasibility for |
[out] | enclosure | Enclosure of distance to primal infeasibility |
References Lp::free_variables, Lp::free_variables_size, generate_lp_rho_d(), Lp::IA, Lp::IB, Lp::infinite, Lp::ix, Lurupa::lower_bound(), Solver_module_interface::lp2solver, lurupa, Lp::non_fixed_vars, preport, Report::print(), Solver_module_interface::set_bounds, Lurupa::solve_lp(), Lurupa::solver_module, swap(), Lurupa::upper_bound(), Lp::xl, and Lp::xu.
Referenced by cond(), and Lurupa::rho_d().
void Condition::rho_p | ( | const Lp * | lp, | |
INTERVAL & | enclosure | |||
) |
Compute distance to primal infeasibility.
Compute distance to primal infeasibility . Consists of the following steps:
enclosure
, set to smallest lower/upper bound
[in] | lp | Lp to compute distance to primal infeasibility for |
[out] | enclosure | Enclosure of distance to primal infeasibility |
References Lp::free_variables, Lp::free_variables_size, generate_lp_rho_p(), Lp::IA, Lp::IB, Lp::infinite, Lp::ix, Lurupa::lower_bound(), Solver_module_interface::lp2solver, lurupa, Lp::non_fixed_vars, preport, Report::print(), rot(), Solver_module_interface::set_bounds, Lurupa::solve_lp(), Lurupa::solver_module, swap(), Lurupa::upper_bound(), Lp::xl, and Lp::xu.
Referenced by cond(), and Lurupa::rho_p().
void Condition::rot | ( | int * | rg, | |
int | i1, | |||
int | i2, | |||
int | i3 | |||
) | [private] |
void Condition::swap | ( | int * | rg, | |
int | i, | |||
int | iT | |||
) | [private] |