Hi
a model with only one time window could be
using CP;
range rTrucks = 1 .. 10;
range rVisits = 1 .. 100;
tuple TW{ int v; int s; int e; }
TW tw[v in rVisits] = <v, v, 2 * v> ;
dvar interval visit[t in rTrucks, v in rVisits] optional in tw[v].s .. tw[v].e size 1;
constraints{
forall(t in rTrucks)
noOverlap( all(v in rVisits) visit[t, v]);
}
then you can extend it to multiple time windows for each visit
using CP;
range rTrucks = 1 .. 10;
range rVisits = 1 .. 100;
tuple TW{ int v; int s; int e; }
{TW} tws with v in rVisits = ...;//read all possible time windows
dvar interval visit[t in rTrucks, v in rVisits] optional size 1;
dvar interval twVisit[t in rTrucks, tw in tws] optional in tw.s .. tw.e size 1 ;
constraints{
forall(t in rTrucks)
noOverlap( all(v in rVisits) visit[t, v]);
forall(t in rTrucks, v in rVisits)
alternative(visit[t,v], all( <v,s,e> in tws) twVisit[t, <v,s,e>]);
}
------------------------------
David Gravot
------------------------------
Original Message:
Sent: Tue February 01, 2022 09:58 AM
From: Nourredine Hail
Subject: VRP with multiple time windows in CP
Hi everyone,
I am looking for a prototype of the VRP with multiple time windows in CP. For instance a store receives deliveries on Mondays from 12:00 am- 5:00 am or 9:00 pm-11:59 pm.
I have already a prototype for a VRP in CP with one time-window, but I don't know how to change it to handle a double time-window, because I am a neophyte in CP.
Thanks.
------------------------------
Nourredine Hail
------------------------------
#DecisionOptimization