| 398 | } |
| 399 | |
| 400 | TieBreak<IntVarBranch> ann2ivarsel(AST::Node* ann, Rnd rnd, double decay) { |
| 401 | if (AST::Atom* s = dynamic_cast<AST::Atom*>(ann)) { |
| 402 | if (s->id == "input_order") |
| 403 | return TieBreak<IntVarBranch>(INT_VAR_NONE()); |
| 404 | if (s->id == "first_fail") |
| 405 | return TieBreak<IntVarBranch>(INT_VAR_SIZE_MIN()); |
| 406 | if (s->id == "anti_first_fail") |
| 407 | return TieBreak<IntVarBranch>(INT_VAR_SIZE_MAX()); |
| 408 | if (s->id == "smallest") |
| 409 | return TieBreak<IntVarBranch>(INT_VAR_MIN_MIN()); |
| 410 | if (s->id == "largest") |
| 411 | return TieBreak<IntVarBranch>(INT_VAR_MAX_MAX()); |
| 412 | if (s->id == "occurrence") |
| 413 | return TieBreak<IntVarBranch>(INT_VAR_DEGREE_MAX()); |
| 414 | if (s->id == "max_regret") |
| 415 | return TieBreak<IntVarBranch>(INT_VAR_REGRET_MIN_MAX()); |
| 416 | if (s->id == "most_constrained") |
| 417 | return TieBreak<IntVarBranch>(INT_VAR_SIZE_MIN(), |
| 418 | INT_VAR_DEGREE_MAX()); |
| 419 | if (s->id == "random") { |
| 420 | return TieBreak<IntVarBranch>(INT_VAR_RND(rnd)); |
| 421 | } |
| 422 | if (s->id == "dom_w_deg") { |
| 423 | return TieBreak<IntVarBranch>(INT_VAR_AFC_SIZE_MAX(decay)); |
| 424 | } |
| 425 | if (s->id == "afc_min") |
| 426 | return TieBreak<IntVarBranch>(INT_VAR_AFC_MIN(decay)); |
| 427 | if (s->id == "afc_max") |
| 428 | return TieBreak<IntVarBranch>(INT_VAR_AFC_MAX(decay)); |
| 429 | if (s->id == "afc_size_min") |
| 430 | return TieBreak<IntVarBranch>(INT_VAR_AFC_SIZE_MIN(decay)); |
| 431 | if (s->id == "afc_size_max") { |
| 432 | return TieBreak<IntVarBranch>(INT_VAR_AFC_SIZE_MAX(decay)); |
| 433 | } |
| 434 | if (s->id == "action_min") |
| 435 | return TieBreak<IntVarBranch>(INT_VAR_ACTION_MIN(decay)); |
| 436 | if (s->id == "action_max") |
| 437 | return TieBreak<IntVarBranch>(INT_VAR_ACTION_MAX(decay)); |
| 438 | if (s->id == "action_size_min") |
| 439 | return TieBreak<IntVarBranch>(INT_VAR_ACTION_SIZE_MIN(decay)); |
| 440 | if (s->id == "action_size_max") |
| 441 | return TieBreak<IntVarBranch>(INT_VAR_ACTION_SIZE_MAX(decay)); |
| 442 | } |
| 443 | std::cerr << "Warning, ignored search annotation: "; |
| 444 | ann->print(std::cerr); |
| 445 | std::cerr << std::endl; |
| 446 | return TieBreak<IntVarBranch>(INT_VAR_NONE()); |
| 447 | } |
| 448 | |
| 449 | IntValBranch ann2ivalsel(AST::Node* ann, std::string& r0, std::string& r1, |
| 450 | Rnd rnd) { |
no test coverage detected