48 namespace Test {
namespace Int {
74 using namespace Gecode;
75 for (
int i = 0;
i < n;
i += 4) {
76 rel(*
this,
x[
i+0] >= 0);
77 rel(*
this,
x[
i+1] >= 0);
78 rel(*
this,
x[
i+2] >= 0);
89 return new Ass(share,*
this);
107 nxt = cur = e->next();
119 if (cur != NULL) nxt = e->next();
123 assert((i>=0) && (i<n) && (cur != NULL));
124 return cur->x[
i].val();
128 delete cur;
delete nxt;
delete e;
138 Event(
int pos,
int height,
bool s) :
p(pos), h(height), start(s) {}
170 bool valid(std::vector<Event> e, C comp) {
176 while (i < e.size()) {
178 while (i < e.size() && e[
i].p ==
p) {
180 n += (e[
i].start ? +1 : -1);
198 :
Test(
"Cumulatives::"+s,nt*4,-1,2), ntasks(nt), at_most(am), limit(l) {
203 assert(arity == 4*ntasks);
208 std::vector<Event> e;
209 for (
int i = 0;
i < ntasks; ++
i) {
212 if (x[p+0] < 0 || x[p+1] < 1 || x[p+2] < 1)
return false;
214 if (x[p+0] + x[p+1] != x[p+2]) {
218 for (
int i = 0;
i < ntasks; ++
i) {
221 e.push_back(
Event(x[p+0], +x[p+3],
true));
222 e.push_back(
Event(x[p+2], -x[p+3],
false));
232 using namespace Gecode;
234 IntVarArgs s(ntasks),
d(ntasks), e(ntasks), h(ntasks);
235 for (
int i = 0;
i < ntasks; ++
i) {
247 Cumulatives
c1t1(
"1t1", 1,
true, 1);
248 Cumulatives
c1f1(
"1f1", 1,
false, 1);
249 Cumulatives
c1t2(
"1t2", 1,
true, 2);
250 Cumulatives
c1f2(
"1f2", 1,
false, 2);
251 Cumulatives
c1t3(
"1t3", 1,
true, 3);
252 Cumulatives
c1f3(
"1f3", 1,
false, 3);
253 Cumulatives
c2t1(
"2t1", 2,
true, 1);
254 Cumulatives
c2f1(
"2f1", 2,
false, 1);
255 Cumulatives
c2t2(
"2t2", 2,
true, 2);
256 Cumulatives
c2f2(
"2f2", 2,
false, 2);
257 Cumulatives
c2t3(
"2t3", 2,
true, 3);
258 Cumulatives
c2f3(
"2f3", 2,
false, 3);
259 Cumulatives
c3t1(
"3t1", 3,
true, 1);
260 Cumulatives
c3f1(
"3f1", 3,
false, 1);
261 Cumulatives
c3t2(
"3t2", 3,
true, 2);
262 Cumulatives
c3f2(
"3f2", 3,
false, 2);
263 Cumulatives
c3t3(
"3t3", 3,
true, 3);
264 Cumulatives
c3f3(
"3f3", 3,
false, 3);
265 Cumulatives
c3t_1(
"3t-1", 3,
true, -1);
266 Cumulatives
c3f_1(
"3f-1", 3,
false, -1);
267 Cumulatives
c3t_2(
"3t-2", 3,
true, -2);
268 Cumulatives
c3f_2(
"3f-2", 3,
false, -2);
269 Cumulatives
c3t_3(
"3t-3", 3,
true, -3);
270 Cumulatives
c3f_3(
"3f-3", 3,
false, -3);