Hi
using CP;
range sequences = 1..2;
range intervals = 1..10;
int charac[intervals]=[0 ,1 ,0, 0 ,0 ,0 ,0 ,0, 0, 1];
dvar interval intv[i in intervals][a in sequences] optional size 1;
dvar sequence s[a in sequences] in all(i in intervals) intv[i][a];
cumulFunction f[a in sequences]=sum(i in intervals) pulse(intv[i][a],1);
dvar int v[i in intervals][a in sequences];
subject to
{
forall(a in sequences,i in intervals) v[i][a]==5*presenceOf(intv[i][a]) +1000*(1-presenceOf(intv[i][a]));
forall(a in sequences)
forall(i in intervals: charac[i] == 1)
(f[a] <= v[i][a]);
}
works fine
regards
------------------------------
[Alex] [Fleischer]
[EMEA CPLEX Optimization Technical Sales]
[IBM]
------------------------------
Original Message:
Sent: Mon January 04, 2021 07:31 AM
From: Tomas
Subject: Sequence of an interval?
Hi Alex,
Thanks for your reply. I tried your code and I saw that, if intervals are optional, unlimited expression error is obtained.
dvar interval intv[i in intervals][a in sequences] optional size 1;
As the intervals are distributed among the sequences (through an alternative constraint, similar to the sched_tcost example), intervals need to be optional. Actually I don't really know why, but this example doesn't work if intervals aren't optional.
------------------------------
Tomas
------------------------------
Original Message:
Sent: Thu December 31, 2020 03:55 AM
From: ALEX FLEISCHER
Subject: Sequence of an interval?
Hi
using CP;range sequences = 1..2;range intervals = 1..10;int charac[intervals]=[0 ,1 ,0, 0 ,0 ,0 ,0 ,0, 0, 1];dvar interval intv[i in intervals][a in sequences] size 1;dvar sequence s[a in sequences] in all(i in intervals) intv[i][a];cumulFunction f[a in sequences]=sum(i in intervals) pulse(intv[i][a],1);subject to{forall (a in sequences)forall(i in intervals: charac[i] == 1) (f[a] <= 5*(presenceOf(intv[i][a]) == 1)+1000*(presenceOf(intv[i][a]) == 0));}
works fine
regards
------------------------------
[Alex] [Fleischer]
[EMEA CPLEX Optimization Technical Sales]
[IBM]