Quintiq file version 2.0
|
#parent: #root
|
Method FixDecisionVariables_Debug (
|
CapacityPlanningSuboptimizer_CapacityPlanningAlgorithm program,
|
RunContextForCapacityPlanning runcontext,
|
LibOpt_Scope scope
|
)
|
{
|
TextBody:
|
[*
|
subopt := this;
|
nrfixed := 0;
|
traverse( scope.GetOperationInOptimizerRunConst(), Elements, operation )
|
{
|
periods := subopt.GetPeriodsForOperation( scope, operation );
|
traverse( periods, Elements, period )
|
{
|
var := program.PTQtyVariables().Get( operation, period );
|
pt := select( operation, PeriodTaskOperation, po, true, po.UnitPeriod().Period_MP() = period );
|
valuetofix := guard( pt.Quantity(), 0.0 );
|
subopt.FixVariableStyleGuide( var, valuetofix );
|
nrfixed++;
|
}
|
}
|
|
/* >>
|
userperiodtasks := selectset( runcontext, UserPeriodTask, pto, true, true );
|
this.FixUserPeriodTask( userperiodtasks, program ); // don't alter the user period task operations
|
*/
|
|
// fixing trips
|
nrfixed := 0;
|
traverse( scope.GetProductInTripInOptimizerRun(), Elements, productintrip )
|
{
|
var := program.TripNewSupplyVariables().Get( productintrip );
|
subopt.FixVariableStyleGuide( var, productintrip.Quantity() );
|
nrfixed++;
|
}
|
|
/*
|
// Freeze variables for SalesDemands
|
nrfixed := 0;
|
nrunfixed := 0;
|
traverse( scope.GetLeafSalesDemandInPeriodInRun(), Elements, lsdip, scope.Contains( lsdip.ProductInStockingPoint_MP().PISPInOptimizerRun() ) )
|
{
|
var := program.SalesDemandQtyVariables().Get( lsdip ); // Fulfilled quantity
|
if ( mustfixduetocurrentlevel )
|
{
|
subopt.FixVariableStyleGuide( var, lsdip.FulfilledQuantity() );
|
nrfixed++;
|
}
|
else
|
{
|
var.LowerBound( lsdip.SalesDemandQtyVarInitLowerBound() );
|
var.UpperBound( lsdip.SalesDemandQtyVarInitUpperBound() );
|
nrunfixed++;
|
}
|
}
|
|
traverse( scope.GetAggregatedSalesDemandInPeriodInRun(), Elements, asdip )
|
{
|
traverse ( asdip, DisaggregatedSalesDemandInPeriod, dasdip,
|
scope.Contains( dasdip.AsPlanningBaseSalesDemandInPeriod().PISPIPInOptimizerRun() ) )
|
{
|
var := program.DisaggregatedSalesDemandQtyVariables().Get( dasdip );
|
if ( mustfixduetocurrentlevel )
|
{
|
subopt.FixVariableStyleGuide( var, dasdip.FulfilledQuantity() );
|
nrfixed++;
|
}
|
else
|
{
|
var.LowerBound( dasdip.SalesDemandQtyVarInitLowerBound() );
|
var.UpperBound( dasdip.SalesDemandQtyVarInitUpperBound() );
|
nrunfixed++;
|
}
|
}
|
}
|
msg := msg + 'sales demands fixed, unfixed= ' + [String]nrfixed + ','+ [String] nrunfixed;
|
debuginfo( msg );
|
*]
|
InterfaceProperties { Accessibility: 'Module' }
|
}
|