| Quintiq file version 2.0 | 
| #parent: #root | 
| Method AddUnitPeriodsForTripHelper ( | 
|   UnitPeriod unitperiod, | 
|   Trip trip | 
| ) | 
| { | 
|   Description: 'add unit periods to sub puzzle neighborhood based on trip' | 
|   TextBody: | 
|   [* | 
|     // Add the related unit periods to unitperiodsforoptimization (only do this if at least one of the trips is valid) | 
|     unitperiod.LibOpt_ScopeAddHelper( relset, this );  | 
|                | 
|     // If the trip is from a TransportQuantity Unit, then add the departure period as well, to constrain the transport capacity | 
|     if( trip.LaneLeg().Lane().Unit().HasCapacityTypeTransportQuantity() ) | 
|     { | 
|       departureunitperiod := trip.DepartureUnitPeriod(); | 
|        | 
|       departureunitperiod.LibOpt_ScopeAddHelper( relset, this );   | 
|     } | 
|     else if( trip.LaneLeg().Lane().Unit().HasCapacityTypeTransportTime() ) | 
|     { | 
|       arrivalunitperiod := trip.ArrivalUnitPeriod();   | 
|       departureunitperiod := trip.DepartureUnitPeriod(); | 
|       current := departureunitperiod;  | 
|       arrivalstart := guard( arrivalunitperiod.Start(), DateTime::MaxDateTime() );  | 
|       while( not isnull( current ) and current.Start() <= arrivalstart )  | 
|       { | 
|         current.LibOpt_ScopeAddHelper( relset, this );  | 
|         current := current.Next().astype( UnitPeriodTransportBase );   | 
|       } | 
|     } | 
|   *] | 
|   InterfaceProperties { Accessibility: 'Module' } | 
| } |