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:
parent
628a6378c2
commit
7fc294d329
8 changed files with 909 additions and 849 deletions
|
@ -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();
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue