Exemplo n.º 1
0
static void test5() {
    opt::model_based_opt mbo;
    unsigned x = mbo.add_var(rational(2));
    unsigned y = mbo.add_var(rational(3));
    unsigned z = mbo.add_var(rational(4));
    unsigned u = mbo.add_var(rational(5));

    add_ineq(mbo, x, 1, y, -1, 0, opt::t_le);
    add_ineq(mbo, x, 1, z, -1, 0, opt::t_le);
    add_ineq(mbo, y, 1, u, -1, 0, opt::t_le);
    add_ineq(mbo, z, 1, u, -1, 1, opt::t_le);

    unsigned vars[2] = { y, z };
    mbo.project(1, vars);    
    mbo.display(std::cout);

    mbo.project(1, vars);    
    mbo.display(std::cout);

    mbo.project(1, vars+1);
    mbo.display(std::cout);

    vector<opt::model_based_opt::row> rows;
    mbo.get_live_rows(rows);
}
Exemplo n.º 2
0
// test strict
static void test4() {
    opt::model_based_opt mbo;
    vector<var> vars;
    unsigned x = mbo.add_var(rational(2));
    unsigned y = mbo.add_var(rational(3));
    unsigned z = mbo.add_var(rational(4));
    unsigned u = mbo.add_var(rational(5));

    add_ineq(mbo, x, 1, y, -1, 0, opt::t_lt);
    add_ineq(mbo, x, 1, z, -1, 0, opt::t_lt);
    add_ineq(mbo, y, 1, u, -1, 0, opt::t_le);
    add_ineq(mbo, z, 1, u, -1, 1, opt::t_le);
    add_ineq(mbo, u, 1, -6, opt::t_le);

    vars.reset();
    vars.push_back(var(x, rational(2)));
    mbo.set_objective(vars, rational(0));

    opt::inf_eps value = mbo.maximize();    
    std::cout << value << "\n";
    std::cout << "x: " << mbo.get_value(x) << "\n";
    std::cout << "y: " << mbo.get_value(y) << "\n";
    std::cout << "z: " << mbo.get_value(z) << "\n";
    std::cout << "u: " << mbo.get_value(u) << "\n";
}
Exemplo n.º 3
0
 void fuzz_round(unsigned& num_rounds, unsigned lvl) {
     unsigned num_rounds2 = 0;
     lbool is_sat = l_true;    
     std::cout << "(push)\n";
     ctx.push();
     unsigned r = 0;
     while (is_sat == l_true && r <= num_rounds + 1) {
         add_ineq();
         std::cout << "(check-sat)\n";
         is_sat = ctx.check();
         if (lvl > 0 && is_sat == l_true) {
             fuzz_round(num_rounds2, lvl-1);
         }
         ++r;
     }
     num_rounds = r;
     std::cout << "; number of rounds: " << num_rounds << " level: " << lvl << "\n";
     ctx.pop(1);
     std::cout << "(pop)\n";
 }
Exemplo n.º 4
0
static void test7() {
    opt::model_based_opt mbo;
    unsigned x0 = mbo.add_var(rational(2));
    unsigned x = mbo.add_var(rational(1));
    unsigned y = mbo.add_var(rational(3));
    unsigned z = mbo.add_var(rational(4));
    unsigned u = mbo.add_var(rational(5));
    unsigned v = mbo.add_var(rational(6));
    unsigned w = mbo.add_var(rational(6));

    add_ineq(mbo, x0, 1, y, -1, 0, opt::t_le);
    add_ineq(mbo, x, 1, y, -1, 0, opt::t_lt);
    add_ineq(mbo, y, 1, u, -1, 0, opt::t_le);
    add_ineq(mbo, y, 1, z, -1, 1, opt::t_le);
    add_ineq(mbo, y, 1, v, -1, 1, opt::t_le);
    add_ineq(mbo, y, 1, w, -1, 1, opt::t_lt);

    mbo.display(std::cout);
    mbo.project(1, &y);
    mbo.display(std::cout);
}