jobt.gms : On-the-Job Training

Description

An optimal schedule for hiring, firing, producing and storing of a
commodity is desired for the completion of a large delivery contract.
This formulation is slightly different from the one in the book. The
period number 6 has been eliminated and the salary on firing has
been added to the 5th period (all workers are fired by the end of
period 5). The implicit relationship w("5") = f("6") holds.


Reference

  • Dantzig, G B, Chapter 3.7. In Linear Programming and Extensions. Princeton University Press, Princeton, New Jersey, 1963.

Small Model of Type : LP


Category : GAMS Model library


Main file : jobt.gms

$title On-the-Job Training  (JOBT,SEQ=5)

$onText
An optimal schedule for hiring, firing, producing and storing of a
commodity is desired for the completion of a large delivery contract.
This formulation is slightly different from the one in the book. The
period number 6 has been eliminated and the salary on firing has
been added to the 5th period (all workers are fired by the end of
period 5). The implicit relationship w("5") = f("6") holds.


Dantzig, G B, Chapter 3.7. In Linear Programming and Extensions.
Princeton University Press, Princeton, New Jersey, 1963.

Keywords: linear programming, scheduling
$offText

Set t 'time periods (weeks)' / 1*5 /;

Scalar
   rho   'worker productivity      (units per worker)'   / 8 /
   alpha 'trainer capability    (workers per trainer)'   / 6 /
   wage  'worker wages        ($ per week per worker)' / 100 /;

Parameter
   si(t) 'initial stock of goods      (units)'   / 1  10 /
   wi(t) 'initial number of workers (workers)'   / 1  20 /
   sf(t) 'salary on firing              ( $ )'   / 5 100 /
   d(t)  'demand schedule             (units)'   / 1 100, 2 200, 3 300,4 400, 5 200 /;

Positive Variable
   p(t) 'production level in period t         (units)'
   s(t) 'goods stored in period t             (units)'
   u(t) 'unmet demand in period t             (units)'
   w(t) 'total potential productive workers (workers)'
   h(t) 'workers hired                      (workers)'
   f(t) 'workers fired                      (workers)';

Free Variable phi 'total cost ($)';

Equation
   cb(t) 'commodity balance                      (units)'
   wb(t) 'worker balance - between periods     (workers)'
   wd(t) 'worker balance - job differentiation (workers)'
   obj   'objective function                         ($)';

cb(t).. s(t) =e= s(t-1) + p(t) - d(t) - u(t-1) + u(t) + si(t);

wb(t).. w(t) =e= w(t-1) - f(t) + h(t) + wi(t);

wd(t).. w(t) =g= p(t)/rho + (1 + 1/alpha)*h(t);

obj..   phi  =e= sum(t, 10*s(t) + 30*u(t) + (wage + sf(t))*w(t) );

Model jobs 'job training model' / all /;

solve jobs minimizing phi using lp;