mirror of
https://github.com/Z3Prover/z3
synced 2025-04-15 13:28:47 +00:00
rm lu
This commit is contained in:
parent
2e9dc3d090
commit
e04e726f45
|
@ -56,8 +56,6 @@ public:
|
||||||
|
|
||||||
|
|
||||||
lp_primal_core_solver<mpq, numeric_pair<mpq>> m_r_solver; // solver in rational numbers
|
lp_primal_core_solver<mpq, numeric_pair<mpq>> m_r_solver; // solver in rational numbers
|
||||||
|
|
||||||
lp_primal_core_solver<double, double> m_d_solver; // solver in doubles
|
|
||||||
|
|
||||||
lar_core_solver(
|
lar_core_solver(
|
||||||
lp_settings & settings,
|
lp_settings & settings,
|
||||||
|
@ -140,7 +138,6 @@ public:
|
||||||
|
|
||||||
void push() {
|
void push() {
|
||||||
lp_assert(m_r_solver.basis_heading_is_correct());
|
lp_assert(m_r_solver.basis_heading_is_correct());
|
||||||
lp_assert(!need_to_presolve_with_double_solver() || m_d_solver.basis_heading_is_correct());
|
|
||||||
lp_assert(m_column_types.size() == m_r_A.column_count());
|
lp_assert(m_column_types.size() == m_r_A.column_count());
|
||||||
m_stacked_simplex_strategy = settings().simplex_strategy();
|
m_stacked_simplex_strategy = settings().simplex_strategy();
|
||||||
m_stacked_simplex_strategy.push();
|
m_stacked_simplex_strategy.push();
|
||||||
|
@ -196,13 +193,9 @@ public:
|
||||||
m_stacked_simplex_strategy.pop(k);
|
m_stacked_simplex_strategy.pop(k);
|
||||||
settings().set_simplex_strategy(m_stacked_simplex_strategy);
|
settings().set_simplex_strategy(m_stacked_simplex_strategy);
|
||||||
lp_assert(m_r_solver.basis_heading_is_correct());
|
lp_assert(m_r_solver.basis_heading_is_correct());
|
||||||
lp_assert(!need_to_presolve_with_double_solver() || m_d_solver.basis_heading_is_correct());
|
|
||||||
}
|
|
||||||
|
|
||||||
bool need_to_presolve_with_double_solver() const {
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
template <typename L>
|
template <typename L>
|
||||||
bool is_zero_vector(const vector<L> & b) {
|
bool is_zero_vector(const vector<L> & b) {
|
||||||
for (const L & m: b)
|
for (const L & m: b)
|
||||||
|
|
|
@ -31,18 +31,6 @@ lar_core_solver::lar_core_solver(
|
||||||
m_r_lower_bounds(),
|
m_r_lower_bounds(),
|
||||||
m_r_upper_bounds(),
|
m_r_upper_bounds(),
|
||||||
settings,
|
settings,
|
||||||
column_names),
|
|
||||||
m_d_solver(m_d_A,
|
|
||||||
m_d_right_sides_dummy,
|
|
||||||
m_d_x,
|
|
||||||
m_d_basis,
|
|
||||||
m_d_nbasis,
|
|
||||||
m_d_heading,
|
|
||||||
m_d_costs_dummy,
|
|
||||||
m_column_types(),
|
|
||||||
m_d_lower_bounds,
|
|
||||||
m_d_upper_bounds,
|
|
||||||
settings,
|
|
||||||
column_names) {
|
column_names) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -57,22 +45,7 @@ void lar_core_solver::prefix_r() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void lar_core_solver::prefix_d() {
|
|
||||||
// m_d_solver.m_b.resize(m_d_solver.m_m());
|
|
||||||
m_d_solver.m_copy_of_xB.resize(m_d_solver.m_n());
|
|
||||||
m_d_solver.m_costs.resize(m_d_solver.m_n());
|
|
||||||
m_d_solver.m_d.resize(m_d_solver.m_n());
|
|
||||||
m_d_solver.m_ed.resize(m_d_solver.m_m());
|
|
||||||
m_d_solver.m_pivot_row.resize(m_d_solver.m_n());
|
|
||||||
m_d_solver.m_pivot_row_of_B_1.resize(m_d_solver.m_m());
|
|
||||||
m_d_solver.m_w.resize(m_d_solver.m_m());
|
|
||||||
m_d_solver.m_y.resize(m_d_solver.m_m());
|
|
||||||
m_d_solver.m_steepest_edge_coefficients.resize(m_d_solver.m_n());
|
|
||||||
m_d_solver.m_column_norms.clear();
|
|
||||||
m_d_solver.m_column_norms.resize(m_d_solver.m_n(), 2);
|
|
||||||
m_d_solver.clear_inf_set();
|
|
||||||
m_d_solver.resize_inf_set(m_d_solver.m_n());
|
|
||||||
}
|
|
||||||
|
|
||||||
void lar_core_solver::fill_not_improvable_zero_sum_from_inf_row() {
|
void lar_core_solver::fill_not_improvable_zero_sum_from_inf_row() {
|
||||||
unsigned bj = m_r_basis[m_r_solver.m_inf_row_index_for_tableau];
|
unsigned bj = m_r_basis[m_r_solver.m_inf_row_index_for_tableau];
|
||||||
|
|
|
@ -47,7 +47,6 @@ namespace lp {
|
||||||
|
|
||||||
|
|
||||||
bool lar_solver::sizes_are_correct() const {
|
bool lar_solver::sizes_are_correct() const {
|
||||||
lp_assert(strategy_is_undecided() || !m_mpq_lar_core_solver.need_to_presolve_with_double_solver() || A_r().column_count() == A_d().column_count());
|
|
||||||
lp_assert(A_r().column_count() == m_mpq_lar_core_solver.m_r_solver.m_column_types.size());
|
lp_assert(A_r().column_count() == m_mpq_lar_core_solver.m_r_solver.m_column_types.size());
|
||||||
lp_assert(A_r().column_count() == m_mpq_lar_core_solver.m_r_solver.m_costs.size());
|
lp_assert(A_r().column_count() == m_mpq_lar_core_solver.m_r_solver.m_costs.size());
|
||||||
lp_assert(A_r().column_count() == m_mpq_lar_core_solver.m_r_x.size());
|
lp_assert(A_r().column_count() == m_mpq_lar_core_solver.m_r_x.size());
|
||||||
|
@ -748,9 +747,6 @@ namespace lp {
|
||||||
|
|
||||||
|
|
||||||
void lar_solver::solve_with_core_solver() {
|
void lar_solver::solve_with_core_solver() {
|
||||||
if (m_mpq_lar_core_solver.need_to_presolve_with_double_solver()) {
|
|
||||||
add_last_rows_to_lu(m_mpq_lar_core_solver.m_d_solver);
|
|
||||||
}
|
|
||||||
m_mpq_lar_core_solver.prefix_r();
|
m_mpq_lar_core_solver.prefix_r();
|
||||||
if (costs_are_used()) {
|
if (costs_are_used()) {
|
||||||
m_basic_columns_with_changed_cost.resize(m_mpq_lar_core_solver.m_r_x.size());
|
m_basic_columns_with_changed_cost.resize(m_mpq_lar_core_solver.m_r_x.size());
|
||||||
|
|
Loading…
Reference in a new issue