Lindo Systems

MODEL:
! Model of a queue with arrivals in batches.  In 
  this particular example, arrivals may show up in
  batches of 1, 2, 3, or 4 units;

SETS:
! Look at enough states so that P( i) for large i
  is effectively zero, where P( i) is the steady 
  state probability of i customers in the system;
   STATE/ 1..41/: P;

! Potential batch sizes are 1, 2, 3 or 4 customers,
  and A( i) = the probability that an arriving batch
  contains i customers;
   BSIZE/ 1..4/: A;
ENDSETS

DATA:
   ! Batch size distribution;
   A = .1, .2, .3, .4;
   ! Number of batches arriving per day;
   LMDA = 1.5;
   ! Number of servers;
   S    = 7;
   ! Number of customers a server can
     process per day;
   MU   = 2;
ENDDATA

! LAST = number of STATES;
   LAST = @SIZE( STATE);

! Balance equations for states where the number of
  customers in the system is less than or equal to
  the number of servers;
   @FOR( STATE( N)| N #LE# S:
    P( N) * (( N - 1)* MU + LMDA) =
     P( N + 1) * MU * N +
      LMDA * @SUM( BSIZE( I)| I #LT# N: A( I)
       * P( N - I))
   );

! Balance equations for states where number in
  system is greater than the number of servers, but
  less than the limit;
   @FOR( STATE( N)| N #GT# S #AND# N #LT# LAST:
    P( N) * ( S * MU + LMDA) =
     P( N + 1) * MU * S +
      LMDA * @SUM( BSIZE( I)| I #LT# N: A( I) * 
       P( N - I))
   );

! Probabilities must sum to 1;
   @SUM( STATE: P) = 1;

END