Configure TZ Decker penalties

The BaseTZDeckerParamsProvider code extension provides a set of penalties with default values that you can override to influence TZ decking decisions. TZ Decker makes decking decisions based on the penalties and the TZ Decker penalties depend on the current traffic regimes and other parameters, such as the move kind, inbound or outbound direction, and single or twin. Some TZ Decker penalties depend on the partial traffic regime, some on the general traffic regime, and some on both.

If the TZ decking requirement is set to hard, then TZ Decker does not select a TP other than the one requested and therefore does not use the penalties. If the requirement is undefined or soft, then TZ Decker uses the penalties for decking decisions. All of the applicable penalties for a TP are additive.

Penalty values should be positive; zero (0) values are not recommended and negative values are not allowed.

For some TZ Decker penalties, you can set a different penalty values for each traffic regime, such as for light, medium, and heavy traffic. For example, the following groovy code is for the CONGST penalty and is set to 10 for all traffic regimes.

      _tpCongestion.put(QueueingModel.TrafficRegime.LIGHT,       moveKind, [INBOUND_DIR: 10L, OUTBOUND_DIR: 10L]);

      _tpCongestion.put(QueueingModel.TrafficRegime.MEDIUM,      moveKind, [INBOUND_DIR: 10L, OUTBOUND_DIR: 10L]);

      _tpCongestion.put(QueueingModel.TrafficRegime.HEAVY,       moveKind, [INBOUND_DIR: 10L, OUTBOUND_DIR: 10L]);

During heavy traffic, TZ Decker also considers the job urgency of decking requests. It computes job urgency based on the reservation time window, the time it has already been failing dispatch, and if it is a partial work assignment (WA) package (that is only AGVs or only ASCs) or a full WA package (that is both AGVs and ASCs). The job urgency can be urgent, semi, or non-urgent. The urgency of the job being decked and the urgency of the job that is occupying the lane both determine the behavior of TZ Decker. You can configure this behavior via matrix-based urgency multiplier parameters that are defined in the system-seeded code extension BaseTZDeckerParamsProvider.

In addition, you can set different penalty values for inbound moves into the ASC stack versus outbound moves.

The default values in the BaseTZDeckerParamsProvider code extension are set the same for all move types (move kinds). However, you can also add groovy code to configure different penalty values for different move kinds. The BaseTZDeckerParamsProvider code extension provides an example of this for rail load and rail discharge move kinds.

To configure TZ Decker penalties:

  1. In the Code Extensions view in N4, locate and open the BaseTZDeckerParamsProvider code extension.

  1. Follow the N4 online help to add a new code extension and modify the penalty values per your desired operations.

You can copy and paste the contents from the BaseTZDeckerParamsProvider code extension into your new code extension and modify as needed.

  1. Test decking containers to and from the ASC block to verify the new penalty values.

 

OVSPWR - Set penalty for blocking inbound reefer

Type: Penalty

Reference: tpOvsPwr

Description: This penalty is applied when trying to deck a container to the second tier of a TP and the first tier is occupied by an inbound container (reefer) that requires power.

Default: 200. This value applies to Heavy, Medium, and Light traffic regimes for both inbound and outbound moves.

Module: TZ Decker

Parameters: None

 

POWBLK - Set penalty for blocking move with different POW

Type: Penalty

Reference: tpPowBlk

Description: This penalty is applied to a move that blocks a move for a different POW.

Default: 30. This value applies to Heavy, Medium, and Light traffic regimes for both inbound and outbound moves.

Module: TZ Decker

Parameters: None

 

SEQBLK - Set penalty for blocking lower sequenced move

Type: Penalty

Reference: tpSeqBlk

Description: This penalty is applied to a move that blocks another move with a lower sequence number, in the same work queue. The penalty is also applied if it is blocking a move in a lower ordered work queue for the same POW.

Default: 10 for inbound moves. 50 for outbound moves. These values apply to Heavy, Medium, and Light traffic regimes.

Module: TZ Decker

Parameters: None

 

STKEMP - Set penalty for starting new stack

Type: Penalty

Reference: tpStkEmp

Description: This penalty limits wasting space in the transfer zone that could be used for 40' containers and twinned containers. Similar to the STKMTY penalty which only applies to intra-block moves, STKEMP applies when decking 20' and 40' containers that will start a new stack.

The STKEMP penalty is calculated by taking the penalty value and dividing it by the number of empty available 40' TPs. For example if there are ten empty available 40' TPs, and the penalty value is 10, then the penalty value that's applied is 1. If there's only one or no available 40' TPs, the full value is applied.

Note: To be considered available, a TP must support at least one type of move kind and cannot have a stack status of Men Working or Temp Block.

To change this setting, create an override to the BaseTZDeckerParamsProvider code extension and change the values in bold for the following elements:

// STKEMP

      _tpStkEmp.put(QueueingModel.TrafficRegime.LIGHT,     moveKind, [INBOUND_DIR: 10L, OUTBOUND_DIR: 10L]);

      _tpStkEmp.put(QueueingModel.TrafficRegime.MEDIUM,    moveKind, [INBOUND_DIR: 10L, OUTBOUND_DIR: 10L]);

      _tpStkEmp.put(QueueingModel.TrafficRegime.HEAVY,     moveKind, [INBOUND_DIR: 10L, OUTBOUND_DIR: 10L]);

Default: 10. This value applies to heavy, medium, and light traffic regimes for both inbound and outbound moves.

Related penalties: STKTIR (on page 1)

Module: TZ Decker

Parameters: None

 

STKMXX - Set penalty for mixed stack

Type: Penalty

Reference: tpStkMxx

Description: Stack penalty if a container doesn't match existing ones, such as placing a 40' container on top of two 20' containers.

The Expert Decking penalty STKMIX is used for intra-block moves.

Default: 10. This value applies to Heavy, Medium, and Light traffic regimes, and both inbound and outbound moves.

Module: TZ Decker

Parameters: None

 

STKTIR - Set penalty for placing container on second tier

Type: Penalty

Reference: tpStkTir

Description: This penalty works with STKEMP (on page 1) to help control placing 20' and 40' containers in positions that can be used by 40' containers and twins.

STKTIR is applied when placing containers on the second tier in a transfer zone when both TP positions can be used for a 40' container instead.

STKTIR is similar to the Expert Decking penalty SLTTIR, which is only used for intra-block moves.

The default behavior of STKTIR  can be overridden by creating a custom version of BaseTZDeckerParamsProvider and changing the default values associated with STKTIR, as shown below in bold.

  // STKTIR

      _tpStkTir.put(QueueingModel.TrafficRegime.LIGHT,     moveKind, [INBOUND_DIR: 3L, OUTBOUND_DIR: 3L]);

      _tpStkTir.put(QueueingModel.TrafficRegime.MEDIUM,    moveKind, [INBOUND_DIR: 3L, OUTBOUND_DIR: 3L]);

      _tpStkTir.put(QueueingModel.TrafficRegime.HEAVY,     moveKind, [INBOUND_DIR: 3L, OUTBOUND_DIR: 3L]);

Default: 3. This value applies to Heavy, Medium, and Light traffic regimes, for both inbound and outbound moves.

Module: TZ Decker

Parameters: None

 

STKPRF - Set penalty for placing containers in outer TP slots

Type: Penalty

Reference: tpStkPrf

Description: This penalty works by having decking to outer rows for discharge and yard moves penalized, to make inner rows the preferred choice. Conversely, inner rows are now penalized for load moves, making outer rows the preferred choice.

This penalty only applies to containers that are decked to the first tier, containers that are going to be decked to the second tier are not considered for this penalty.

Default: 3. This value applies to Heavy, Medium, and Light traffic regimes, for both inbound and outbound moves.

Module: TZ Decker

Parameters: None

 

STKRCH - Stack Reach Penalty

Type: Penalty

Reference: tpStkRch

Description: This penalty is applied when a TP is unreachable by an autoshuttle. A TP is considered unreachable if the TP between it and the waterside has containers on both the first and second tier.

When the TZ has availability, this penalty helps ensure that the TZ Decker selects a TP that will not lead to a situation where a container becomes unreachable.

If the TZ is almost full – only 2 empty 40' slots remain – a container may be decked to an unreachable TP. When this occurs, if an autoshuttle is dispatched for a move with a container in an unreachable TP, the autoshuttle will wait for another move to execute which will make the unreachable TP available.

The default behavior of STKRCH can be overridden by creating a custom version of BaseTZDeckerParamsProvider and changing the default values associated with STKRCH, as shown below in bold.

  // STKRCH

      _tpStkRch.put(QueueingModel.TrafficRegime.LIGHT,     moveKind, [INBOUND_DIR: 10L, OUTBOUND_DIR: 10L]);

      _tpStkRch.put(QueueingModel.TrafficRegime.MEDIUM,    moveKind, [INBOUND_DIR: 10L, OUTBOUND_DIR: 10L]);

      _tpStkRch.put(QueueingModel.TrafficRegime.HEAVY,     moveKind, [INBOUND_DIR: 10L, OUTBOUND_DIR: 10L]);

Default: 10. This value applies to Heavy, Medium, and Light traffic regimes, for both inbound and outbound moves.

Module: TZ Decker

Parameters: None

 

URGBLK - Set penalty for blocking urgent moves

Type: Penalty

Reference: tpUrgBlck

Description: Penalty for blocking urgent moves with non-urgent reservations. An urgent move is one that has an estimated move time (EMT) within five minutes. Non-urgent moves are anything greater than that.

Default: 200. This value applies to Heavy, Medium, and Light traffic regimes, and both inbound and outbound moves.

Module: TZ Decker

Parameters: None