| 687 | |
| 688 | #ifdef GECODE_HAS_FLOAT_VARS |
| 689 | TieBreak<FloatVarBranch> ann2fvarsel(AST::Node* ann, Rnd rnd, |
| 690 | double decay) { |
| 691 | if (AST::Atom* s = dynamic_cast<AST::Atom*>(ann)) { |
| 692 | if (s->id == "input_order") |
| 693 | return TieBreak<FloatVarBranch>(FLOAT_VAR_NONE()); |
| 694 | if (s->id == "first_fail") |
| 695 | return TieBreak<FloatVarBranch>(FLOAT_VAR_SIZE_MIN()); |
| 696 | if (s->id == "anti_first_fail") |
| 697 | return TieBreak<FloatVarBranch>(FLOAT_VAR_SIZE_MAX()); |
| 698 | if (s->id == "smallest") |
| 699 | return TieBreak<FloatVarBranch>(FLOAT_VAR_MIN_MIN()); |
| 700 | if (s->id == "largest") |
| 701 | return TieBreak<FloatVarBranch>(FLOAT_VAR_MAX_MAX()); |
| 702 | if (s->id == "occurrence") |
| 703 | return TieBreak<FloatVarBranch>(FLOAT_VAR_DEGREE_MAX()); |
| 704 | if (s->id == "most_constrained") |
| 705 | return TieBreak<FloatVarBranch>(FLOAT_VAR_SIZE_MIN(), |
| 706 | FLOAT_VAR_DEGREE_MAX()); |
| 707 | if (s->id == "random") { |
| 708 | return TieBreak<FloatVarBranch>(FLOAT_VAR_RND(rnd)); |
| 709 | } |
| 710 | if (s->id == "afc_min") |
| 711 | return TieBreak<FloatVarBranch>(FLOAT_VAR_AFC_MIN(decay)); |
| 712 | if (s->id == "afc_max") |
| 713 | return TieBreak<FloatVarBranch>(FLOAT_VAR_AFC_MAX(decay)); |
| 714 | if (s->id == "afc_size_min") |
| 715 | return TieBreak<FloatVarBranch>(FLOAT_VAR_AFC_SIZE_MIN(decay)); |
| 716 | if (s->id == "afc_size_max") |
| 717 | return TieBreak<FloatVarBranch>(FLOAT_VAR_AFC_SIZE_MAX(decay)); |
| 718 | if (s->id == "action_min") |
| 719 | return TieBreak<FloatVarBranch>(FLOAT_VAR_ACTION_MIN(decay)); |
| 720 | if (s->id == "action_max") |
| 721 | return TieBreak<FloatVarBranch>(FLOAT_VAR_ACTION_MAX(decay)); |
| 722 | if (s->id == "action_size_min") |
| 723 | return TieBreak<FloatVarBranch>(FLOAT_VAR_ACTION_SIZE_MIN(decay)); |
| 724 | if (s->id == "action_size_max") |
| 725 | return TieBreak<FloatVarBranch>(FLOAT_VAR_ACTION_SIZE_MAX(decay)); |
| 726 | } |
| 727 | std::cerr << "Warning, ignored search annotation: "; |
| 728 | ann->print(std::cerr); |
| 729 | std::cerr << std::endl; |
| 730 | return TieBreak<FloatVarBranch>(FLOAT_VAR_NONE()); |
| 731 | } |
| 732 | |
| 733 | FloatValBranch ann2fvalsel(AST::Node* ann, std::string r0, std::string r1) { |
| 734 | if (AST::Atom* s = dynamic_cast<AST::Atom*>(ann)) { |
no test coverage detected