NODES format
If the problem dimensions may depend on past events, then a pathwise description of the problem becomes cumbersome.
SMPS allows a node by node construction of the event tree, as shown in this
example. A multi-period production and inventory problem is set up, where the
number of products depends on previous events. For instance, if the demand for
a particular product exceeds a threshold, then a complementary product may be
introduced; conversely, if the demand is low, a product may be discontinued. A
problem of this type was introduced in Gassmann and Schweitzer[1].
The
algebraic formulation is as follows:

where Ht1 is the history
vector, i.e., Ht1=(s0,
,st1),
St(Ht1) is the
set of branches in the event tree contingent on observing the history Ht1,
pt(Ht1,st)
is the probability of observing event sequence (Ht1,st),
It(Ht1,st) is the set of products
produced during period t under the
event sequence (Ht1,st),
Jt(Ht1,st) is the set of resources
needed for the scheduled production during period t under the event sequence (Ht1,st),
hit is the cost of dealing with one unsold unit of product i during period t, either holding it in inventory or
disposing of it if production ceases.
rit(Ht1,st) is the revenue of selling
one unit of product i
during period t under the event
sequence (Ht1,st),
cit(Ht1,st) is the cost of producing one
unit of product i
during period t under the event
sequence (Ht1,st),
git(Ht1,st) is the cost of being
short one unit of product i during period t
under the event sequence (Ht1,st),
dit(Ht1,st) is the observed demand
for product i
under the event sequence (Ht1,st),
vi is the storage capacity required to store one unit of product i,
C is the total available storage capacity,
aij is the amount of resource j required to produce one unit of
product i,
Mjt(Ht1,st) is the amount of resource
j available in period t under the event sequence (Ht1,st),
pit(Ht1,st) is the amount of product i produced in
period t under the event sequence (Ht1,st),
xit(Ht1,st) is the amount of product i left unsold in
period t under the event sequence (Ht1,st),
yit(Ht1,st) is the amount of
discontinued product i
remaining in period t under the event
sequence (Ht1,st),
zit(Ht1,st) is the amount of product i sold in period t under the event sequence (Ht1,st),
dit(Ht1,st)
= 0 if product i
was newly introduced in period t1
under the event sequence (Ht1,st),
= 1 if product i was also produced in the
previous period.
MPL file
Reference
[1] H.I. Gassmann and E. Schweitzer, A comprehensive input format
for stochastic linear programs, Annals
of Operations Research 104
(2001) 89125.