Material Requirements Planning    Model: MRP

Material Requirements Planning, or MRP, is used to generate production schedules for the manufacture of complex products. MRP takes the demand schedule for a finished product and the lead times to produce the finished product and all the various subcomponents that go into the finished product, then works backwards to come up with a detailed, just-in-time production schedule that meets the demand schedule. A detailed discussion of this model may be found in Developing More Advanced Models.

MODEL:

! Data for this model is read from MRP.LDT;

SETS:

! The set of parts;

PART: LT;

! LT(i) = Lead time to produce part i;

 

! The set of time periods;

TIME;

 

! A relationship called USES between pairs of parts;

USES( PART, PART): NEEDS;

! Parent part i needs NEEDS(i, j) units of

  child part j;

 

! For each part and time period we're interested in;

PXT( PART, TIME): ED, TD;

! ED(i, j) = External demand for part i at time j;

! TD(i, j) = Total demand for part i at time j;

ENDSETS

 

DATA:

 

! Load the data from an external file;

 

! Parts list;

PART = @FILE( 'MRP.LDT');

 

! Time periods;

TIME = @FILE( 'MRP.LDT');

 

! Get the parent child relations and the

  number of parts required;

USES, NEEDS = @FILE( 'MRP.LDT');

 

! Get the lead times from the file;

LT  = @FILE( 'MRP.LDT');

 

! Get the external demands

 over time for each part;

ED  = @FILE( 'MRP.LDT');

 

ENDDATA

 

! Set NP = no. of time periods in the problem;

NP = @SIZE( TIME);

 

! For each part P and period T, the total demand =

 external demand + demand generated by parents

 one lead time in the future;

@FOR( PXT( P, T) | T + LT( P) #LE# NP :

 TD( P, T) = ED( P, T + LT( P)) +

  @SUM( USES( P2, P): TD( P2, T + LT( P)) *

   NEEDS( P2, P));

);

 

DATA:

 

! Display a table showing the production schedule;

@TEXT() = ' The production schedule:';

@TEXT() = @TABLE( TD);

 

ENDDATA

END

Model: MRP