$title Cargo network scheduling with stochastic transportation demand (CARGONET,SEQ=90)
$onText
Mulvey and Ruszczynski provide a two stage network problem for
scheduling cargo transportation. The flight schedule is completely determined
in stage one, and the amounts of cargo to be shipped are uncertain.
The recourse actions are to determine which cargo to place on which flights.
Transshipment, getting cargo from node m to node n by more than one
flight on more than one route, is allowed.
In the following example we use a four node network, with node airports
A, B, C and E. All flights have two legs. That is, including the airport of
origin, there are three airports in each flight. No direct legs are allowed
between A and E, but all other possibilities are allowed.
J. M. Mulvey and A. Ruszczynski. A new scenario decomposition
method for large-scale stochastic optimization. Operations Research,
43(3),477-490, May-June 1995.
Ariyawansa, K A, and Felt, A J, On a New Collection of Stochastic
Linear Programming Test Problems, INFORMS Journal on Computing 16(3),
291-299, 2004.
$offText
Sets
n nodes / A, B, C, E /
r routes / r1*r26 /
i position / i1*i3 /
a aircrafts / type0*type1 /;
Alias (n,n0,n1,n2,n3,k), (i,j);
Set DataRoutes(n,n,n) /
A.B.A, A.B.E, A.B.C, A.C.A, A.C.E, A.C.B
B.A.B, B.A.C, B.C.A, B.C.B, B.C.E, B.E.B, B.E.C
C.A.C, C.A.B, C.B.C, C.B.A, C.B.E, C.E.C, C.E.B
E.C.E, E.C.B, E.C.A, E.B.E, E.B.C, E.B.A /
Sets
route(r,i,n) yes if node n is on position i on route r
vFirst(n,r) routes with initial node n
vLast(n,r) routes with last node n
vLand(n,r) routes with landing airport n
W(n,r) routes containing node n
U(n1,n2,r) routes containing n1 followed by n2
Udom(n1,n2) yes if n1 is followed by n2 on any arbitrary route
OD(n1,n2) origin-destination pairs of nodes with transportation demand;
scalar nr /1/;
loop(DataRoutes(n1,n2,n3),
loop(r$(ord(r)=nr), route(r,'i1',n1) = yes; route(r,'i2',n2) = yes; route(r,'i3',n3) = yes);
nr = nr+1;
);
vFirst(n,r) = route(r,'i1',n);
vLast(n,r) = route(r,'i3',n);
vLand(n,r) = (route(r,'i2',n) or route(r,'i3',n));
option Word(i)), U(n1,n2,r)$(route(r,i,n1) and route(r,j,n2)) = yes)
)
);
option Udom