| Quintiq file version 2.0 | 
| #parent: #root | 
| Method GenerateBenchmark ( | 
|   String namegroup, | 
|   Number endproductstoadd, | 
|   Number intermediatetoadd, | 
|   Number periodstoadd, | 
|   Boolean addtriplotsize, | 
|   Real usertriplotsize, | 
|   Boolean addptolotsize, | 
|   Real userptolotsize, | 
|   Boolean addptominqty, | 
|   Real userptominqty, | 
|   Boolean addinputlotsize, | 
|   Real userinputlotsize, | 
|   Boolean setlotcost, | 
|   Boolean setinventorybalancing, | 
|   Boolean addcapacitysmoothing, | 
|   Real smoothingdelta, | 
|   Boolean addpostponentspec, | 
|   Number postponementnrperiods | 
| ) | 
| { | 
|   TextBody: | 
|   [* | 
|     /* example usage call via macroplan test method  | 
|      | 
|     namegroup := 'MyProduct';  | 
|     endproductstoadd := 1; // create this many x 3 (body, tab, end) | 
|     intermediatetoadd := 1; // split intermediate products into this many  | 
|     periodstoadd := 1;  | 
|      | 
|     addtriplotsize := true;  | 
|     usertriplotsize := 100.0;  | 
|      | 
|     addptolotsize := true;  | 
|     userptolotsize := 1000.0;  | 
|      | 
|     addptominqty := true;  | 
|     userptominqty := 5000.0;  | 
|      | 
|     addinputlotsize := true;  | 
|     userinputlotsize := 1000.0;  | 
|      | 
|     setlotcost := true;  | 
|      | 
|     setinventorymixbalancing := true;  | 
|      | 
|     addcapsmoothing := true;  | 
|     smoothingdelta := 2.0; // 2% smoothing  | 
|      | 
|     addpostponement := true;  | 
|     postponementnrperiods := 6; // parameter used for both horizon and max postponement | 
|      | 
|     this.GenerateBenchmark( namegroup,  | 
|                             endproductstoadd,  | 
|                             intermediatetoadd,  | 
|                             periodstoadd,  | 
|                             addtriplotsize,  | 
|                             usertriplotsize,  | 
|                             addptolotsize,  | 
|                             userptolotsize,  | 
|                             addptominqty,  | 
|                             userptominqty,  | 
|                             addinputlotsize,  | 
|                             userinputlotsize,  | 
|                             setlotcost,  | 
|                             setinventorymixbalancing,  | 
|                             addcapsmoothing,  | 
|                             smoothingdelta,  | 
|                             addpostponement,  | 
|                             postponementnrperiods ); | 
|     */ | 
|      | 
|     // >>>>>>>>>>>>>>>>>>>>>>>>> script | 
|      | 
|     this.GenerateBenchmarkAddEndProducts( endproductstoadd, namegroup ); | 
|     group := select(  this, Product_MP, p, p.ID() = namegroup );  | 
|      | 
|     addedbodys := selectset(  group, AllChildren.AsChildren, p, true, p.Name() ~ 'Body' );  | 
|     addedtabs := selectset(  group, AllChildren.AsChildren, p, true, p.Name() ~ 'Tab' );  | 
|     addedends := selectset(  group, AllChildren.AsChildren, p, true, p.Name() ~ 'End' );  | 
|      | 
|     addedall := addedbodys.Union( addedtabs ).Union( addedends );  | 
|      | 
|     Transaction::Transaction().Propagate();  | 
|      | 
|     // Create intermediate product going down to ingot  | 
|     intermediate_1 := this.GenerateBenchmarkAddIntermediateProducts( intermediatetoadd, addedall );  | 
|      | 
|     traverse( intermediate_1, Elements, p ) { debuginfo(  'created', p.ID() ) };  | 
|      | 
|     intermediate_2 := this.GenerateBenchmarkAddIntermediateProducts( intermediatetoadd, intermediate_1 );  | 
|     traverse( intermediate_2, Elements, p ) { debuginfo(  'created', p.ID() ) };  | 
|      | 
|     intermediate_3 := this.GenerateBenchmarkAddIntermediateProducts( intermediatetoadd, intermediate_2 );  | 
|     traverse( intermediate_3, Elements, p ) { debuginfo(  'created', p.ID() ) };  | 
|      | 
|     Transaction::Transaction().Propagate();  | 
|      | 
|     debuginfo(  'Adding periods' );  | 
|     this.GenerateBenchmarkAddPeriods( periodstoadd ); | 
|      | 
|     if ( addtriplotsize )  | 
|     { | 
|       this.GenerateBenchmarkAddTripLotsize( usertriplotsize );  | 
|     } | 
|      | 
|     if ( addptolotsize )  | 
|     { | 
|       this.GenerateBenchmarkAddPTOLotsize( userptolotsize, setlotcost );  | 
|     } | 
|      | 
|     if ( addptominqty )  | 
|     { | 
|       this.GenerateBenchmarkAddPTOProcMinQty( userptominqty );  | 
|     } | 
|      | 
|     if ( addinputlotsize )  | 
|     { | 
|       this.GenerateBenchmarkAddInputLotSize( userinputlotsize );  | 
|     } | 
|      | 
|     if ( setinventorybalancing )  | 
|     { | 
|       this.GenerateBenchmarkAddInventoryMixBalancing();  | 
|     } | 
|      | 
|     if ( addcapacitysmoothing )  | 
|     { | 
|       this.GenerateBenchmarkAddCapacitySmoothing( smoothingdelta );  | 
|     } | 
|      | 
|     if ( addpostponentspec )  | 
|     { | 
|       this.GenerateBenchmarkAddPostponementSpecification( postponementnrperiods );  | 
|     } | 
|      | 
|     // <<<<<<<<<<<<<<<<<<<<<<<<<<<< end script | 
|   *] | 
|   InterfaceProperties { Accessibility: 'Module' } | 
| } |