Quintiq file version 2.0
|
#parent: #root
|
Method CreateTrips (
|
LaneLegs lanelegsforoptimizations,
|
Period_MPs periods,
|
output Trips updatedtrips_o
|
)
|
{
|
Description: 'Pre-create trips to be fed as input for CPLEX'
|
IsAbstract: true
|
TextBody:
|
[*
|
// soh yee May-24-2015 (created)
|
validatestring := '';
|
sanitycheckfeedback := '';
|
|
//startofhorizon := this.MacroPlan().StartOfHistorical();
|
earliesttripdeparture := minselect( periods, Elements, period, true, period.SequenceNr() ).Start();
|
|
// For each lane leg, create all possible trips that does not fall outside selected planning horizon.
|
traverse( lanelegsforoptimizations, Elements, laneleg )
|
{
|
startoftrip := laneleg.LeadTime() + earliesttripdeparture; // Used to identify if the departure date of trip falls outside selected planning horizon
|
|
// Only create trips if the departure date and arrival date is within the selected planning horizon.
|
traverse( periods, Elements, period, period.End() >= startoftrip )
|
{
|
trip := select( laneleg, Trip, trip, guard( trip.ArrivalUnitPeriod().Period_MP() = period, false ) );
|
|
if( isnull( trip )
|
and Trip::ValidateInput( validatestring, sanitycheckfeedback, laneleg, period ) ) // Only create valid trip
|
{
|
trip := Trip::Create( laneleg, period );
|
}
|
|
if( not isnull( trip ) )
|
{
|
// Create product in trips for each existing trip.
|
traverse( laneleg, LaneLegInput.ProductInStockingPoint_MP.Product_MP, product )
|
{
|
trip.AddProduct( product, 0.0, false );
|
}
|
updatedtrips_o.Add( trip );
|
}
|
}
|
}
|
*]
|
InterfaceProperties { Accessibility: 'Module' }
|
}
|