3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-06-28 00:48:45 +00:00

move arithmetical mbp functionality to model_based_opt

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2016-06-26 14:30:35 -07:00
parent 628a6378c2
commit 7fc294d329
8 changed files with 909 additions and 849 deletions

View file

@ -287,9 +287,76 @@ static void test7() {
mbo.display(std::cout);
}
static void test8() {
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);
mbo.display(std::cout);
mbo.project(1, &y);
mbo.display(std::cout);
}
static void test9() {
opt::model_based_opt mbo;
unsigned x0 = mbo.add_var(rational(2), true);
unsigned x = mbo.add_var(rational(1), true);
unsigned y = mbo.add_var(rational(3), true);
unsigned z = mbo.add_var(rational(4), true);
unsigned u = mbo.add_var(rational(5), true);
unsigned v = mbo.add_var(rational(6), true);
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);
mbo.display(std::cout);
mbo.project(1, &y);
mbo.display(std::cout);
}
static void test10() {
opt::model_based_opt mbo;
unsigned x0 = mbo.add_var(rational(2), true);
unsigned x = mbo.add_var(rational(1), true);
unsigned y = mbo.add_var(rational(3), true);
unsigned z = mbo.add_var(rational(4), true);
unsigned u = mbo.add_var(rational(5), true);
unsigned v = mbo.add_var(rational(6), true);
add_ineq(mbo, x0, 1, y, -2, 0, opt::t_le);
add_ineq(mbo, x, 1, y, -2, 0, opt::t_lt);
add_ineq(mbo, y, 3, u, -4, 0, opt::t_le);
add_ineq(mbo, y, 3, z, -5, 1, opt::t_le);
add_ineq(mbo, y, 3, v, -6, 1, opt::t_le);
mbo.display(std::cout);
mbo.project(1, &y);
mbo.display(std::cout);
mbo.project(1, &x0);
mbo.display(std::cout);
}
// test with mix of upper and lower bounds
void tst_model_based_opt() {
test10();
return;
check_random_ineqs();
test1();
test2();
@ -298,5 +365,6 @@ void tst_model_based_opt() {
test5();
test6();
test7();
test8();
test9();
}