Quintiq file version 2.0
|
#parent: #root
|
MethodOverride CreateComponents (
|
LibOpt_Run run
|
)
|
{
|
TextBody:
|
[*
|
// create needed components. The design consists of 2 sub optimizers fed by two transformers (down stream then upstream, whic is done by having an iterator of 2 iterations and a
|
// round robin switch). This is the complete middle out smart plan. In case we just do upstream or downstream smartplan we set the start component to be the corresponding transformer.
|
|
prepostcomp := run.Component( relnew, OptimizerPrePostProcessing, Name := 'PrePostProcessing_SmartPlan' );
|
|
//iterator := this.Iterator( run, 'IteratorTwoTimes' ); // default start component
|
//iterator.SetMaxIterations( 2 );
|
//roundrobin := this.SwitchRoundRobin( run, 'RoundRobinDownstreamUpstream' );
|
runcontext := RunContextForCapacityPlanning::GetRunContextCapacityPlanning( run );
|
transformerdownstream := TransformerSmartPlanDownStream::Create( run,
|
'TransformerDownStream',
|
Number::MaxNumber(),
|
runcontext.NumberOfPeriodsSmartPlan() );
|
transformerupstream := TransformerSmartPlanUpStream::Create( run,
|
'TransformerUpStream',
|
Number::MaxNumber(),
|
runcontext.NumberOfPeriodsSmartPlan() );
|
suboptimizerup := CapacityPlanningSuboptimizer::Create( 5, // focuslevel
|
false, // ispriorlevelsfixed
|
false, // isupdatescaling
|
false, // runpastfocuslevel
|
run,
|
'CapacityPlanningSubOptimizerForSmartPlanUpStream', // name
|
false, // user supply correction for carried fwd inventory
|
false, // keep total available supply
|
true, // use periodtaskoperation in definition
|
true, // only plan demand smart plan pispips
|
false, // no extra level to minimize ptqty
|
false, // not applicable
|
0.0, // not applicable
|
true, // apply noise threshold
|
false, // hierarhical cplex goals
|
runcontext.SmallestIntegralityTolerance(),
|
runcontext.SmallestFeasibilityTolerance(),
|
false, // full plan for meta
|
false, // collapse level
|
0.0 ); // collapse level weight
|
|
RollbackKPIMeta::Create( suboptimizerup,
|
RunContextForCapacityPlanning::GetRunContextCapacityPlanning( run ),
|
0, // unused
|
0.0, // unused
|
0.0, // unused
|
runcontext.SmallestFeasibilityTolerance(), // blending KPI precision
|
true, // unused
|
runcontext.MaxLevel(),
|
true ); // always accept - just want to see scores in snapshots
|
|
|
suboptimizerdown := CapacityPlanningSuboptimizer::Create( 5, // focuslevel
|
false, // ispriorlevelsfixed
|
false, // isupdatescaling
|
false, // runpastfocuslevel
|
run,
|
OptimizerSmartPlan::DownStreamSubOptimizerName(), // name
|
true, // user supply correction for carried fwd inventory
|
true, // keep total available supply
|
true, // use periodtaskoperation in definition
|
false, // only plan demand smart plan pispips
|
false, // no extra level to minimize ptqty
|
false, // not applicable
|
0.0, // not applicable
|
true, // apply noise threshold
|
false, // hierarhical cplex goals
|
runcontext.SmallestIntegralityTolerance(),
|
runcontext.SmallestFeasibilityTolerance(),
|
false, // full plan for meta
|
false, // collapse level
|
0.0 ); /// collapse level weight
|
|
|
RollbackKPIMeta::Create( suboptimizerdown,
|
RunContextForCapacityPlanning::GetRunContextCapacityPlanning( run ),
|
0, // unused
|
0.0, // unused
|
0.0, // unused
|
runcontext.SmallestFeasibilityTolerance(), // blending KPI precision
|
true, // unused
|
runcontext.MaxLevel(),
|
true ); // always accept - just want to see scores in snapshots
|
|
|
// create the tree by linking created components - default is to create middle out smart plan diagram (which we modify in execute for upstream/downstream smartplan)
|
//prepostcomp.To( iterator );
|
//iterator.To( roundrobin );
|
prepostcomp.To( transformerdownstream );
|
//roundrobin.Branch( transformerdownstream );
|
//roundrobin.Branch( transformerupstream );
|
transformerdownstream.To( suboptimizerdown );
|
suboptimizerdown.To( transformerupstream );
|
transformerupstream.To( suboptimizerup );
|
*]
|
}
|