using CP;
dvar interval input size 2;
dvar interval output size 2;
stateFunction s;
subject to
{
alwaysEqual(s,input,1);
alwaysEqual(s,output,1);
startOf(input)==1;
startOf(output)==8;
}
execute
{
writeln(s);
}
gives
stepwise{ -1 -> 1; 1 -> 3; -1 -> 8; 1 -> 10; -1 }
But you can use a new interval which contains both intervals and then you do not get the -1 state in the middle
using CP;
dvar interval input size 2;
dvar interval output size 2;
dvar interval inputoutput;
stateFunction s;
subject to
{
alwaysEqual(s,inputoutput,1);
startAtStart(inputoutput,input);
endAtEnd(inputoutput,output);
startOf(input)==1;
startOf(output)==8;
}
execute
{
writeln(s);
}
which gives
stepwise{ -1 -> 1; 1 -> 10; -1 }
------------------------------
[Alex] [Fleischer]
[Data and AI Technical Sales]
[IBM]
------------------------------