Quintiq file version 2.0
|
#parent: #root
|
Method GetDurationInCampaignUnitSubPeriod (
|
CapacityPlanningSuboptimizer_CapacityPlanningAlgorithm program,
|
CapacityPlanningSuboptimizer subopt
|
) as Duration
|
{
|
TextBody:
|
[*
|
//First element, so first should be set
|
elduration := Duration::Zero();
|
ocet := this.OptCampaignElementType();
|
subperiod := this.OptCampaignUnitSubPeriod();
|
|
if( this.IsFirstElementInUnitSubPeriod() )
|
{
|
durationvar := program.DurationOfCampaignElementTypeStartVariables().Get( ocet, subperiod )
|
elduration := Duration::Hours( subopt.GetOptimalValue( durationvar ) );
|
}
|
|
if ( this.IsLastElementInUnitSubPeriod() )
|
{
|
durationvarend := program.DurationOfCampaignElementTypeEndVariables().Get( ocet, subperiod )
|
elduration := elduration + Duration::Hours( subopt.GetOptimalValue( durationvarend ) ); // add because for special case of both first and last of sub period we need 'start' + 'end'
|
}
|
|
if ( this.IsMiddleElementInUnitSubPeriod() )
|
{
|
durationvar := program.DurationOfCampaignElementTypeMidVariables().Get( ocet, subperiod )
|
elduration := Duration::Hours( subopt.GetOptimalValue( durationvar ) );
|
|
//Note the exception case in which we have multiple of the same elementtypes in the mid part of the combi
|
nrelevar := program.NrOfCampaignElementWithinUnitSubPeriodVariables().Get( ocet, subperiod )
|
nrOfSameElements := subopt.GetOptimalValue( nrelevar );
|
elduration := elduration / nrOfSameElements;
|
}
|
return elduration;
|
*]
|
InterfaceProperties { Accessibility: 'Module' }
|
}
|