[gecode-users] BAB and pruning

aqwzsxaqwzsx at orange.fr aqwzsxaqwzsx at orange.fr
Tue Mar 20 17:19:51 CET 2018


Hi,
 
I have a general question on BAB engine in Gecode.
Suppose I have to affect 4 jobs to 4 persons and i want to minimize
the cost of this affectation (using a MinimizeScript) :
 
cost_matrix :
    J1  J2  J3  J4
--|----------------  
A | 9,  2,  7,  8
B | 6,  4,  3,  7
C | 5,  8,  1,  8
D | 7,  6,  9,  4
 
 
Suppose also that I post these constraints :
(e.g., exactly one person to exactly one job)
 
x(*this, cols*rows, 0, 1)  // array of assignments (as rows x cols)
 
for(int r = 0; r < rows; r++)         
  { linear(*this, x_m.row(r), IRT_EQ, 1); }
 
for(int c = 0; c < cols; c++)           
  { linear(*this, x_m.col(c), IRT_EQ, 1); }
 
linear(*this, cost, x, IRT_EQ, total_cost);
branch(*this, x, INT_VAR_NONE(), INT_VAL_MAX());
               
with x an array of assignments (and x_m its matrix representation)
 
Now, let's make some reasoning :
 
- if I affect J1 to person A, the minimum cost that we can expect is 17
  (9 + 3 + 1 + 4) = 9 + (J3/B) + (J3/C) + (J4/D)
- if I affect J2 to person A, the minimum cost that we can expect is 10
  (2 + 3 + 1 + 4) = 2 + (J3/B) + (J3/C) + (J4/D)
- if I affect J3 to person A, the minimum cost that we can expect is 20
  (7 + 4 + 5 + 4) = 7 + (J2/B) + (J1/C) + (J4/D)
- if I affect J4 to person A, the minimum cost that we can expect is 18
  (8 + 3 + 1 + 6) = 8 + (J3/B) + (J3/C) + (J2/D)
 
However, i see under Gist that for instance, the total cost when exploring
the J1/A alternative is [9..59](lower bound could be 17)
Is it normal that B&B cannot estimate more precisely the lower bound ?
Can we expect that the pruning will be more efficient ?
 
Thank you.  



More information about the users mailing list