3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-23 17:15:31 +00:00

make difference logic simplex optimizer incremental

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2014-09-07 16:46:46 -07:00
parent c1580fb85a
commit d9c61464d0
6 changed files with 159 additions and 56 deletions

View file

@ -142,6 +142,7 @@ namespace simplex {
void set_value(var_t var, eps_numeral const& b);
void set_cancel(bool f) { m_cancel = f; }
void set_max_iterations(unsigned m) { m_max_iterations = m; }
void reset();
lbool make_feasible();
lbool minimize(var_t var);
eps_numeral const& get_value(var_t v);

View file

@ -310,6 +310,16 @@ namespace simplex {
}
}
template<typename Ext>
void simplex<Ext>::reset() {
M.reset();
m_to_patch.reset();
m_vars.reset();
m_row2base.reset();
m_left_basis.reset();
m_base_vars.reset();
}
template<typename Ext>
lbool simplex<Ext>::make_feasible() {
++m_stats.m_num_checks;

View file

@ -145,6 +145,7 @@ namespace simplex {
sparse_matrix(manager& m): m(m) {}
~sparse_matrix();
void reset();
class row {
unsigned m_id;

View file

@ -280,6 +280,16 @@ namespace simplex {
}
}
template<typename Ext>
void sparse_matrix<Ext>::reset() {
m_rows.reset();
m_dead_rows.reset();
m_columns.reset();
m_var_pos.reset();
m_var_pos_idx.reset();
}
template<typename Ext>
void sparse_matrix<Ext>::ensure_var(var_t v) {
while (m_columns.size() <= v) {