Package-level declarations

Types

Link copied to clipboard
class AggregateInventoryResponse @JvmOverloads constructor(parent: ModelElement, baseName: String = parent.name) : AggregateInventoryResponseIfc

Default implementation of AggregateInventoryResponseIfc. Each field is a KSL aggregate or response parented to the supplied parent — the wrapper itself is not a ModelElement.

Link copied to clipboard

Read-only view of an aggregate set of inventory-layer responses. Backing types are KSL aggregates (AggregateTWResponse, AggregateResponse, AggregateCounter). Every aggregate is now chained from its per-inventory source(s) via the standard observe() pattern.

Link copied to clipboard
abstract class BackLogPolicyAbstract @JvmOverloads constructor(inventory: Inventory, name: String? = null) : ModelElement, BackLogInfoIfc

Abstract base for backlog policies that an Inventory uses to handle demands which cannot be filled immediately.

Link copied to clipboard
open class BackLogQueue @JvmOverloads constructor(inventory: Inventory, discipline: Queue.Discipline = Queue.Discipline.FIFO, name: String? = null) : BackLogPolicyAbstract

FIFO (or other-disciplined) backlog policy backed by a KSL Queue of SupplyChainModel.Demand. The queue itself is a child model element of this policy.

Link copied to clipboard

Statistic adapter that exposes a BackLogQueue's queue-level statistics (number-in-queue, time-in-queue) and the policy's amount-backlogged statistics through BackLogStatisticsIfc.

Link copied to clipboard
open class DefaultOrderGenerator @JvmOverloads constructor(supplyChainModel: SupplyChainModel, timeUntilFirstRV: RVariableIfc, timeBtwEventsRV: RVariableIfc, maxNumberOfEvents: Long = Long.MAX_VALUE, timeOfTheLastEvent: Double = Double.POSITIVE_INFINITY, name: String? = null) : OrderGenerator

Convenience subclass of OrderGenerator that bundles a built-in RandomOrderCreator. Item types are registered via the generator's own addItemTypeDistribution rather than configuring the creator separately.

Link copied to clipboard
abstract class DemandArrivalListenerAbstract @JvmOverloads constructor(val inventory: Inventory, periodLength: RVariableIfc = ConstantRV(1.0), name: String? = null) : ModelElement, InventoryDemandArrivalListenerIfc

Abstract base for demand-arrival listeners that bucket arrivals into time periods of length sampled from periodLength and report each period's aggregate via the reportPeriod hook.

Link copied to clipboard
open class DemandGenerator @JvmOverloads constructor(val supplyChainModel: SupplyChainModel, val itemType: ItemType, timeUntilFirstRV: RVariableIfc, timeBtwEventsRV: RVariableIfc, maxNumberOfEvents: Long = Long.MAX_VALUE, timeOfTheLastEvent: Double = Double.POSITIVE_INFINITY, name: String? = null) : EventGenerator, DemandSenderIfc, ExternalDemandConsumer

Generates demands at scheduled intervals and routes them to a demand filler. The demand's item type is fixed at construction; the amount is sampled from a configurable distribution (defaults to 1). When unitDemandOnly is true and the sampled amount is d, the generator sends d separate unit-quantity demands.

Link copied to clipboard
open class Inventory @JvmOverloads constructor(parent: ModelElement, itemType: ItemType, policy: InventoryPolicyAbstract, initialOnHand: Int = 0, mayPartiallyFill: Boolean = true, name: String? = null) : DemandFillerAbstract, InventoryIfc, DemandSenderIfc, InventoryStatisticsIfc

A stocking point for a single ItemType. Holds inventory, fills customer demands, requests replenishment from a supplier, and optionally backlogs demands it cannot fill immediately.

Link copied to clipboard
open class InventoryCrossDock @JvmOverloads constructor(parent: ModelElement, initialAvailability: Boolean = true, name: String? = null) : DemandFillerAbstract, DemandSenderIfc, NetworkNodeIfc

Inventory-tier cross-dock: a routing node that holds no inventory but receives a demand, forwards an upstream request, and on the upstream's delivery fills the original demand and ships it out through its own demandCarrier.

Link copied to clipboard

Notified after Inventory processes a demand arrival — either an incoming customer demand (via Inventory.demandArrivalListener) or a replenishment demand arriving from a supplier (via Inventory.replenishmentArrivalListener).

Link copied to clipboard
abstract class InventoryHolderAbstract @JvmOverloads constructor(parent: ModelElement, initialAvailability: Boolean = true, name: String? = null) : DemandFillerAbstract, DemandSenderIfc, AggregateInventoryResponseIfc

Abstract base for objects that hold one Inventory per ItemType and route incoming demands to the appropriate inventory. Acts as a DemandFillerIfc (forwards demands by item type) and a DemandSenderIfc (forwards inventory replenishment demands outward).

Link copied to clipboard
open class InventoryHoldingPoint @JvmOverloads constructor(parent: ModelElement, initialAvailability: Boolean = true, name: String? = null) : InventoryHolderAbstract, NetworkNodeIfc

Concrete InventoryHolderAbstract that holds Inventory instances and delegates incoming demands to them by ItemType. Filled demands are shipped via demandCarrier (if set) or transitioned immediately through ship → deliver.

Link copied to clipboard
abstract class InventoryPolicyAbstract @JvmOverloads constructor(parent: ModelElement, name: String? = null) : ModelElement

Abstract base for replenishment policies controlled by an Inventory.

open class InventoryPolicyReorderPointOrderUpToLevel @JvmOverloads constructor(parent: ModelElement, reorderPoint: Int = 0, orderUpToPoint: Int = 1, name: String? = null) : InventoryPolicyAbstract

An (r, S) inventory policy: when the inventory position falls to reorderPoint or below, orders enough units to bring the position up to orderUpToPoint.

open class InventoryPolicyReorderPointOrderUpToLevelPeriodic @JvmOverloads constructor(parent: ModelElement, reorderPoint: Int = 0, orderUpToPoint: Int = 1, reviewPeriod: Double = 1.0, initialReviewTime: Double = 0.0, name: String? = null) : InventoryPolicyAbstract

A periodic-review (r, S) inventory policy: every reviewPeriod time units (starting at initialReviewTime), checks the inventory position and orders up to orderUpToPoint if at or below reorderPoint.

open class InventoryPolicyReorderPointReorderQuantity @JvmOverloads constructor(parent: ModelElement, reorderPoint: Int = 0, reorderQty: Int = 1, name: String? = null) : InventoryPolicyAbstract

An (r, Q) inventory policy: orders reorderQty units when the inventory position falls to reorderPoint or below.

Link copied to clipboard

Replenishment-side rejection listener that retains a reference to the Inventory whose replenishment was rejected. Default dispatch behavior (inherited from DemandRejectionListener) throws; subclasses override to react.

Link copied to clipboard

Concrete DemandFillerAbstract that fills demands after a per-item-type lead-time delay. Once filled, demands are either handed to the inherited demandCarrier (if set) or immediately transition through ship and deliver with no delay.

Link copied to clipboard
open class LeadTimeOrderFiller @JvmOverloads constructor(parent: ModelElement, initialAvailability: Boolean = true, name: String? = null) : OrderFillerAbstract

Concrete OrderFillerAbstract that fills incoming orders by routing each demand on the order through an internal LeadTimeDemandFiller. Filled orders are shipped via orderShipper (if set) or immediately transition through ship -> deliver.

Link copied to clipboard

Common abstraction over the node types that may participate in a ksl.modeling.supplychain.network.MultiEchelonNetwork's arborescent tree: today InventoryHoldingPoint (holds inventory) and InventoryCrossDock (routes demand through without holding inventory).

Link copied to clipboard
class NoReplenishmentOptionException(message: String = "NoReplenishmentOptionException", cause: Throwable? = null) : RuntimeException

Thrown when an inventory has no replenishment option available.

Link copied to clipboard
open class OrderGenerator @JvmOverloads constructor(val supplyChainModel: SupplyChainModel, var orderCreator: OrderCreatorIfc? = null, timeUntilFirstRV: RVariableIfc, timeBtwEventsRV: RVariableIfc, maxNumberOfEvents: Long = Long.MAX_VALUE, timeOfTheLastEvent: Double = Double.POSITIVE_INFINITY, name: String? = null) : EventGenerator, OrderSenderIfc

Generates orders at scheduled intervals and routes them to an order filler. The order's content is produced by an OrderCreatorIfc; the filler is located via an OrderFillerFinderIfc or set directly via orderFiller.

Link copied to clipboard
open class RandomOrderCreator @JvmOverloads constructor(val supplyChainModel: SupplyChainModel, name: String? = null) : ModelElement, OrderCreatorIfc

OrderCreatorIfc that builds orders by stochastically including a subset of registered item types. Each item type has an associated probability of being included on a given order and a distribution for the order quantity.

Link copied to clipboard

Strategy hook for routing an Inventory's replenishment demand. The implementer is responsible for ensuring that the replenishment demand is eventually filled by a DemandFillerIfc.

Link copied to clipboard
open class Warehouse @JvmOverloads constructor(parent: ModelElement, initialAvailability: Boolean = true, name: String? = null) : WarehouseAbstract

Concrete WarehouseAbstract that holds incoming orders in a FIFO queue and dispatches each order's demands to per-item-type inventories via an internal InventoryHolderAbstract. When all demands on an order are filled, the order is shipped via orderShipper (if set) or transitioned through ship → deliver.

Link copied to clipboard
abstract class WarehouseAbstract @JvmOverloads constructor(parent: ModelElement, initialAvailability: Boolean = true, name: String? = null) : OrderFillerAbstract, OrderSenderIfc

Abstract base for a warehouse that fills incoming orders by routing each demand on the order to a per-item-type inventory. Replenishment orders are sent outward via replenishmentOrderFiller or replenishmentOrderFillerFinder.