Wednesday, 1 October 2025

Economic Order Quantity (EOQ) For Inventory

Paste this question in Grok. 

Lisa is budgeting to use 12 000 units of material Graphene during the year. Production will be distributed evenly throughout the year. The company does not carry any safety (buffer) levels of inventory.

Additional information

Cost of material Graphene $60 per unit

Ordering costs $500 per order

Inventory holding costs 8% of the average inventory value per annum

Order sizes available 1 000, 1 500, 2 000 and 3 000 units

Calculate the optimum order size using the Economic Order Quantity (EOQ) formula. 

Economic order quantity = √(2DS/H)= 1 581 units (1 500 order size)Graph Plotted by Grok


EOQ: 1581.14 units

Total Costs for Available Order Sizes:
Order Size 1000 units: Total Cost = $8400.00
Order Size 1500 units: Total Cost = $7600.00
Order Size 2000 units: Total Cost = $7800.00
Order Size 3000 units: Total Cost = $9200.00

Optimal Order Size: 1,500 units with Total Cost = $7600.00

Python Code From Grok
import numpy as np
import matplotlib.pyplot as plt

# Given data
D = 12000  # Annual demand (units)
S = 500    # Ordering cost per order ($)
H = 4.80   # Holding cost per unit per year ($)

# Calculate EOQ
EOQ = np.sqrt((2 * D * S) / H)

# Available order sizes
order_sizes = [1000, 1500, 2000, 3000]

# Function to calculate total cost
def total_cost(Q, D, S, H):
    ordering_cost = (D / Q) * S
    holding_cost = (Q / 2) * H
    return ordering_cost + holding_cost

# Calculate total costs for available order sizes
total_costs = [total_cost(Q, D, S, H) for Q in order_sizes]

# Calculate total cost for EOQ (for reference)
eoq_cost = total_cost(EOQ, D, S, H)

# Generate data for plotting the total cost curve
Q_range = np.arange(500, 3500, 10)  # Range of order quantities for smooth curve
tc_values = [total_cost(Q, D, S, H) for Q in Q_range]

# Plotting
plt.figure(figsize=(10, 6))
plt.plot(Q_range, tc_values, label='Total Cost Curve', color='blue')
plt.scatter(order_sizes, total_costs, color='red', label='Available Order Sizes', zorder=5)
plt.scatter([EOQ], [eoq_cost], color='green', label=f'EOQ ({EOQ:.2f} units)', zorder=5)
plt.axvline(x=1500, color='purple', linestyle='--', label='Optimal Order Size (1,500 units)', alpha=0.5)

# Add labels and title
plt.xlabel('Order Quantity (Q)')
plt.ylabel('Total Annual Cost ($)')
plt.title('EOQ and Total Inventory Cost')
plt.legend()
plt.grid(True)

# Show plot
plt.show()

# Print results
print(f"EOQ: {EOQ:.2f} units")
print("\nTotal Costs for Available Order Sizes:")
for Q, cost in zip(order_sizes, total_costs):
    print(f"Order Size {Q} units: Total Cost = ${cost:.2f}")
print(f"\nOptimal Order Size: 1,500 units with Total Cost = ${total_costs[1]:.2f}")

No comments:

Post a Comment

Machine Learning: Nearest Neighbor (NN) algorithm for stock transfers between warehouses

  🏭 Scenario: Nearest Neighbor Algorithm for Warehouse Stock Transfer Background A company, GrapheneTech , distributes graphene sheets a...