actionrwd.reward
actionrwd.reward, function
def process actionrwd.reward(
timeIndex: number,
baseline: number,
dispersion: number,
alpha: number,
stockOnHand: number,
leadTime?: ranvar,
stepOfReorder: number,
stockOffHand?: zedfunc,
arrivalTime?: ranvar,
stockOnOrder?: number,
samples?: number,
seed?: number,
numLeadTime?: number) : (demand: ranvar, holdingTime: zedfunc)
Returns the uncovered demand demand within the responsibility window and the
expected holding time holdingTime for the nth ordered unit, driven by the ISSM
model defined by baseline, dispersion, and alpha.
timeIndex: ordering of periods within each item.baseline: expected demand per period.dispersion: variance divided by mean for the demand model.alpha: update speed of the hidden level in the ISSM model.stockOnHand: stock available at order time.leadTime: lead time distribution; use withnumLeadTimeto shift deviates.stepOfReorder: interval between reorder opportunities, in periods.stockOffHand: optional downstream coverage (multi-echelon use case).arrivalTime: arrival time distribution for pending orders.stockOnOrder: quantity associated witharrivalTime(use both or neither).samples: number of simulated trajectories (default is 2500).seed: optional random seed for reproducibility.numLeadTime: fixed lead time; overridesleadTimewhen provided alone.
Examples
table Items = with
[| as Id, as Dispersion, as Alpha, as StockOnHand, as LeadTime,
as StepOfReorder |]
[| "sku", 2.0, 0.2, 3, 1, 2 |]
table Periods = extend.range(6 into Items)
Periods.Baseline = 10
Items.Demand, Items.HoldingTime = actionrwd.reward(
TimeIndex: Periods.N,
Baseline: Periods.Baseline,
Dispersion: Items.Dispersion,
Alpha: Items.Alpha,
StockOnHand: Items.StockOnHand,
LeadTime: dirac(Items.LeadTime),
StepOfReorder: Items.StepOfReorder)
Items.MeanDemand = mean(Items.Demand)
Items.HoldTime1 = valueAt(Items.HoldingTime, 1)
show table "Action reward" with
Items.Id
Items.MeanDemand
Items.HoldTime1
This produces the following table:
| Id | MeanDemand | HoldTime1 |
|---|---|---|
| sku | 19.84998 | 0.0016 |
Remarks
The demand output is a ranvar in the ordering space, while holdingTime
reflects the expected number of periods the nth unit remains in stock.
Use actionrwd.demand or
actionrwd.segment for diagnostics of the same
trajectory model.
See also
- How to compute the return of the next replenishment unit
- actionrwd.demand
- actionrwd.segment
- actionrwd.dampen