Esempio n. 1
0
box::box(std::vector<Enode *> const & vars)
    : m_vars(vars), m_values(m_vars.size() == 0 ? 1 : m_vars.size()),
      m_bounds(m_values.size()), m_domains(m_values.size()), m_precisions(m_values.size(), 0.0) {
    if (m_vars.size() > 0) {
        constructFromVariables(m_vars);
    }
}
Esempio n. 2
0
box::box(vector<Enode *> const & vars)
    : m_vars(nullptr), m_values(vars.size() == 0 ? 1 : vars.size()), m_idx_last_branched(-1) {
    if (vars.size() > 0) {
        m_vars = make_shared<vector<Enode *>>(vars);
        m_name_index_map = make_shared<unordered_map<string, int>>();
        constructFromVariables(*m_vars);
    }
}
Esempio n. 3
0
void box::constructFromLiterals(vector<Enode *> const & lit_vec) {
    DREAL_LOG_DEBUG << "box::constructFromLiterals";
    // Construct a list of variables
    set<Enode *, enode_lex_cmp> var_set;
    for (auto const & lit : lit_vec) {
        unordered_set<Enode *> const & temp_vars = lit->get_exist_vars();
        var_set.insert(temp_vars.begin(), temp_vars.end());
    }
    m_vars = make_shared<vector<Enode*>>(var_set.begin(), var_set.end());
    m_name_index_map = make_shared<unordered_map<string, int>>();
    constructFromVariables(*m_vars);
    return;
}
Esempio n. 4
0
box::box(box const & b, unordered_set<Enode *> const & extra_vars)
    : m_vars(make_shared<vector<Enode* > >(*b.m_vars)),
      m_values(m_vars->size() + extra_vars.size()),
      m_name_index_map(make_shared<unordered_map<string, int>>()),
      m_idx_last_branched(-1) {
    m_vars->insert(m_vars->end(), extra_vars.begin(), extra_vars.end());
    if (m_vars->size() > 0) {
        sort(m_vars->begin(), m_vars->end(), enode_lex_cmp());
        constructFromVariables(*m_vars);
        for (unsigned i = 0; i < b.m_vars->size(); i++) {
            m_values[get_index((*b.m_vars)[i])] = b.m_values[i];
        }
    }
}
Esempio n. 5
0
box::box(box const & b, std::unordered_set<Enode *> const & extra_vars)
    : m_vars(b.m_vars), m_values(m_vars.size() + extra_vars.size()),
      m_bounds(m_values.size()), m_domains(m_values.size()), m_precisions(m_values.size(), 0.0) {
    copy(extra_vars.begin(), extra_vars.end(), back_inserter(m_vars));
    std::sort(m_vars.begin(), m_vars.end(),
              [](Enode const * e1, Enode const * e2) {
                  return e1->getCar()->getName() < e2->getCar()->getName();
              });
    if (m_vars.size() > 0) {
        constructFromVariables(m_vars);
        for (unsigned i = 0; i < b.m_vars.size(); i++) {
            m_values[get_index(b.m_vars[i])] = b.m_values[i];
        }
    }
}
Esempio n. 6
0
void box::constructFromLiterals(vector<Enode *> const & lit_vec) {
    DREAL_LOG_DEBUG << "box::constructFromLiterals";
    // Construct a list of variables
    unordered_set<Enode *> var_set;
    for (auto const & lit : lit_vec) {
        unordered_set<Enode *> const & temp_vars = lit->get_vars();
        var_set.insert(temp_vars.begin(), temp_vars.end());
    }
    m_vars.clear();
    std::copy(var_set.begin(), var_set.end(), std::back_inserter(m_vars));
    std::sort(m_vars.begin(), m_vars.end(),
              [](Enode const * e1, Enode const * e2) {
                  return e1->getCar()->getName() < e2->getCar()->getName();
              });
    constructFromVariables(m_vars);
    return;
}