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

Method disabled

test/set.cpp:540–682  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

538 }
539
540 bool
541 SetTestSpace::disabled(const SetAssignment& a, SetTestSpace& c, Gecode::Support::RandomGenerator& rand) {
542 c.disable();
543 using namespace Gecode;
544 bool setsAssigned = true;
545 for (int j=x.size(); j--; )
546 if (!x[j].assigned()) {
547 setsAssigned = false;
548 break;
549 }
550 bool intsAssigned = true;
551 for (int j=y.size(); j--; )
552 if (!y[j].assigned()) {
553 intsAssigned = false;
554 break;
555 }
556
557 // Select variable to be pruned
558 int i;
559 if (intsAssigned) {
560 i = rand(x.size());
561 } else if (setsAssigned) {
562 i = rand(y.size());
563 } else {
564 i = rand(x.size()+y.size());
565 }
566
567 if (setsAssigned || i>=x.size()) {
568 if (i>=x.size())
569 i = i-x.size();
570 while (y[i].assigned()) {
571 i = (i+1) % y.size();
572 }
573 // Prune int var
574
575 // Select mode for pruning
576 switch (rand(3)) {
577 case 0:
578 if (a.ints()[i] < y[i].max()) {
579 int v=a.ints()[i]+1+
580 rand(static_cast<unsigned int>(y[i].max()-a.ints()[i]));
581 assert((v > a.ints()[i]) && (v <= y[i].max()));
582 rel(i, Gecode::IRT_LE, v);
583 c.rel(i, Gecode::IRT_LE, v);
584 }
585 break;
586 case 1:
587 if (a.ints()[i] > y[i].min()) {
588 int v=y[i].min()+
589 rand(static_cast<unsigned int>(a.ints()[i]-y[i].min()));
590 assert((v < a.ints()[i]) && (v >= y[i].min()));
591 rel(i, Gecode::IRT_GR, v);
592 c.rel(i, Gecode::IRT_GR, v);
593 }
594 break;
595 default:
596 int v;
597 Gecode::Int::ViewRanges<Gecode::Int::IntView> it(y[i]);

Callers 1

runMethod · 0.45

Calls 15

interFunction · 0.85
cardinalityMethod · 0.80
relFunction · 0.50
sameFunction · 0.50
sizeFunction · 0.50
cardinalityFunction · 0.50
disableMethod · 0.45
sizeMethod · 0.45
assignedMethod · 0.45
maxMethod · 0.45
relMethod · 0.45
minMethod · 0.45

Tested by

no test coverage detected