The overall objective of inventory (stock) control is to maintain inventory levels to that the total costs of holding stocks is minimise. A popular method of implementing stock control is through the use of inventory (stock) control charts and algorithms that automate the process.
Q=EOQ units
D=Demand in units (typically on an annual basis)
S=Order cost (per purchase order)
H=Holding costs (per unit, per year)
Matlab Script:
Economic Order Quantity – EOQ Definition
By Will Kenton
Reviewed By Janet Berry-Johnson
Updated Feb 10, 2020
What Is Economic Order Quantity (EOQ)?
Economic order quantity (EOQ) is the ideal order quantity a company should purchase to minimize inventory costs such as holding costs, shortage costs, and order costs. This production-scheduling model was developed in 1913 by Ford W. Harris and has been refined over time.1 The formula assumes that demand, ordering, and holding costs all remain constant.
The EOQ is a company's optimal order quantity that minimizes its total costs related to ordering, receiving, and holding inventory.
The EOQ formula is best applied in situations where demand, ordering, and holding costs remain constant over time.
Formula and Calculation of Economic Order Quantity (EOQ)
The formula for EOQ is:
Reviewed By Janet Berry-Johnson
Updated Feb 10, 2020
What Is Economic Order Quantity (EOQ)?
Economic order quantity (EOQ) is the ideal order quantity a company should purchase to minimize inventory costs such as holding costs, shortage costs, and order costs. This production-scheduling model was developed in 1913 by Ford W. Harris and has been refined over time.1 The formula assumes that demand, ordering, and holding costs all remain constant.
The EOQ is a company's optimal order quantity that minimizes its total costs related to ordering, receiving, and holding inventory.
The EOQ formula is best applied in situations where demand, ordering, and holding costs remain constant over time.
Formula and Calculation of Economic Order Quantity (EOQ)
The formula for EOQ is:
Q=EOQ units
D=Demand in units (typically on an annual basis)
S=Order cost (per purchase order)
H=Holding costs (per unit, per year)
Matlab Simulation
The Simulation descibe a 300 days of stock. Each time the stock is at an Order Point, an Order of constant quantity is ordered to wholesaler.
The Quntity of Consuming the stock and the supply days change randomally in normal distribution.
The model take safety stock equal 2*sigma where sigma is the standard deviation of multipliction of the random variables : stock consume per day and days of supply.
Inventory Model |
Matlab Script:
% This Script Plot The Inventory Model of an item
pkg load statistics
clear
item_name = "Filter"
Main_ConsumePerDay = 40 % Main of items consume per day
Stdev_ConsumePerDay = 10 % Standard deviation of consume items per day
Main_SupplyDay = 10 % Main of the days to supply the item
Stdev_SupplyDay = 3 % Standard deviation of the days to supply the item
NumberDays = 300 % Number of days for simulation
N_STD = 2 % Number of standard deviation use for insurance inventory
% Calculate Quantity per Order
DaysPerYear = 250
interest_rate = 0.15 % The interest rate to hold stock
k = 300; % Order Coast
item_price = 70 % Price of unit item
h = interest_rate * item_price % price of holding one item per year
ConsumePerYear = DaysPerYear * Main_ConsumePerDay % Consume per Year
Optimal_QuntityOrder = round(sqrt(2*ConsumePerYear*k/h)); % Optimal Quntity Per Order
EOQ = Optimal_QuntityOrder % Economic Order Quantity
OrderExist = false
% Main consume during the supply period (in days)
MainConsumeSupplyDays = Main_ConsumePerDay*Main_SupplyDay
% standard ddeviation of consume during supply period
StdevConsumeSupplyDays = sqrt(Stdev_ConsumePerDay^2*Stdev_SupplyDay^2+
Stdev_ConsumePerDay^2*Main_SupplyDay^2+ Stdev_SupplyDay^2*Main_ConsumePerDay^2)
% Insurance inventory
InsureInventory = N_STD * StdevConsumeSupplyDays
% Order Point
OrderPoint = InsureInventory + MainConsumeSupplyDays %+ EOQ
StartStock = InsureInventory + EOQ
% Array of random consume per day of the utem
ConsumePerDayVal = normrnd(Main_ConsumePerDay, Stdev_ConsumePerDay,1, NumberDays);
stock(1) = StartStock;
i_order = 1 % index for order points
for i=1:NumberDays
% Stock is under order point but no order yet
if (stock(i) < OrderPoint) && (OrderExist == false)
stock(i)
OrderExist = true;
j=1;
N_SupplyDays = max(1, round(normrnd(Main_SupplyDay, Stdev_SupplyDay)))
Xorder(i_order) = i;
Yorder(i_order) = stock(i);
i_order = i_order+1;
% Stock is under order point and order exist
elseif (stock(i) < OrderPoint)
j=j+1;
if (j-N_SupplyDays)>0.1
OrderExist = false;
stock(i) = stock(i) + EOQ;
end
end
stock(i+1) = stock(i) - ConsumePerDayVal(i);
end
plot(stock(1:NumberDays))
axis([0 NumberDays 0 inf])
title('EOQ Model - 2*Sigma')
xlabel('Days')
ylabel('Stock')
hold
plot(Xorder, Yorder, 'ro')
grid
x(1:NumberDays) = 1:NumberDays;
y(1:NumberDays) = InsureInventory;
plot( y, 'b--')
legend('Stock','Order point', 'Insurance Stock Level')
pkg load statistics
clear
item_name = "Filter"
Main_ConsumePerDay = 40 % Main of items consume per day
Stdev_ConsumePerDay = 10 % Standard deviation of consume items per day
Main_SupplyDay = 10 % Main of the days to supply the item
Stdev_SupplyDay = 3 % Standard deviation of the days to supply the item
NumberDays = 300 % Number of days for simulation
N_STD = 2 % Number of standard deviation use for insurance inventory
% Calculate Quantity per Order
DaysPerYear = 250
interest_rate = 0.15 % The interest rate to hold stock
k = 300; % Order Coast
item_price = 70 % Price of unit item
h = interest_rate * item_price % price of holding one item per year
ConsumePerYear = DaysPerYear * Main_ConsumePerDay % Consume per Year
Optimal_QuntityOrder = round(sqrt(2*ConsumePerYear*k/h)); % Optimal Quntity Per Order
EOQ = Optimal_QuntityOrder % Economic Order Quantity
OrderExist = false
% Main consume during the supply period (in days)
MainConsumeSupplyDays = Main_ConsumePerDay*Main_SupplyDay
% standard ddeviation of consume during supply period
StdevConsumeSupplyDays = sqrt(Stdev_ConsumePerDay^2*Stdev_SupplyDay^2+
Stdev_ConsumePerDay^2*Main_SupplyDay^2+ Stdev_SupplyDay^2*Main_ConsumePerDay^2)
% Insurance inventory
InsureInventory = N_STD * StdevConsumeSupplyDays
% Order Point
OrderPoint = InsureInventory + MainConsumeSupplyDays %+ EOQ
StartStock = InsureInventory + EOQ
% Array of random consume per day of the utem
ConsumePerDayVal = normrnd(Main_ConsumePerDay, Stdev_ConsumePerDay,1, NumberDays);
stock(1) = StartStock;
i_order = 1 % index for order points
for i=1:NumberDays
% Stock is under order point but no order yet
if (stock(i) < OrderPoint) && (OrderExist == false)
stock(i)
OrderExist = true;
j=1;
N_SupplyDays = max(1, round(normrnd(Main_SupplyDay, Stdev_SupplyDay)))
Xorder(i_order) = i;
Yorder(i_order) = stock(i);
i_order = i_order+1;
% Stock is under order point and order exist
elseif (stock(i) < OrderPoint)
j=j+1;
if (j-N_SupplyDays)>0.1
OrderExist = false;
stock(i) = stock(i) + EOQ;
end
end
stock(i+1) = stock(i) - ConsumePerDayVal(i);
end
plot(stock(1:NumberDays))
axis([0 NumberDays 0 inf])
title('EOQ Model - 2*Sigma')
xlabel('Days')
ylabel('Stock')
hold
plot(Xorder, Yorder, 'ro')
grid
x(1:NumberDays) = 1:NumberDays;
y(1:NumberDays) = InsureInventory;
plot( y, 'b--')
legend('Stock','Order point', 'Insurance Stock Level')
No comments:
Post a Comment