ROCK Documentation : PLP Optimiser

Introduction

This section describes how the PLP optimiser (i.e. the PLP solver) is configured to translate the real-world problem of flowing of equipment, into a mathematically solvable problem.

The PLP optimiser is used to create OTTs that are needed to meet flow area target stock levels from REP. The optimiser suggests a plan that minimises operational costs, satisfies pool level target stock level as close as possible and adheres to operational constraints.

The flow of containers is driven by the forecasted imbalance. The plan is based on vessel schedules with empty capacity for each leg. Containers are also moved via inland. In addition, there can be operational restrictions in terms of move constraints, storage constraints and cabotage rules. The initial conditions are defined by initial stock levels and onboard OTTs.

Table of Contents

The Process

Optimisation runs are normally triggered from ROCK, where relevant scenario data is collected from ROCK DB and other sources. It is also possible to initiate a run from file where the user prepares the problem specifications in excel files. By uploading these into ROCK an optimisation process is initiated. The process can take up to one hour before the optimal plan is found.

The optimiser considers possible OTTs for different equipment types based on the vessel schedules and inland corridors, and as restricted by various restrictions such as capacity limits, move limits and cabotage rules. Operational costs for the suggested OTTs and other costs such as storage costs are considered in the minimisation. Incentive costs are used to penalise deviation from the stock level target at the pool and REP target for the flow areas.

Based on the possible OTT options, cost components, and deviation penalties, the optimiser finds a feasible plan with the least deviation from the target stock level while minimising operational costs.

Problem Specifications

Scenario Parameters

Scenario parameters are used to set the dates for the planning horizon, the REP compliance date, and values for some global entities.

ScenarioParameters

Example

Usage

StartDate

2018-08-12

Start of the planning period. This is the first possible load day of an OTT suggested by the optimiser

EndDate

2018-10-12

The date when REP targets are met

TailDate

2018-12-12

End of the planning period. This is the last possible discharge day of an OTT suggested by the optimiser

SlotCostOwn

1

Cost per TEU and day to take space on vessels with own operators

SlotCostPartner

0

Cost per TEU and day to take space on vessels with partner operators

SlotCostVariable

10

Cost per TEU and day to take space on vessels with variable operators

REPDeviationPenalty

50

Penalty per unit below REP target

TEURatio40foot

2

TEU ratio of 40’ containers

TEURatio45foot

2

TEU ratio of 45’ containers

CapacitySlackPenaltyRatio

0.2

Extra cost ratio for using the slack capacity on a corridor

TailPenaltyWeight

3

Parameter for emphasising target penalty in the tail period

ApplyUSJonesAct 

True 

US cabotage rule enabled 

StabilisationIncentive

10

$ incentive for suggesting units on an existing OTT

Target Stock Levels (TSL)

Target stock levels are used to set the required stock level for each pool and equipment type. The target is a weekly value and must be set for all months of the planning period for all pools and optimised equipment types. The optimiser tries to satisfy the targets as close as possible.

TargetStockLevels

Example

Description

DateWeek

2018-09-03

Date of the Monday of the target week

PoolCode

DKAAR

Pool

EquipmentTypeCode

20DRY*

Name of the equipment type group

MinUnits

100

Minimum value.The optimiser will try to avoid stock levels below minimum target.

MaxUnits

200

Maximum values. This value is ignored by the optimiser.

Target stock levels can optionally be set for sites. In case any site target is set, then it is required for all sites that are planned as terminals.

SiteTargetStockLevels

Example

Description

DateWeek

2018-09-03

Date of the Monday of the target week

SiteCode

DKAARPT

Site

EquipmentTypeCode

20DRY*

Name of the equipment type group

MinUnits

100

Minimum value.The optimiser will try to avoid stock levels below minimum target.

MaxUnits

200

Maximum values. This value is ignored by the optimiser.

Imbalance Forecast

Imbalances drive the flow of empty equipment. These are daily values for each equipment type and pool. Imbalances are given in terms of imports, exports, in-fleeting and out-fleeting. It is not necessary to provide imbalance data for all pools, equipment types or dates. The optimiser assumes zeros if no data is given for a combination of pool, equipment type, and date.

ImbalanceForecast

Example

Description

InventoryDate

2018-09-01

Date of the imbalance

PoolCode

DKAAR

Pool

EquipmentTypeCode

20DRY*

Name of the equipment type group

ExportUnits

100

The number of units forecasted to be exported.

ImportUnits

100

The number of units forecasted to be imported.

InfleetUnits

5

The number of units forecasted to be infleeted.

OutfleetUnits

10

The number of units forecasted to be outfleeted.


Imbalance forecast for sites. It can optionally be provided to be used for sites that are planned as terminals.

SiteImbalanceForecast

Example

Description

InventoryDate

2018-09-01

Date of the imbalance

SitelCode

DKAARPT

Site

EquipmentTypeCode

20DRY*

Name of the equipment type group

ExportUnits

100

The number of units forecasted to be exported.

ImportUnits

100

The number of units forecasted to be imported.

InfleetUnits

5

The number of units forecasted to be infleeted.

OutfleetUnits

10

The number of units forecasted to be outfleeted.

REP Stock Levels

These are stock targets at flow area level that must be met during the tail period. The optimiser will try to satisfy these targets as close as possible by using a penalty for being below target. The penalty per unit below target depends on the scenario parameter REPDeviationPenalty, the deviation percentage and on the TEU ratio. Compliance is checked during the tail weeks from EndDate and untiltheTailDate.

TargetStockLevelsREP

Example

Description

DateMonth

2018-09-01

Target month

FlowAreaCode

CAM

Flow are for which the target is valid

EquipmentTypeCode

20DRY*

Equipment type

Units

100000

Number of required units

Equipment Types

These are the equipment types that are planned. Each equipment type has a specific TEU ratio and weight. The TEU ratio is given from scenario parameters while the weight is given in the table ‘EquipmentTypes’. Each equipment type has a cost which is the cost per day of owning a unit of this type.

EquipmentTypes

Example

Description

EquipmentTypeCode

20DRY*

Name of the equipment type group

EquipmentTypeCost

0,62

Cost per day to have the equipment in the fleet

EquipmentWeight

2280

Weight in kilos

EquipmentCategoryCode

DRY

Category of the equipment type

IsOptimised 

True

Indicates if the optimiser should create or modify OTTs for this equipment type

Vessel Schedules

These are the calls that can be used for loading and discharging equipment. A call is specified by the site, arrival-date and departure-date. The vessel has a code, service and flag. The amount of empty containers that can be on board when leaving the call is specified in TEU and metric tons. A call may be marked as omitted. There may optionally be restrictions on the number of load or discharge moves, or on the sum of load or discharge moves.

(info) If two vessel calls on the same vessel overlap in time then a warning will be issued and one of them will be ignored.

VesselCalls

Example

Description

VesselCallId

 29

ID used to identify constraints related to this call

SiteCode

DEBRV06

Site of the call

ServiceCode

431

The service

VesselCode

1YM

The vessel

VesselOperatorCode

MSK

Code for operator

VesselFlagCountryCode

DK

Code for the vessel flag

ArrivalDate

2018-11-12

Date of arrival

DepartureDate

2018-11-14

Date of departure

Omit

False

True if call is omitted

EmptyTEUCapacity

5000

Empty capacity in TEU

EmptyMTCapacity

20000

Empty capacity in metric tons

AllocationTEU

15000

Total allocation for empty and full in TEU

AllocationMT

50000

Total allocation for empty and full in metric tons

IntakeTEU

20000

Total TEU intake of the vessel

IntakeMT

75000

Total metric ton intake of the vessel

IsLocked

False

True means the call is locked

VesselOwnership

Own

Vessel ownership. Can have the values ‘Own’, ‘Partner’ and ‘Variable’

IsCODLocked

True

If False then optimiser may do COD to or from this call

Vessel Call Constraints

A vessel call can have move limits for units of all equipment types and/or a specific equipment type. The limits need to be specified only for the calls with restrictions and any of the limit types may be omitted. It is also possible to specify equipment type specific TEU capacity.

VesselCallConstraints

Example

Description

VesselCallId

29

Identifies which call the limits apply to

MoveLimitLoad

0

The max number of load moves allowed during the call

MoveLimitDischarge

The max number of discharge moves allowed during the call

MoveLimitTotal

50

The max number of load plus discharge moves allowed during the call

VesselCallConstraintsEquType

Example

Description

VesselCallId

29

Identifies which call the limits apply to

EquipmentTypeCode

20DRY*

The code for the equipment type that these limits apply to

EmptyTEUCapacity

200

TEU capacity for units of this equipment type

MoveLimitLoad

0

The max number of load moves with this equipment type allowed during the call

MoveLimitDischarge

The max number of discharge moves with this equipment type allowed during the call

MoveLimitTotal

25

The max number of load plus discharge moves with this equipment type allowed during the call

Inland Corridors

Corridors are used for inland transport between pools. A corridor can be used up to the weekly TEU capacity. Possible gate-out days are limited to the week-days given by the Frequency unless it is set to ‘Daily’. In case the slack capacity is used, then the transport cost per TEU is higher according to the fraction given by the scenario parameter CapacitySlackPenaltyRatio. Each corridor has preferred origin and destination sites. These sites are used for suggested OTTs on the corridor.

Examples of Frequency:

  • Monday

  • Tuesday, Thursday

  • Daily

  • Weekday

The meaning of ‘Weekday’ is Monday to Friday, inclusive.

Corridors

Example

Description

OriginPoolCode

AF8LO

Code of origin pool

DestinationPoolCode

PKPQ1

Code of destination pool

TransitTime

2

Number of days in transit

Cost20foot

100

Transport cost per 20’ container

Cost40foot

200

Transport cost per 40’ container

Cost45foot

200

Transport cost per 45’ container

Frequency

Monday, Tuesday

The possible gate out days in a week. A comma-separated list of weekdays, ‘Daily’ or ‘Weekday’ is accepted.

DaysLocked

7

The number of locked days at the beginning of the plan. The optimiser cannot suggest gate out on these days.

PreferredOriginSiteCode

AF8LOTR

Preferred origin site of the corridor.

PreferredDestinationSiteCode

PKPQ1MT

Preferred destination site of the corridor.

CorridorCapacities

Example

Description

OriginPoolCode

SEAGH

Code of origin pool

DestinationPoolCode

SEGOT

Code of destination pool

DateWeek

2018-01-08

Date of Monday of the week this capacity applies

CapacityLimitBase

50

The number TEU that can be transported in this corridor during a week

CapacityLimitSlack

5

Additional TEU that can be transported at a higher TEU cost

Dummy Ports

Restricting discharge port for OTTs into FEA+APA. This table is used to identify the dummy port calls. In the example, for service 431 call to terminal KRULSDY with departure direction W are used as dummy port.

DummyPorts

Example

Description

ServiceCode

431

Service code for restricted service

SiteCode

KRULSDY

Site code for the dummy port

DepartureDirection

W

Departure direction for the dummy port call. The direction ‘NA’ means no direction is specified.

Flow Restrictions

Flow restrictions can be used to prevent OTTs between specific countries of within specific groups of pools. They can also be used to prevent OTTs between two sites in the same country but with intermediate calls to other countries.

FlowRestrictionsCountry

Example

Description

OriginCountryCode

DK

Country code for origin site

DestinationCountryCode

CN

Country code for destination site

AllowIfNoIntermediateCountry

False

True if intermediate counties are allowed

For pool restrictions, each row in the table adds a pool to a group. The groups are identified by the name, meaning the names must match exactly.

FlowRestrictionsPool

Example

Description

GroupName

East Malaysia

Name of the pool group

PoolCode

MYBTU

Code of the pool belonging to this group

Service flow restrictions can be used to define a list of allowed operations on a service. In case a service has a restriction then each suggested OTT on that service must match at least one of the operations.

FlowRestrictionsService

Example

Description

ServiceCode

49T

The service with restricted operations

PoolCode

MTJMW

Pool code for an operation that is allowed

RestrictionType

Load

The move operation that is allowed. Load or Discharge.

CabotageCountry

These are cabotage rules on country level. They can be used to restrict vessels loading or discharging in a certain country to one or several vessel flags. More allowed flags can be specified by adding more records for the same country.

CabotageCountry

Example

Description

CountryCode

DK

Country code for a site where a vessel is loading or discharging

VesselFlagCountryCode

CN

Country code of vessel flag

CabotagePool

These define cabotage rules on pool level. Each rule must specify if it applies to vessels loading at the pool or discharging at the pool. More allowed ownerships can be specified by adding more records on the same pool.

CabotagePool

Example

Description

PoolCode

CNSGH

Code of the relevant pool for an OTT. This can be the load pool or the discharge pool depending on RestrictionType.

CountryCode

CN

Country code of vessel flag

RestrictionType

Load

Indicates if the restriction is for OTTs loading or discharging at the specified pool

VesselOwnership

Own

Allowed ownership

Initial Stock

The initial stock levels give the stock at the beginning of the planning period. Values must be provided for each pool and optimised equipment type.
Examples:

InitialStockLevels

Example

Description

PoolCode

DEBRV

Code of the pool where the equipment is stocked

EquipmentTypeCode

20DRY*

Code of the equipment type

Units

100

Number of units in stock

Initial stock levels for sites where the stock level needs to be managed separately.

SiteInitialStockLevels

Example

Description

SiteCode

DEBRV06

Code of the site where the equipment is stocked

EquipmentTypeCode

20DRY*

Code of the equipment type

Units

25

Number of units in stock

Pool Unit Cost

These are various costs and entities that are specific to a pool and equipment type.

PoolUnitCost

Example

Description

PoolCode

DEBRV

Code of the pool

EquipmentTypeCode

20DRY*

Code of the equipment type

AvgExportYield

536.40

Estimated export yield per unit

AvgStorageCost

0.73

Estimated storage cost per unit

AvgEMRDays

1

The number of days required in stock for this equipment type to be prepared for export

GateOutCost

20

Cost to gate out a unit for inland transport

GateInCost

10

Cost to gate in a unit from inland transport

Site Unit Cost

The load and discharge costs for an equipment type at a site.

SiteUnitCost

Example

Description

SiteCode

ARBUE01

Code of the site

EquipmentTypeCode

20DRY*

Code of the equipment type

LoadCost

100

Cost to load a unit on a vessel calling to this site

DischargeCost

100

Cost to discharge a unit on a vessel calling to this site

Initial OTTs

Initial OTTs are the OTTs that exist before the optimisation is started. On-board OTTs are considered locked and will remain. The optimiser takes into account the stock as they are discharged from on-board OTTs. Planned OTTs may be locked, either on OTT level or on equipment type level.

Marine OTTs:
Marine OTTs have a vessel code. This vessel code must match a vessel in the plan. A planned initial OTT must match the vessel schedule by date and site. Locked initial OTTs are kept even though they would violate cabotage rules or flow restrictions.

Inland OTTs:
OTTs without vessel code are considered to be inland. Inland OTTs do not need to match a corridor that is available in the plan.

InitialOTTs

Example

Description

OttNumber

R18061717

Unique ID of the OTT in ROCK

LoadSiteCode

LRMLWPT

Code of load site

DischargeSiteCode

MAPTMTM

Code of discharge site

ServiceCode

W3A

Code of the service

VesselCode

00E

Code of the vessel

LoadDate

2018-08-26

The date the OTT is loaded

DischargeDate

2018-09-01

The date the OTT is discharged

IsLocked

FALSE

Indicating if the whole OTT is locked

An OTT is associated with one or more equipment types:

InitialOTTsDetail

Example

Description

OttNumber

R18061717

Unique ID of the OTT in ROCK

EquipmentTypeCode

20DRY*

Code of the equipment type

Units

30

Number of units loaded

IsLocked

FALSE

Indicating if this equipment type is locked in the OTT

Restow Costs

The amount of restow is based on the vessel load incoming to the specified call. There is a restow cost for every empty TEU that is restowed. Restow is needed when both full and overall utilisations are above the respective limits.

RestowCosts

Example

Description

ServiceCode

431

The service with possible restow cost

SiteCode

SGSINPS

The arrival site where restow might occur

DepartureDirection

E

Direction where restow might occur

FullUtilisationPct

65%

The amount of full utilisation that would lead to restow

OverallUtilisationPct

85%

The amount of overall utilisation that would lead to restow

RestowCost

50

Restow cost per TEU

PartnerDownfallPct

20%

The expected downfall in utlisation of partner allocation.

Stock Level Calculations

At each pool the stock level on the first planning day is set to the initial stock level. On each day during the planning period the stock may change by OTT load or discharge, gate in or gate out of corridors or by imports, exports, infleeting or outfleeting.

Containers are loaded on a vessel on the arrival date of the load call and discharged on the departure date of the discharge call. A loaded container must be in the opening stock of the load date. A discharged container is added to the opening stock of the day after the discharge date.

For inland transport, the gated out containers must be in the opening stock of the gate-out day and they are added to the opening stock of the day after the gate-in day.

For a pool with exports, the optimiser evaluates the number of stocked containers of each type that must be reserved for exports or outfleeting the same day. Additional stock may be loaded on an OTT or moved by inland transport.

In case initial stock level is set for a site and there are vessel calls to that site then the optimiser will keep track of the stock level of the site. This means that units that are discharged from a vessel calling at such a site are added to the site stock. It also means that a vessel calling at such a site can only load units that are in the stock of the site. New units from imports or inland moves to the pool can be assigned to the stock of any of the sites in the pool. Likewisse, exported units or units that are taken out by inland moves can be remove from any of the sites.

Example initial stock and imbalance: The initial stock at DKAAR for 20DRY* is 100 units and the planning starts on 2018-08-01. This mean that the opening stock on 2018-08-01 is 100 units. During that day 10 units are outfleeted. This means that the DKAAR opening stock on 2018-08-02 for 20DRY* becomes 90 units.

Example OTT discharge: Continuing on the previous example, suppose 20 units of 20DRY* are discharged at DKAAR by an OTT on the vessel 1PM. The arrival date of the call to DKAAR is 2018-08-01 and departure date 2018-08-02. The containers are considered to be discharged on the departure date and added to the opening stock the day after. This mean the 20DRY* stock on 2018-08-03 becomes 110 units.

Example no transshipment: The vessel 1IM calls at DKAAR with arrival date 2018-08-01 and departure date 2018-08-02. The vessel 8HK calls to the same terminal with arrival date 2018-08-02 and departure date 2018-08-03. The discharge date of the first call is the departure date which is 2018-08-02. This means that the discharged equipment is added to the opening stock of the next day 2018-08-03. The load date for the second call is the arrival date which is 2018-08-02. This means that no equipment discharged from 1IM can be loaded on 8HK.

Terminal planning

In some cases the PLP optimiser will keep track of the stock level for individual sites. Such a site is referred to as a terminal. A site is considered to be a terminal when three conditions are satisfied:

  1. There are vessel calls to the site

  2. At least one site with vessel calls in the pool has initial stock defined 

  3. The pool containing the site has at least two terminals.

Terminals can optionally be provided with imbalance forecast. It is also possible to set individual targets for the terminals.

Units that are discharged from a vessel calling at a terminal can be transshipped only to vessels calling at the same terminal. This is also the case for locked inland OTTs to or from a specific terminal. On the other hand, units arriving via suggested inland OTTs to the pool may be loaded from any of the terminals in the pool. Like wise, a suggested inland OTT from a pool may take the units from any of the terminals.

Example transshipment via terminals: The pool ESBCN contains the two terminals ESBCNBS and ESBCN07. Suppose the stock level of 20DRY* on 2019-08-28 is 0 on both these sites and that the vessel 39I departures from ESBCNBS after discharging 100 units of 20DRY* on that day. This means that the stock level of 20DRY* on the next day is 100 units at the terminal ESBCNBS. The vessel X46 arrives at the other terminal ESBCN07 on 2019-08-29. This vessel will not be able to load any units of 20DRY* since the stock level at the terminal ESBCN07 is still 0. On the other hand, the vessel 1O0 that arrives at ESBCNBS on the same day may load units of 20DRY*.

Example transshipment from corridor to vessel: The 100 units of 20DRY* are instead gated in via a suggested inland OTT on 2019-08-28. These units may be loaded on any of the two vessels arriving on 2019-08-29. For example, 70 units can be loaded on the vessel X46 calling ESBCN07 and 30 units loaded on 1O0 calling ESBCNBS.

Change of destination

It is possible to allow the optimiser to change the discharge call of on-board OTTs. This is done via the field IsCODLocked in the VesselCalls table. The optimiser may do CODs between calls if both of them have IsCODLocked set to False. The optimiser will try to find CODs that have the best impact on operational costs and stock levels and without violating capacity limits and other restrictions. The optimiser may suggest to discharge some or all of the units on an OTT at one or several new destinations. 

Example COD: The OTT R12345678 has a load of 1000 units of 40HIGH* on the vessel 1JM. The discharge site is the dummy port KRULSDY. Suppose the calls to CNSGHY3, CNHSKPT and KRULSDY of this vessel all have IsCODLocked set to False. The optimiser may then decide to COD the OTT to the new destinations. E.g. 700 units to CNSGHY3 and 300 units to CNHSKPT. Since KRULSDY is a dummy port then there is no point in keeping any units to be discharged there.

Restrictions

General restrictions on OTTs

The optimiser considers possible OTTs based on the vessel calls. There are however some OTTs that are not considered. OTTs can be restricted by cabotage rules or flow restrictions. An OTT can also be avoided by setting load or total move limits to zero at the origin call or by setting the discharge or total move limits to zero at the destination call. Further­­­, the optimiser will not consider OTTs with the same origin and destination pool. The OTT will be discharged the first time the vessel enters the destination site unless the destination is a dummy port.

When containers are loaded on locked planned OTTs it may sometimes not be possible to have enough containers in stock to meet the export reserves. In that case the optimiser will try to find a plan where the stock is as close as possible to the export reserves. No containers will be suggested to be loaded on OTTs from this pool as long as the stock is below the export reserves.

Example vessel revisits a site: A vessel makes the following calls: SEGOT01 – DKAARPT – DEHAMEK - DKAARPT. In this case the optimiser will never suggest an OTT from SEGOT01 to the second call to DKAARPT.

Example vessel revisits a pool: A vessel makes the following calls: SEGOT01 – DKAARPT – DEHAMEK - DKAAR01. In this case the optimiser might suggest an OTT from SEGOT01 to DKAAR01 even thought this is not the first time the vessel is calling at the pool DKAAR. 

Rounding

Internally the PLP optimiser works with a plan that allows fractional number of units. Before the suggested OTTs are exported to ROCK the suggested numbers are rounded down to integers.

Vessel Capacity

For each call the number of empty TEU and metric tons that can be on-board on departure is specified. The OTTs suggested by the optimiser will never exceed these values. The optimiser also takes into account locked OTT containers that are on-board.

Optionally, a TEU capacity can be set for a specific equipment type. In case capacity is set for an equipment type, then the empty load of that equipment type cannot exceed the value. The total empty load for all equipment types on the vessel must still be below the empty capacity of the vessel.

Example 1: The vessel 1IM is departing from DEBRV06 with EmptyTEUCapacity = 1000 TEU. Apart from this there is a EmptyTEUCapacity of 500 TEU for 20DRY*. This means that at most 500 units of 20DRY* can be on-board at departure. In addition to that, another 500 TEU of other equipment types can be on-board, e.g. 250 40DRY*. In case fewer 20DRY* are on-board, say 100 units, then there is space for 450 units of 40DRY*.

Example 2: In the above example, suppose the EmptyTEUCapacity for 20DRY* is set to 2000 TEU. This will have no effect since the number of 20DRY* will be limited to 1000 units by the overall capacity limit.

Example 3: In case EmptyTEUCapacity for 20DRY* is set to 0 then no 20DRY* can be on-board when at departure.

Example 4: In case EmptyTEUCapacity = 1000 TEU but the EmptyMTCapacity = 0 MT then no empty containers can be on-board at departure.

Corridor capacity

Each inland corridor has a weekly capacity specified in terms of TEU. For a corridor, all OTTs that are gated out during a week are counted against the capacity of that week.
The capacity is specified by a base value and a slack value. It is the sum of these two values that can be used though the transport cost is higher for the slack capacity.

A corridor may be locked for a number of days in the beginning of the planning period. This is set via the parameter DaysLocked. The first week that is unlocked may have a reduced capacity in case some of the frequency days in that week are locked. The remaining capacity for that week is determined by the number of frequency days that are unlocked versus the frequency days for the whole week.

Example fractional week: The corridor from SEAGH to SEGOT has Frequency set to 'Monday, Wednesday' and it has a weekly capacity of 100 TEU. Suppose the StartDate for the planning is on a Wednesday and DaysLocked for this corridor is set to 7 days. This means Monday and Tuesday in the following week are locked, and the optimiser may suggest OTTs gated out on the Wednesday of that week. Since one out of two frequency days is locked, then the remaining capacity of that week is 50 TEU.

Move Limits

Move limits give the maximum number of containers that can be moved at a certain call. You can set separate limits for load moves, discharge moves or total moves (The sum of load and discharge moves). In case move limits are set for a call then the optimiser will plan at most the number of moves that has been set. Move limits are optional.

Move limits can also be set for specific equipment types. All move limits on a call, the equipment specific as well as move limits on all equipment types, much be satisfied.

Example discharge limit: A call at ESALRTM with arrival date 2018-08-27 has discharge limit set to 1000 units. This means that the vessel can discharge 1000 or less units at this call. For example 300 units of 20DRY* and 700 units of 40HIGH*.

Example total and load: One week later the call at ESALRTM has no discharge limit but a load limit of 100 and a total move limit of 150. In case 100 units are discharged at this call, then the maximum of 50 units may be loaded during the same call because of the limit on the total number of moves.

Example equipment type limit: The call from the first example has discharge limit set to 1000 units for all equipment types and in addition to this a discharge limit of 200 units for 20DRY*. This means that the vessel can discharge at most 200 20DRY* during this call and at most 1000 units of 20DRY* plus containers of other types. For example 200 20DRY* and 800 40DRY*.

Example redundant equipment type limit: If in the previous example the 20DRY* discharge limit is instead set to 2000 units, then that limit will not have any effect since the number of discharged 20DRY* can at most be 1000 units beacuse of the discharge limit on all equipment types.

Dummy Ports

This is a special feature for flow areas in FEA and APA. By specifying a dummy port for a service then suggested OTTs on Maersk owned vessels from outside FEA+APA that are discharged inside FEA+APA can only use the dummy port as the discharge call. These suggested OTTs do not contribute to move limits at the dummy port call. The dummy port is identified by service, site and departure direction. In this context, FEA+APA consist of the flow areas PRE, PRS, PRN and APAN. Note APAS is excluded in order to accommodate dummy planning out of AU.

Call Lock

A vessel call can be marked as locked. When a call is locked then the optimiser will not plan any loads at that call. However, the optimiser may plan discharge at that call. Call locks would normally be used in the beginning of the planning period.

Locked Initial OTTs

Planned OTTs that are locked may not be altered by the optimiser . In case a planned OTT is locked on OTT level then the OTT cannot be altered. If an OTT is locked only for one or several equipment types then the OTT can be altered on other equipment types. The optimiser will modify initial OTT load for equipment types that are not marked as IsOptimised.

For inland OTTs the lock applies to corridors with the preferred sites equal to the load and discharge sites of the OTT, and with the same gate-out day as the OTT load day.

Example unlocked initial OTT: The planned initial OTT R12345678 on the vessel 1YM from SEGOT01 at 2018-06-12 to NLROTTM at 2018-06-21 has the load of 20 units of 45HIGH*. The OTT is unlocked both on OTT level and on equipment level. This means that the optimiser may cancel the OTT or alter the load. For example the optimiser might set the load to 10 units of 45HIGH* and 25 units of 40HCRF*.

Example locked on OTT level: In case the OTT from the previous example is locked on OTT level then it may not be cancelled and the load may not be altered. The optimiser will take into account the transportation of the 20 units of 45HIGH* in the plan.

Example locked on equipment level: In case the same OTT is locked on equipment level then the OTT cannot be cancelled but the load may be altered on other equipment types. For example the optimiser might suggest to load 10 units of 40HCRF* in addition to the 20 units of 45HIGH*.

Example inland OTT: The locked OTT R12345679 has no vessel specified, so it is considered to be an inland OTT. Suppose the OTT has LoadSiteCode SEAGH01 and DischargeSiteCode SEGOT01 and the load day 2018-10-18. Suppose further there is a corridor with PreferredOriginSiteCode SEAGH01 and PreferredDestinationSiteCode SEGOT01. Then the optimiser cannot suggest any flow on this corridor with gate-out day 2018-10-18.

Storage Limit

You may optionally specify a limit on the total number of TEU that are stored at a pool. When a storage limit is set then the optimiser will plan a storage that is at most the number of TEU that is specified. In this constraint, units that are being loaded are considered to contribute to the storage until the last day of the vessel call. This mean that the number of TEU that are considered to be stored might be higher than the stock development.

In some cases it might not be possible to avoid a plan with higher storage levels than what has been specified. For example if there is a large surplus at a port and not enough capacity for evacuation. In those cases, then optimiser will try to find a plan where containers are evacuated down to the limit as early as possible.

Cabotage

Vessel flag cabotage restrictions

These are restrictions on OTTs between sites in the same country. The user may restrict such moves to one or several vessel flags.

Example 1: [CountryCode: DK, VesselFlagCountry: DK]. In this case an OTT that both loads and discharges in Denmark must be on vessel with Danish flag.

Example 2: [CountryCode: DK, VesselFlagCountry: DK], [CountryCode: DK, VesselFlagCountry: CN]. In this case both Danish or Chinese flag is allowed on the vessel.

Ownership cabotage restrictions

These can be used to restrict the vessel ownership on cabotage OTTs. The restriction is either per load pool and discharge country, or per load country and discharge pool. The restriction may be to one or several vessel ownership types.

Example 1: [PoolCode: CNSGH, CountryCode: CN, RestrictionType: Load, VesselOwnership: Own]. In this case OTTs that are loaded in CNSGH and discharged in any site in CN must be on Own vessels.

Example 2: [PoolCode: DKAAR, CountryCode: DK, RestrictionType: Discharge, VesselOwnership: Own], [PoolCode: DKAAR, CountryCode: DK, RestrictionType: Discharge, VesselOwnerShip: Partner]. In this case OTTs that are loaded in a site in DK and discharged in DKAAR must be on a vessel with either Own or Partner ownership.

US Jones act

This is a special rule for US cabotage. The rule can be enabled via the scenario parameter ApplyUSJonesAct. With this rule enabled, cabotage within the US is allowed only on vessels that have US flag or operate on a service with at least one US flagged vessel. The optimiser will suggest US cabotage OTTs only on these vessels.

Flow Restrictions

Country flow restrictions can be used to prevent OTTs between specific countries or within specific groups of pools. They can also be used to forbid OTTs from a county to itself on vessels that call to other countries before discharging. Pool flow restrictions can be used to define groups of pools. No OTTs can be suggested between two pools in the same group. Service flow restrictions can be used to define a list of allowed operations on a service. In case a service has a restriction then each suggested OTT on that service must match at least one of the operations.

Example 1 FlowRestrictionsCountry: [OriginCountyCode: AA, DestinationCountryCode: BB and AllowIfNoIntermediateCountry: False] The optimiser will not suggest OTTs that are loaded at a site in the country AA and discharged at a site in the country BB. In order to prevent OTTs also in the opposite direction then a separate restriction is needed.

Example 2 FlowRestricitionsCountry: [OriginCountyCode: CN, DestinationCountryCode: CN and AllowIfNoIntermediateCountry: True] The optimiser will not suggest any OTTs that both load and discharge in China in case the vessel calls at any sites in other country before the destination

Example FlowRestrictionsPool:  [GroupName: East Malaysia, PoolCode: MYBTU][GroupName: East Malaysia, PoolCode: MYBKI][GroupName: East Malaysia, PoolCode: MYTWU] In this case the pool MYBTU, MYBKI and MYTWU are defined to be in the same restriction group. The optimiser will not suggest any OTTs between these pools.

Example FlowRestrictionsService: [ServiceCode: 49T, PoolCode: MTJMW, RestrictionType: Load] [ServiceCode: 49T, PoolCode: MTJMW, RestrictionType: Discharge] Any suggested OTT on the service 49T must either load or discharge at the pool MTJMW.

Operational Costs

Operational costs of an OTT

The optimiser tries to minimise operational costs. Several cost components are considered for the suggested OTTs. For marine OTTs, these are load and discharge costs, equipment cost and slot cost. Based on the total load on a vessel incoming to specific sites there might also be restow costs. For inland OTTs the cost components are gate out and gate in costs, transport cost and equipment cost.

Example Marine OTT: Consider a suggested OTT from LRMLWPT to ESALRTM with arrival date 2018-07-05 at the load site and departure date 2018-07-25 at the discharge site. Suppose this OTT has the load of 25 units of 40HCRF*. For such an OTT the optimiser will evaluate an operational cost of $4742:50. This includes for 40HCRF* a load cost at LRMLWPT of $87 per unit and a discharge cost at ESALRTM of $75 per unit, amounting to a total of $4050 for 25 units. The transit time for this OTT is 20 days. For each unit and transit day the equipment cost for 40HCRF* is $ 0:77 and slot cost is  $2. The cost for being in transport for the 25 units for the 20 days then amounts to $692:50. The total operational cost for this OTT then becomes $4050 + $692:50 = 4742:50.

Example Inland OTT: Consider an inland OTT from AF8LO to PKPQ1 with three units of 20DRY* and with gate out date 2018-07-10 and gate in date 2018-07-12. For such an OTT the optimiser will evaluate an operational cost of $368:70. This includes for 20DRY* a gate out cost at AF8LO of $5 per unit and a get in cost at PKPQ1 of $7 per unit, amounting to a total of $66 for three units. The transport cost for 20’ units on the corridor is $100 giving a total transport cost of $300 for the three units. The transit time for this OTT is two days. An equipment cost of $0:45 per unit and day for 20DRY* amount to $2:70 for the three units and two days. The total operational cost for this OTT then becomes $66 + $300 + $2:70 = $368:70.

Operational costs of stored equipment

Operational costs for equipment in stock consists of storage cost and equipment cost.

Example storage: Consider 100 units of 40HCRF* that are discharged at a call to DKAARTM with discharge date 2018-07-10 and that these units are to be exported 2018-07-30. The first day these containers are in the opening stock is 2018-07-11 meaning they are stored for 20 days. The operational cost of having these units on stock is then evaluated to $8060. The storage cost at the pool DKAAR for 40HCRF* is $0:65 per unit and day. This amount to $1300 for the 100 units and 20 days. The equipment cost for 40HCRF* is $3:38 per units and day which totals to $6760. The total cost of keeping these equipment in stock then becomes $1300 + $6760 = $8060.

Restow Costs

Restows might be needed when a vessel is loaded near its total capacity of full and empty containers. The optimiser tries to take these into account in order to reduce  the risk of restows. Restow costs are evaluated only for Maersk owned vessels.

Restow costs can be set per service on a call at a certain site and in a certain departure direction. Possible restow is during this call, so it depends on the load when arriving to the call. An empty container is considered to need restow when the full and the empty utilisations are above given percentages. Restow cost is counted per restowed TEU.

Example: Restow cost of $50 per restowed TEU has been defined for the service 431 when calling SGSINPS with departure direction E. Estimated need for restow is based on the vessel load when arriving to this call. Suppose FullUtilisationPct is set to 65% and OverallUtilisationPct is set to 85%. In case the full utilisation is above 65%, then it is assumed that every loaded empty above 85% overall utilisation will need restow. Suppose the total vessel capacity is 10000 TEU and full utilisation when arriving to SGSINPS is 7000 TEU. The full utilisation is above the limit which means any additional empty container above 1500 TEU will require restow and the cost incured is proportional to the number of restowed TEU. In this example, in case there are 2000 TEU of empties loaded, then 500 TEU will need restow and this will correspond to a restow cost of $50 x 500 = $2500.

Example full utilisation: In the above example the vessel capacity is 10000 TEU. That is given by IntakeTEU for the vessel call the vessel departs from. Suppose further for that call that the Maersk allocation is AllocationTEU = 8000 and EmptyTEUCapacity = 2500. This means that there are 5500 TEU of full Maersk containers. For the partners, the allocation is IntakeTEU - AllocationTEU = 2000 TEU. With a PartnerDownfallPct of 25%, this means the partners have 1500 TEU of fulls on board. The total full utilisation then becomes 5500 + 1500 = 7000 TEU or 70%, in this example.

Incentive costs

Incentive costs are used to drive the plan to satisfy desired stock levels and the need for EMR before exports as close as possible. Incentive costs are balanced against operational costs. They will also reflect the relative importance to meet the target of a certain equipment type at a certain pool.

EMR costs

A container need to be on stock for a number of days before exports in order to have time for EMR. The optimiser may chose to skip the EMR with a penalty equal to the export yield for each missed EMR day and unit.

Example EMR days and export: Suppose a 20DRY* container needs 2 days of EMR before being exported in DKAAR and that the export yield there for 20DRY* is $500. In case a container is discharged in DKAAR on 2018-08-02 then it is considered to be in stock on 2018-08-03. Because of the need for EMR that container can be exported on 2018-08-03 with a penalty for missing EMR or it can be exported on 2018-08-05 with no EMR penalty. If the optimiser choses to export already on 2018-08-03 then there is a penalty of two days of missing EMR of $1000 per unit. If it is exported on 2018-08-04 the penalty becomes $500 per unit.

Target Stock Level

There is a penalty for the stock level to be below min target at any pool of terminal for any equipment type. The penalty is incurred for each day the stock is below min target. For pools with deficit imbalance there is also a reward for the stock level being above min target. The reward applies only to days with pool deficit and only for the deficit equipment types.

The optimiser tries to satisfy the targets as close as possible by minimising a daily penalty for opening stock levels below the target. There is no penalty for stock levels above the minimum. The penalty is based on the average export yield for that equipment type at the pool. The penalty per unit below target increases with the percentage size of the deficit as compared to the target. Small deviations give low per unit penalty while large deviations are penalised with a higher per unit value.

In some cases there is no way to prevent the stock level to become negative. This can happen for example if there is a locked OTT that is loading more than what is available on stock. In those cases the optimiser will try to suggest OTTs in order to bring up the stock level as soon as possible to positive values. This has higher priority than any costs. To achieve this, the optimiser uses  a penalty of $100 000 per unit below zero stock level.

Note that if target = 0 then there will be no deviation penalty nor build up incentive.

For pools with terminals there is a  penalty or reward at each terminal based on the terminal stock level and target min for the terminal. In case the target min for the pool is larger than the sum of the min values at the terminals, then there may be additional penalty based on a estimated depot stock level. The optimiser makes this estimation by counting a number of units from each terminal as stocked at the depot (without actually removing them from the terminals). This means that for the penalty calculation, each unit at a terminal will count either against the target of the terminal itself or it will count against the remainder of the pool target that is not covered by the terminal targets. Note that the optimiser does not keep track of the stock level at depots except for this target penalty calculation.

Stock level as percentage of min

Per unit  penalty as a factor times average yield

90-100%

1/7

75-90%

1/2

50-75%

0.9

0-50%

1

Negative

$100 000 per unit

Stock level as percentage of min

Per unit  reward as a factor times average yield

100-110%

0.02

110-150%

0.01

Above 150%

0.001

Example penalty: Suppose the number of 40HIGH* at DKAAR is 70 units in the opening stock of 11:th of August 2018. This is the Saturday of the week starting on August 6:th. Suppose the target level for that week of 40HIGH* in DKAAR is 100 units. This means that we are 30 units below target. Suppose the estimated export yield of 40HIGH* in DKAAR is $100 per unit. Of these, 10 units of the shortage are in the range 90-100%. The penalty for these is $100 * 10 * 1/7 = $143. Further 15 units of the shortage are in the range 75-90%. The penalty for these is $100 * 15 * ½ = $750. Finally 5 units of the shortage are in the rage 50-75%. For these the penalty is $100 * 5 * 0.9 = $450. The total shortage penalty for this day adds up to $1343.

Example reward: In the above example suppose the stock level of 40HIGH* the next day is 120 units and that the exports + outfleeting is higher than imports + infleeting, on the this day. This means that there is a reward for the 20 unit of stock buildup. Of these, 10 units are in the range 100-110% of target min. Sine the export yield is $100 then for these 10 units there is a reward of $100 * 10 * 0.02 = $20. The other 10 units of buildup are in the range 110-150%. For these the reward is $100 * 10 * 0.01 = $10. The total buildup incentive reward then becomes $30 for this day.

Via the scenario parameter TailPenaltyWeight the last few weeks before the TailDate can be emphasized. For these weeks a higher shortage penalty and build up reward is used in order to simulate the effect that for example a shortage in the last week is likely to lead to a shortage a few weeks after that. With TailPenaltyWeight = 1 no emphasis is applied. 

Example tail penalty factor: a shortage penalty is multiped by a tail penalty factor, which depends on the TailPenaltyWeight. The higher the TailPenaltyWeight, the earlier in the planning period would the shortage penalties be increased by the tail penalty factor. As an example, let us assume that TailDate = 2022-10-27 and TailPenaltyWeight is 3. During the last week of the planning period, from 2022-10-21 to 2022-10-27, the shortage penalties are multiped by the tail penalty factor = 3. The week before, from 2022-10-14 to 2022-10-20, the shortage penalties are multiplied by 2. Shortage penalties occurring in the earlier weeks are not multiplied by the tail penalty factor.

REP Compliance

The optimiser tries to find a plan with the flow area stock level as close as possible to the REP targets. This is achieved by applying a penalty for stock levels below the target. The penalty is set to the deviation below target times the parameter REPDeviationPenalty, times the TEU ratio of the equipment type and times a factor that depends on the deviation percentage.

The penalty is evaluated on the weekly average starting from the week of the EndDate and ending with the last week before the TailDate.

In the same way as for the stock level targets, the REP compliance penalty can be emphasised for the last few weeks before TailDate via the parameter TailPenaltyWeight

Stock level as percentage of target

Per unit  penalty as a factor times the parameter REPDeviationPenalty

95-100%

1

90-95%

2

0-90%

5

Example REP compliance weeks: Suppose EndDate is set to 2018-11-13. This is a Tuesday which means the week starting on the Monday 2018-11-12 is the first week when REP compliance is checked, since this is the week that contains EndDate. Suppose TailDate is set to 2018-12-13. This is a Wednesday. The last week of REP compliance is the week before, that means the week ending on Sunday 2018-12-09. In total REP compliance will be checked for four weeks in this example.

Example REP shortage penalty in a week: Consider from the above example the week starting on 2018-11-26. This week has five days in November and only two days in December. Therefor we use the November REP target value for this week. Suppose the November REP target for 40DRY* in NEU is 100000 and that the total stock level on all pools in NEU and averaged over the days in this week is 925 000 units. Then in this case there is a REP shortage of 75 000 units in this week of 40DRY* in NEU. Suppose the scenario parameter REPDEviationPenalty is set to $10. Of the shortage, 50 000 units are in the range 95-100% of the target. For these the penalty becomes $10 x 50 000 x 2 x 1 = $1 000 000. The rest of the shortage of 25 000 units are in the range 90-95%. For these the penalty becomes $10 x 25 000 x 2 x 2 = $1 000 000. The total deviation penalty for the week starting on 2018-11-26, for 40DRY* in NEU then becomes $2 000 000.

Stabilisation incentive

This feature is used to steer towards OTT suggestions that are similar to existing OTTs. A suggested OTT will get additional incentive reward if the OTT was already in the input. The incentive reward is given by the scenario parameter StabilisationIncentive times that number of units on the suggested OTT with equipment type equal to an equipment type that was loaded on the OTT in input.

Example: The OTT R01234567 existed at the point of time when the optimiser was started so it is in the input to the PLP optimiser . Suppose this OTT had 10 units of 20DRY* as the only load. Suppose further that the parameter StabilisationIncentive is set to 1. This means that any unit of 20DRY* that is suggested on this OTT will correspond to $1 in incentive. There is no incentive for other equipment types on this OTT. For example an OTT with 100 units of 20DRY* and 100 units of 40HIGH* corresponds to $100 in stabillisation incentive. Both vessel and inland OTTs are incentivised in this way.