47 #ifdef GECODE_HAS_SET_VARS
53 namespace Test {
namespace Branch {
87 :
x(*this, n, 0, 1) {}
90 : Gecode::
Space(share,s) {
99 #ifdef GECODE_HAS_SET_VARS
107 :
x(*this, n, Gecode::IntSet::empty, d) {}
110 : Gecode::
Space(share,s) {
150 const int n_int_var_branch =
153 const char* int_var_branch_name[] = {
157 "INT_VAR_DEGREE_MIN",
158 "INT_VAR_DEGREE_MAX",
167 "INT_VAR_SIZE_DEGREE_MIN",
168 "INT_VAR_SIZE_DEGREE_MAX",
169 "INT_VAR_SIZE_AFC_MIN",
170 "INT_VAR_SIZE_AFC_MAX",
171 "INT_VAR_REGRET_MIN_MIN",
172 "INT_VAR_REGRET_MIN_MAX",
173 "INT_VAR_REGRET_MAX_MIN",
174 "INT_VAR_REGRET_MAX_MAX"
190 const int n_int_val_branch =
193 const char* int_val_branch_name[] = {
207 #ifdef GECODE_HAS_SET_VARS
234 const int n_set_var_branch =
237 const char* set_var_branch_name[] = {
241 "SET_VAR_DEGREE_MIN",
242 "SET_VAR_DEGREE_MAX",
251 "SET_VAR_SIZE_DEGREE_MIN",
252 "SET_VAR_SIZE_DEGREE_MAX",
253 "SET_VAR_SIZE_AFC_MIN",
254 "SET_VAR_SIZE_AFC_MAX"
268 const int n_set_val_branch =
271 const char* set_val_branch_name[] = {
289 RunInfo(
const std::string& vara,
const std::string& varb,
290 const std::string& valname,
294 o <<
"(" <<
var <<
", " <<
val <<
", " <<
a_d <<
", " <<
c_d <<
")";
307 namespace Test {
namespace Branch {
310 template<
class TestSpace>
321 if (ex == NULL)
break;
329 :
Base(
"Int::Branch::"+s), arity(a),
dom(d) {
338 using namespace Gecode;
341 map<int, vector<RunInfo> > results;
344 post(*root, root->x);
347 for (
int vara = 0; vara<n_int_var_branch; vara++) {
348 for (
int varb = 1; varb<n_int_var_branch; varb++) {
349 for (
int val = 0; val<n_int_val_branch; val++) {
353 branch(*c, c->
x[
i], int_val_branch[val]);
356 tiebreak(int_var_branch[vara], int_var_branch[varb]),
357 int_val_branch[val]);
360 (
RunInfo(int_var_branch_name[vara],
361 int_var_branch_name[varb],
362 int_val_branch_name[val],
367 if (results.size() > 1)
372 std::cout <<
"FAILURE" << std::endl;
373 for (map<
int, vector<RunInfo> >::iterator it = results.begin();
374 it != results.end(); ++it) {
375 std::cout <<
"Number of solutions: " << it->first << std::endl;
376 for (
unsigned int i = 0;
i < it->second.
size(); ++
i)
377 std::cout << it->second[
i] <<
" ";
378 std::cout << std::endl;
382 return results.size() == 1;
395 using namespace Gecode;
398 map<int, vector<RunInfo> > results;
401 post(*root, root->x);
404 for (
int vara = 0; vara<n_int_var_branch; vara++) {
405 for (
int varb = 1; varb<n_int_var_branch; varb++) {
406 for (
int val = 0; val<n_int_val_branch; val++) {
410 branch(*c, c->
x[
i], int_val_branch[val]);
413 tiebreak(int_var_branch[vara], int_var_branch[varb]),
414 int_val_branch[val]);
417 (
RunInfo(int_var_branch_name[vara],
418 int_var_branch_name[varb],
419 int_val_branch_name[val],
424 if (results.size() > 1)
429 std::cout <<
"FAILURE" << std::endl;
430 for (map<
int, vector<RunInfo> >::iterator it = results.begin();
431 it != results.end(); ++it) {
432 std::cout <<
"Number of solutions: " << it->first << std::endl;
433 for (
unsigned int i = 0;
i < it->second.
size(); ++
i)
434 std::cout << it->second[
i] <<
" ";
435 std::cout << std::endl;
439 return results.size() == 1;
442 #ifdef GECODE_HAS_SET_VARS
453 using namespace Gecode;
456 map<int, vector<RunInfo> > results;
459 post(*root, root->x);
463 for (
int vara = 0; vara<n_set_var_branch; vara++) {
464 for (
int varb = 1; varb<n_set_var_branch; varb++) {
465 for (
int val = 0; val<n_set_val_branch; val++) {
469 branch(*c, c->
x[
i], set_val_branch[val]);
472 tiebreak(set_var_branch[vara], set_var_branch[varb]),
473 set_val_branch[val]);
476 (
RunInfo(set_var_branch_name[vara],
477 set_var_branch_name[varb],
478 set_val_branch_name[val],
483 if (results.size() > 1)
488 std::cout <<
"FAILURE" << std::endl;
489 for (map<
int, vector<RunInfo> >::iterator it = results.begin();
490 it != results.end(); ++it) {
491 std::cout <<
"Number of solutions: " << it->first << std::endl;
492 for (
unsigned int i = 0;
i < it->second.
size(); ++
i)
493 std::cout << it->second[
i] <<
" ";
494 std::cout << std::endl;
498 return results.size() == 1;