Hi Tomas,
According to the documentation slice(i1,i2,j1,j2) extracts the elements with coordinates in [i1,i2) and [j1,j2). So, in your example, slice(i,i+1,i,i+1) extracts the elements with coordinates [i,i+1) and [i,i+1) which is the single element with coordinates i,i. That means you have to write slice(i,i+2,i,i+2). Cheers Christian -- Christian Schulte, Professor of Computer Science, KTH, www.ict.kth.se/~cschulte/ From: users-boun...@gecode.org [mailto:users-boun...@gecode.org] On Behalf Of Tomas Lidén Sent: Thursday, May 15, 2014 1:17 PM To: users@gecode.org Subject: [gecode-users] Sum over matrix slice Hi! While working on a course assignment I realized (after some struggling) that summing over a matrix slice does not perform as expected: === snippet == BoolVarArray x(home, n*n, 0, 1); Matrix<BoolVarArray> m(x, n, n); rel(home, sum(m.slice(i, i+1, i, i+1)) > 0); // forces m(i,i) > 0 !! BoolVarArgs s; s << m(i,i) << m(i+1,i) << m(i,i+1) << m(i+1,i+1); rel(home, sum(s) > 0); // forces the sum over the 4 variables > 0 (as I wanted) == end of snippet == The sum(m.slice(...)) only seems to sum the first element in the slice?! Quite surprising and unnatural to me. Am I doing something wrong here? (I get no compiler warnings or errors..) The following post discusses a similar subject concerning IntVar's.. http://www.gecode.org/pipermail/users/2013-August/004086.html All the best, Tomas
_______________________________________________ Gecode users mailing list users@gecode.org https://www.gecode.org/mailman/listinfo/gecode-users