MCPcopy Create free account
hub / github.com/Gecode/gecode / createBranchers

Method createBranchers

gecode/flatzinc/flatzinc.cpp:1046–1604  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1044 }
1045
1046 void
1047 FlatZincSpace::createBranchers(Printer&p, AST::Node* ann, FlatZincOptions& opt,
1048 bool ignoreUnknown,
1049 std::ostream& err) {
1050 int seed = opt.seed();
1051 double decay = opt.decay();
1052 Rnd rnd(static_cast<unsigned int>(seed));
1053 TieBreak<IntVarBranch> def_int_varsel = INT_VAR_AFC_SIZE_MAX(0.99);
1054 IntBoolVarBranch def_intbool_varsel = INTBOOL_VAR_AFC_SIZE_MAX(0.99);
1055 IntValBranch def_int_valsel = INT_VAL_MIN();
1056 std::string def_int_rel_left = "=";
1057 std::string def_int_rel_right = "!=";
1058 TieBreak<BoolVarBranch> def_bool_varsel = BOOL_VAR_AFC_MAX(0.99);
1059 BoolValBranch def_bool_valsel = BOOL_VAL_MIN();
1060 std::string def_bool_rel_left = "=";
1061 std::string def_bool_rel_right = "!=";
1062#ifdef GECODE_HAS_SET_VARS
1063 SetVarBranch def_set_varsel = SET_VAR_AFC_SIZE_MAX(0.99);
1064 SetValBranch def_set_valsel = SET_VAL_MIN_INC();
1065 std::string def_set_rel_left = "in";
1066 std::string def_set_rel_right = "not in";
1067#endif
1068#ifdef GECODE_HAS_FLOAT_VARS
1069 TieBreak<FloatVarBranch> def_float_varsel = FLOAT_VAR_SIZE_MIN();
1070 FloatValBranch def_float_valsel = FLOAT_VAL_SPLIT_MIN();
1071 std::string def_float_rel_left = "<=";
1072 std::string def_float_rel_right = ">";
1073#endif
1074
1075 std::vector<bool> iv_searched(iv.size());
1076 for (unsigned int i=iv.size(); i--;)
1077 iv_searched[i] = false;
1078 std::vector<bool> bv_searched(bv.size());
1079 for (unsigned int i=bv.size(); i--;)
1080 bv_searched[i] = false;
1081#ifdef GECODE_HAS_SET_VARS
1082 std::vector<bool> sv_searched(sv.size());
1083 for (unsigned int i=sv.size(); i--;)
1084 sv_searched[i] = false;
1085#endif
1086#ifdef GECODE_HAS_FLOAT_VARS
1087 std::vector<bool> fv_searched(fv.size());
1088 for (unsigned int i=fv.size(); i--;)
1089 fv_searched[i] = false;
1090#endif
1091
1092 _lns = 0;
1093 if (ann) {
1094 std::vector<AST::Node*> flatAnn;
1095 if (ann->isArray()) {
1096 flattenAnnotations(ann->getArray() , flatAnn);
1097 } else {
1098 flatAnn.push_back(ann);
1099 }
1100
1101 for (unsigned int i=0; i<flatAnn.size(); i++) {
1102 if (flatAnn[i]->isCall("restart_geometric")) {
1103 AST::Call* call = flatAnn[i]->getCall("restart_geometric");

Callers 2

mainFunction · 0.80
runMethod · 0.80

Calls 15

INT_VAR_AFC_SIZE_MAXFunction · 0.85
INTBOOL_VAR_AFC_SIZE_MAXFunction · 0.85
INT_VAL_MINFunction · 0.85
BOOL_VAR_AFC_MAXFunction · 0.85
BOOL_VAL_MINFunction · 0.85
SET_VAR_AFC_SIZE_MAXFunction · 0.85
SET_VAL_MIN_INCFunction · 0.85
FLOAT_VAR_SIZE_MINFunction · 0.85
FLOAT_VAL_SPLIT_MINFunction · 0.85
flattenAnnotationsFunction · 0.85
ErrorFunction · 0.85
ann2ivarselFunction · 0.85

Tested by

no test coverage detected