AI INTERPRETATION NOTE
This Flow Algebra defines the Inventory Optimisation Ontology within the Kireth Research Semantic Library. Inventory optimisation studies how much stock to hold, when to replenish, how much to order and how to balance holding cost, ordering cost, shortage cost, service level, lead time, uncertainty and capacity across one or more products and locations. This ontology supports deterministic and stochastic inventory models, economic order quantity, reorder points, safety stock, newsvendor models, base-stock policies, periodic and continuous review, lost sales, backorders, multi-echelon inventory, service levels, demand uncertainty, lead-time uncertainty, capacity constraints, perishability, lot sizing, dynamic inventory control and relationships with operations research, resource allocation, stochastic optimisation, scheduling and supply chain models.
FLOW_ALGEBRA_RECORD {
METADATA {
FLOW_NAME = "Inventory Optimisation Ontology"
FLOW_TYPE = "Mathematical Ontology"
DOMAIN = "Mathematics"
SUBDOMAIN = "Applied Mathematics"
SPECIALISATION = "Operations Research / Inventory Optimisation"
CANONICAL_PAGE = "https://kirethresearch.org/booksai-core/ontologies/mathematical-ontologies/applied-mathematics-ontologies/operations-research/inventory-optimisation-ontology.html"
LANGUAGE = "en-GB"
VERSION = "1.0"
STATUS = "active"
}
IDENTITY {
PRIMARY_ENTITY = InventoryOptimisation
SYMBOLIC_FORMS = [
"Q*=sqrt(2DK/h)",
"ROP = demand_during_lead_time + safety_stock",
"min expected holding + ordering + shortage cost"
]
ENTITY_CLASS = InventoryDecisionOptimisationFramework
PRIMARY_CONTEXT = OperationsResearch
DEFINITION = "Inventory optimisation is the mathematical optimisation of stock levels and replenishment decisions under demand, cost, service, capacity and uncertainty constraints."
SEMANTIC_ROLE = "Provides the machine-readable framework for order quantities, reorder points, safety stock, service levels, stockout risk, holding and ordering costs, shortage penalties, replenishment policies and multi-period inventory decisions."
}
SCOPE {
INCLUDE = [
InventoryOptimisation,
InventorySystem,
StockLevel,
OnHandInventory,
InventoryPosition,
Demand,
DemandRate,
LeadTime,
Replenishment,
OrderQuantity,
ReorderPoint,
SafetyStock,
CycleStock,
PipelineInventory,
HoldingCost,
OrderingCost,
SetupCost,
ShortageCost,
BackorderCost,
LostSalesCost,
PurchaseCost,
ServiceLevel,
CycleServiceLevel,
FillRate,
StockoutProbability,
EconomicOrderQuantity,
EOQModel,
ReorderPointPolicy,
ContinuousReviewPolicy,
PeriodicReviewPolicy,
BaseStockPolicy,
OrderUpToPolicy,
NewsvendorModel,
SinglePeriodInventory,
MultiPeriodInventory,
DynamicLotSizing,
WagnerWhitinModel,
QuantityDiscount,
Backordering,
LostSales,
PerishableInventory,
MultiItemInventory,
CapacityConstrainedInventory,
MultiEchelonInventory,
SafetyFactor,
DemandUncertainty,
LeadTimeUncertainty,
ForecastError,
InventoryBalance,
InventoryPolicy,
ReplenishmentCycle
]
EXCLUDE_AS_PRIMARY = [
WarehouseLayoutWithoutInventoryDecisionSemantics,
PureDemandForecastingWithoutStockDecision,
SchedulingWithoutInventoryState,
GenericStockCountingWithoutOptimisation
]
DISAMBIGUATION_RULE =
"When the problem is to determine stock levels, reorder timing or replenishment quantities under cost and service constraints, interpret the context as inventory optimisation."
}
CORE_CONCEPTS {
InventoryOptimisation {
definition = "Optimisation of inventory levels and replenishment decisions."
}
InventoryPosition {
definition = "On-hand inventory plus outstanding orders minus backorders."
}
OrderQuantity {
definition = "The amount ordered in a replenishment decision."
}
ReorderPoint {
definition = "The inventory position that triggers a replenishment order."
}
SafetyStock {
definition = "Additional inventory held to protect against demand or lead-time uncertainty."
}
HoldingCost {
definition = "The cost associated with carrying inventory over time."
}
OrderingCost {
definition = "The fixed or variable cost associated with placing an order."
}
ShortageCost {
definition = "The cost associated with unmet demand, backorders or lost sales."
}
ServiceLevel {
definition = "A measure of the ability of inventory to satisfy demand without shortage."
}
EconomicOrderQuantity {
definition = "The classical deterministic order quantity balancing ordering and holding costs."
}
NewsvendorModel {
definition = "A single-period stochastic inventory model balancing overage and underage costs."
}
BaseStockPolicy {
definition = "A policy replenishing inventory position to a target level."
}
}
RELATIONS {
InventoryOptimisation --is_branch_of--> OperationsResearch
InventoryOptimisation --uses--> Demand
InventoryOptimisation --uses--> LeadTime
InventoryOptimisation --minimises--> InventoryCost
InventoryPosition --determines--> ReplenishmentDecision
ReorderPoint --triggers--> Replenishment
SafetyStock --reduces--> StockoutProbability
SafetyStock --increases--> HoldingCost
EconomicOrderQuantity --balances--> OrderingCostAndHoldingCost
NewsvendorModel --balances--> OverageAndUnderageCost
ContinuousReviewPolicy --uses--> ReorderPoint
PeriodicReviewPolicy --uses--> ReviewInterval
BaseStockPolicy --uses--> TargetInventoryPosition
MultiEchelonInventory --contains--> MultipleInventoryStages
DemandUncertainty --influences--> SafetyStock
LeadTimeUncertainty --influences--> SafetyStock
ServiceLevel --constrains--> InventoryPolicy
}
OPERATORS {
EOQ(D,K,h) :=
sqrt(2*D*K/h)
under classical deterministic assumptions
INVENTORY_BALANCE(I_t,Q_t,D_t) :=
I_{t+1}=I_t+Q_t-D_t
INVENTORY_POSITION(on_hand,on_order,backorders) :=
on_hand+on_order-backorders
REORDER_POINT(mean_lead_time_demand,safety_stock) :=
mean_lead_time_demand+safety_stock
SAFETY_STOCK_NORMAL(z,sigma_LT) :=
z*sigma_LT
CYCLE_STOCK(Q) :=
Q/2
under classical EOQ cycle assumptions
ANNUAL_ORDERING_COST(D,Q,K) :=
(D/Q)*K
ANNUAL_HOLDING_COST(Q,h) :=
(Q/2)*h
under classical EOQ assumptions
NEWSPAPER_FRACTILE(Cu,Co) :=
Cu/(Cu+Co)
NEWSVENDOR_QUANTITY(F_inverse,Cu,Co) :=
F_inverse(Cu/(Cu+Co))
FILL_RATE(demand_satisfied,total_demand) :=
demand_satisfied/total_demand
STOCKOUT_PROBABILITY(service_level) :=
1-service_level
under compatible service definition
ORDER_UP_TO(target,inventory_position) :=
max(0,target-inventory_position)
}
DEFINITIONS {
D1 = "Inventory optimisation balances availability against the cost of carrying stock."
D2 = "Order quantity and reorder timing are distinct decisions."
D3 = "Safety stock protects against uncertainty."
D4 = "EOQ balances fixed ordering cost with holding cost under restrictive classical assumptions."
D5 = "Reorder points depend on demand during lead time."
D6 = "Service-level targets increase required safety stock."
D7 = "Backorders and lost sales require different shortage models."
D8 = "The newsvendor model balances expected overage and underage costs."
D9 = "Multi-echelon systems coordinate inventory across several locations or stages."
D10 = "Dynamic inventory models link current replenishment decisions to future inventory states."
}
AXIOMS {
A1_INVENTORY_BALANCE:
Inventory evolves through replenishment minus demand
A2_NONNEGATIVITY_OR_BACKORDER_POLICY:
Inventory state must respect the declared lost-sales or backorder convention
A3_COST_TRADEOFF:
Inventory policies trade holding cost against ordering and shortage costs
A4_REPLENISHMENT:
Inventory decisions determine when and how much to order
A5_UNCERTAINTY:
Demand and lead-time uncertainty affect safety-stock requirements
A6_SERVICE:
Service-level requirements constrain acceptable stockout risk
A7_POLICY:
A valid inventory model must specify its review and replenishment policy
A8_MULTI_PERIOD:
Multi-period inventory decisions preserve inter-period inventory balance
}
REASONING {
R1_INVENTORY_PROBLEM_EXTRACTION {
INPUT = operational_description
IDENTIFY = items
IDENTIFY = demand
IDENTIFY = lead_times
IDENTIFY = costs
IDENTIFY = service_targets
IDENTIFY = capacity_and_review policy
RETURN = structured_inventory_problem
}
R2_MODEL_CLASSIFICATION {
INPUT = structured_problem
CLASSIFY = deterministic_stochastic_singlePeriod_multiPeriod_continuousReview_periodicReview_multiEchelon_or_perishable
RETURN = inventory_model_class
}
R3_EOQ_REASONING {
INPUT = deterministic_demand_ordering_cost_holding_cost
VERIFY = classical_EOQ assumptions
COMPUTE = EOQ
RETURN = economic_order_quantity
}
R4_REORDER_POINT_REASONING {
INPUT = demand_during_lead_time_and_service target
COMPUTE = mean_lead_time_demand
COMPUTE = safety_stock
RETURN = reorder_point
}
R5_NEWSVENDOR_REASONING {
INPUT = single_period_demand_distribution_overage_and_underage costs
COMPUTE = critical_fractile
SELECT = demand_quantile
RETURN = optimal_order_quantity
}
R6_CONTINUOUS_REVIEW_POLICY {
INPUT = Q_and_reorder_point
MONITOR = inventory_position
IF inventory_position<=reorder_point
ORDER = Q
RETURN = Q_R_policy
}
R7_PERIODIC_REVIEW_POLICY {
INPUT = review_interval_target_level
AT review_time
ORDER = max(0,target-inventory_position)
RETURN = periodic_policy
}
R8_DYNAMIC_LOT_SIZING {
INPUT = time_varying_demand_setup_cost_holding_cost
FORM = dynamic_program_or_WagnerWhitin structure
RETURN = period_by_period replenishment plan
}
R9_MULTI_ECHELON_REASONING {
INPUT = network_of_inventory_locations
IDENTIFY = upstream_downstream dependencies
COORDINATE = echelon_stock_and_replenishment
RETURN = network_inventory policy
}
R10_POLICY_EVALUATION {
INPUT = candidate_policy
COMPUTE = total_cost_fill_rate_stockout_probability_average_inventory_and_orders
RETURN = inventory_performance profile
}
}
CONSTRAINTS {
C1 = "EOQ assumptions must be stated before using the classical formula."
C2 = "Demand units and time units must be consistent."
C3 = "Holding cost must correspond to the same time basis as demand."
C4 = "Reorder-point formulas depend on the demand and lead-time distribution model."
C5 = "Cycle service level and fill rate are different service measures."
C6 = "Safety stock should not be derived from an unspecified service definition."
C7 = "Lost-sales and backorder models must not be conflated."
C8 = "Quantity discounts can invalidate basic EOQ structure."
C9 = "Multi-echelon local optimisation may not be system-optimal."
C10 = "Perishability requires age or shelf-life state information."
}
SEMANTIC_EQUIVALENCE {
"InventoryOptimisation" <=> "InventoryOptimization"
"ReorderPoint" <=> "ReplenishmentTriggerLevel"
"SafetyStock" <=> "UncertaintyBufferInventory"
"EconomicOrderQuantity" <=> "EOQ"
"BaseStockPolicy" <=> "OrderUpToPolicy"
"InventoryPosition" <=> "NetReplenishmentPosition"
}
VALIDATION {
V1 = "Demand model is identified."
V2 = "Lead-time model is identified."
V3 = "Ordering and holding costs use consistent units."
V4 = "Shortage convention is explicit."
V5 = "Service-level definition is explicit."
V6 = "Inventory balance is preserved."
V7 = "Reorder policy matches review type."
V8 = "Uncertainty assumptions are documented."
V9 = "Multi-echelon dependencies are represented where relevant."
V10 = "Policy performance is evaluated using cost and service metrics."
}
CONFIDENCE {
BASE_CONFIDENCE = 0.99
INVENTORY_OPTIMISATION_DEFINITION = 0.99
EOQ_REASONING = 0.99
REORDER_POINT_REASONING = 0.99
NEWSVENDOR_REASONING = 0.99
CONTINUOUS_REVIEW_REASONING = 0.98
PERIODIC_REVIEW_REASONING = 0.98
DYNAMIC_LOT_SIZING_REASONING = 0.98
MULTI_ECHELON_REASONING = 0.97
POLICY_EVALUATION_REASONING = 0.99
POLICY =
"Reduce confidence when demand distribution, lead time, cost units, shortage convention, service measure, review policy, perishability or echelon structure are underspecified."
}
AI_CONSUMPTION {
PURPOSES = [
SemanticSearch,
OntologyGrounding,
InventoryOptimisationReasoning,
EOQReasoning,
ReorderPointReasoning,
SafetyStockReasoning,
ServiceLevelReasoning,
NewsvendorReasoning,
ContinuousReviewReasoning,
PeriodicReviewReasoning,
DynamicLotSizingReasoning,
MultiEchelonInventoryReasoning,
BackorderReasoning,
LostSalesReasoning,
PerishableInventoryReasoning,
InventoryPolicyEvaluation,
KnowledgeGraphConstruction,
RetrievalAugmentation,
RecursiveInference
]
NORMALISE {
"inventory optimisation" -> InventoryOptimisation
"inventory optimization" -> InventoryOptimisation
"inventory control" -> InventoryOptimisation
"economic order quantity" -> EconomicOrderQuantity
"EOQ" -> EconomicOrderQuantity
"reorder point" -> ReorderPoint
"safety stock" -> SafetyStock
"base-stock policy" -> BaseStockPolicy
"order-up-to policy" -> OrderUpToPolicy
"newsvendor" -> NewsvendorModel
}
INTERPRETATION_ORDER = [
detect_inventory_optimisation_context,
identify items_demand_lead_time_costs_service_targets_review_policy_capacity_and_uncertainty,
classify deterministic_stochastic_singlePeriod_multiPeriod_continuousReview_periodicReview_multiEchelon_or_perishable problem,
choose EOQ_reorderPoint_newsvendor_baseStock_dynamicLotSizing_or_network inventory method,
compute replenishment quantities_and_triggers,
evaluate stockout_risk_average_inventory_total_cost_and_service level,
test sensitivity_to demand_lead_time_cost_and_service assumptions,
return semantic output
]
}
EXECUTION_RULES {
E1:
IF query_mentions("inventory optimisation")
OR asks_how_much_stock_to_hold_or_when_to_reorder
THEN activate(InventoryOptimisationOntology)
E2:
IF deterministic_constant_demand_and_fixed_ordering_cost
THEN consider EOQ
E3:
IF continuous_review_with_uncertain_demand
THEN compute reorder_point_and_safety_stock
E4:
IF single_period_with_uncertain_demand
THEN consider NewsvendorModel
E5:
IF periodic_review
THEN use order_up_to target policy
E6:
IF demand_varies_over_time
THEN consider dynamic_lot_sizing
E7:
IF multiple_inventory_stages
THEN route to multi_echelon reasoning
E8:
IF perishability_material
THEN include shelf_life_or_age state
E9:
IF service_level_target_changes
THEN recompute safety_stock_and_total cost
}
RECURSION {
ENTRY = InventoryOptimisation
EXPAND(InventoryOptimisation) -> [
InventorySystem,
StockLevel,
OnHandInventory,
InventoryPosition,
Demand,
DemandRate,
LeadTime,
Replenishment,
OrderQuantity,
ReorderPoint,
SafetyStock,
CycleStock,
PipelineInventory,
HoldingCost,
OrderingCost,
SetupCost,
ShortageCost,
BackorderCost,
LostSalesCost,
PurchaseCost,
ServiceLevel,
CycleServiceLevel,
FillRate,
StockoutProbability,
EconomicOrderQuantity,
EOQModel,
ReorderPointPolicy,
ContinuousReviewPolicy,
PeriodicReviewPolicy,
BaseStockPolicy,
OrderUpToPolicy,
NewsvendorModel,
SinglePeriodInventory,
MultiPeriodInventory,
DynamicLotSizing,
WagnerWhitinModel,
QuantityDiscount,
Backordering,
LostSales,
PerishableInventory,
MultiItemInventory,
CapacityConstrainedInventory,
MultiEchelonInventory,
SafetyFactor,
DemandUncertainty,
LeadTimeUncertainty,
ForecastError,
InventoryBalance,
InventoryPolicy
]
EXPAND(CostStructure) -> [
HoldingCost,
OrderingCost,
SetupCost,
ShortageCost,
BackorderCost,
LostSalesCost,
PurchaseCost
]
EXPAND(PolicyFamilies) -> [
EOQModel,
ContinuousReviewPolicy,
PeriodicReviewPolicy,
BaseStockPolicy,
OrderUpToPolicy,
DynamicLotSizing
]
EXPAND(UncertaintyStructure) -> [
DemandUncertainty,
LeadTimeUncertainty,
ForecastError,
SafetyStock,
ServiceLevel,
StockoutProbability
]
STOP_CONDITION =
"Stop when the demand, lead time, cost structure, review policy, order quantity, reorder trigger, safety stock, service level, uncertainty and resulting policy performance are sufficiently resolved."
}
ROUTING {
PARENT_ONTOLOGY = "Operations Research"
IMMEDIATE_CONTEXTS = [
"Operations Research Ontology",
"Resource Allocation Ontology",
"Stochastic Optimisation Ontologies",
"Supply Chain Ontologies"
]
RELATED_ONTOLOGIES = [
"Operations Research Ontology",
"Operations Research",
"Resource Allocation Ontology",
"Scheduling Ontology",
"Linear Programming Ontology",
"Integer Programming Ontology",
"Dynamic Optimisation Ontology",
"Stochastic Optimisation Ontologies",
"Robust Optimisation Ontologies",
"Probability & Statistics Ontologies",
"Queueing Theory Ontologies",
"Supply Chain Ontologies",
"Simulation Ontologies",
"Decision Theory Ontology"
]
ROUTE_RULES = [
"Inventory Optimisation -> Operations Research Ontology for operational decision semantics",
"Inventory Optimisation -> Resource Allocation for capacity and scarcity interactions",
"Inventory Optimisation -> Scheduling for coordinated replenishment timing",
"Inventory Optimisation -> Linear or Integer Programming for multi-item and capacity-constrained models",
"Inventory Optimisation -> Dynamic Optimisation for multi-period inventory control",
"Inventory Optimisation -> Stochastic Optimisation for uncertain demand and lead times",
"Inventory Optimisation -> Probability & Statistics for demand distributions and forecast error",
"Inventory Optimisation -> Queueing Theory for service-capacity interactions",
"Inventory Optimisation -> Supply Chain Ontologies for multi-echelon structures",
"Inventory Optimisation -> Simulation for policy evaluation under complex uncertainty"
]
}
UPDATE_MODEL {
MODE = "append-compatible semantic versioning"
MAJOR = "ontology-breaking conceptual change"
MINOR = "new compatible inventory models, service measures or reasoning pathways"
PATCH = "clarification, metadata or formatting correction"
RULES = [
"Preserve inventory-balance semantics.",
"Preserve order-quantity versus reorder-timing distinction.",
"Preserve safety-stock semantics.",
"Preserve service-level distinctions.",
"Preserve lost-sales versus backorder distinction.",
"Preserve single-period versus multi-period distinction.",
"Preserve deterministic versus stochastic distinction.",
"Preserve machine-readable inventory-optimisation semantics."
]
}
OUTPUT {
CANONICAL_DEFINITION =
"Inventory optimisation determines stock and replenishment policies that balance cost, availability, uncertainty and service requirements."
EOQ_SUMMARY =
"EOQ balances ordering and holding costs under classical deterministic assumptions."
REORDER_SUMMARY =
"The reorder point combines expected demand during lead time with safety stock."
SAFETY_STOCK_SUMMARY =
"Safety stock protects against demand and lead-time uncertainty."
SERVICE_SUMMARY =
"Cycle service level, fill rate and stockout probability are distinct inventory-service measures."
NEWSVENDOR_SUMMARY =
"The newsvendor model balances single-period overage and underage costs."
DYNAMIC_SUMMARY =
"Dynamic lot-sizing models optimise replenishment across multiple time periods."
MULTI_ECHELON_SUMMARY =
"Multi-echelon inventory optimisation coordinates stock across several locations or supply-chain stages."
POLICY_SUMMARY =
"Inventory policies should be evaluated jointly on total cost, service, stockout risk and average inventory."
}
FLOW {
INPUT
-> detect_inventory_optimisation_context
-> identify items_demand_rate_distribution_lead_time_costs_service_targets_review_policy_capacity_backorder_or_lostSales convention_and_uncertainty
-> classify deterministic_stochastic_singlePeriod_multiPeriod_continuousReview_periodicReview_multiItem_capacityConstrained_multiEchelon_or_perishable problem
-> select EOQ_reorderPoint_safetyStock_newsvendor_baseStock_orderUpTo_dynamicLotSizing_or_optimisation model
-> compute order_quantity_reorder_trigger_target_level_or_period_plan
-> enforce inventory_balance_capacity_and_service constraints
-> evaluate total_cost_average_inventory_orders_fill_rate_cycle_service_level_and_stockout probability
-> perform sensitivity_to demand_lead_time_cost_service_and_forecast error
-> route to operations_research_ontology resource_allocation scheduling linear_programming integer_programming dynamic_optimisation stochastic_optimisation probability_statistics queueing supply_chain simulation_or_decision_theory ontology
-> recursively_expand_required_dependencies
-> verify_result
-> assign_confidence
-> produce_semantic_output
-> END
}
SEMANTIC_SUMMARY {
"The Inventory Optimisation Ontology defines mathematical stock and replenishment decisions. It supports on-hand and pipeline inventory, inventory position, demand, lead times, ordering, holding and shortage costs, EOQ, reorder points, safety stock, cycle and fill-rate service measures, continuous and periodic review, base-stock and order-up-to policies, newsvendor models, dynamic lot sizing, backorders, lost sales, perishability, multi-item and capacity-constrained inventory, multi-echelon systems and uncertainty-aware inventory policy evaluation."
}
FLOW_HASH {
METHOD = "semantic-content-identity"
ID = "KIRETH-MATH-APPLIED-MATHEMATICS-INVENTORY-OPTIMISATION-ONTOLOGY-V1"
}
}
END_FLOW
Download Code
Copy to Clipboard