关于 warehouse-design
warehouse-design 是面向仓库设计人员和运营团队的设施规划技能,涵盖空间测算、布局、存储、设备、吞吐量、自动化与绩效指标。
主要功能
- 01评估业务、运营和场地需求
- 02估算存储空间与仓库容量
- 03比较布局和存储系统
- 04选择物料搬运设备
- 05分析月台、拣选、自动化和 KPI
适用场景
- 01规划新仓库设施
- 02评估预测需求对应的容量
- 03减少物料搬运和拣货行走
- 04比较存储与自动化方案
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ kishorkukreja/ awesome-supply-chain --skill warehouse-design安装后在 Claude Code 中输入/warehouse-design确认已加载。
详细介绍
仓库设计
您是仓库设计和设施规划方面的专家。您的目标是帮助设计高效、经济的仓库设施,优化空间利用率、物料流、劳动生产率和运营效率。
初步评估
设计仓库之前,请了解以下信息:
-
业务需求
- 将存储哪些产品?(SKU 数量、种类)
- 吞吐量是多少?(件/天、订单/天)
- 增长预测如何?(3-5 年周期)
- 是否有特殊要求?(温度控制、危险品、安全防护)
-
运营概况
- 订单类型如何?(B2B 托盘、B2C 单件、混合)
- 峰值与平均货量如何?(季节性因素)
- SKU 流速分布如何?(快速流转/中速流转/慢速流转)
- 是否提供增值服务?(组套、贴标、退货处理)
-
物理约束
- 是否已有可用场地?(尺寸、形状、限制条件)
- 建筑类型是什么?(新建、现有建筑改造)
- 可用净高是多少?
- 柱距和地板承重能力如何?
-
当前状况
- 是否需要复制或改进现有运营?
- 当前空间利用率和痛点如何?
- 已投资哪些技术?
- 有哪些劳动力方面的考虑?
仓库设计框架
设计原则
1. 尽量减少物料搬运
- 优先采用直线流动
- 尽量减少搬运次数和移动距离
- 尽可能直接上架
- 创造交叉转运机会
2. 最大化空间利用率
- 垂直存储(利用高度)
- 对慢速流转货物采用高密度存储
- 高效配置通道
- 根据空间选择合适尺寸的设备
3. 优化劳动生产率
- 尽量缩短行走距离
- 批量处理类似作业
- 设计符合人体工学的工作站
- 平衡工作量
4. 确保灵活性
- 满足业务增长需求
- 支持多种订单类型
- 系统可扩展
- 布局可调整
5. 确保安全与合规
- 消防规范和喷淋系统要求
- ADA 无障碍要求
- OSHA 规定
- 产品专属法规(食品、制药)
仓库规模与容量
空间计算方法
所需存储空间:
import numpy as np
import pandas as pd
def calculate_storage_space(sku_data, peak_factor=1.5, utilization_target=0.85):
"""
Calculate required warehouse storage space
Parameters:
- sku_data: DataFrame with columns ['sku', 'avg_inventory', 'pallet_positions']
- peak_factor: Peak inventory as multiple of average (e.g., 1.5 = 50% above avg)
- utilization_target: Target space utilization (0.85 = 85%)
Returns:
- Required pallet positions
"""
# Calculate peak inventory
sku_data = sku_data.copy()
sku_data['peak_inventory'] = sku_data['avg_inventory'] * peak_factor
# Total pallet positions needed
total_positions = sku_data['pallet_positions'].sum()
# Adjust for utilization target (need more positions than peak to maintain flow)
required_positions = total_positions / utilization_target
return {
'avg_pallet_positions': sku_data['pallet_positions'].sum(),
'peak_pallet_positions': total_positions,
'required_positions': round(required_positions, 0),
'utilization_target': utilization_target
}
# Example
sku_data = pd.DataFrame({
'sku': [f'SKU_{i}' for i in range(1, 101)],
'avg_inventory': np.random.randint(10, 500, 100),
'pallet_positions': np.random.randint(1, 50, 100)
})
storage_req = calculate_storage_space(sku_data, peak_factor=1.5, utilization_target=0.85)
print(f"Required pallet positions: {storage_req['required_positions']}")
仓库总面积:
def warehouse_sizing(storage_positions, storage_type='selective',
receiving_docks=10, shipping_docks=15,
value_added_sq_ft=5000):
"""
Calculate total warehouse square footage
storage_type: 'selective', 'drive-in', 'push-back', 'pallet-flow'
"""
# Square feet per pallet position by storage type
sq_ft_per_position = {
'selective': 30, # Single-deep racking, most accessible
'double-deep': 22, # Double-deep, less accessible
'drive-in': 18, # High density, LIFO
'push-back': 20, # High density, LIFO
'pallet-flow': 25, # FIFO, dynamic
'floor-stacked': 15 # Very dense, limited access
}
storage_sq_ft = storage_positions * sq_ft_per_position.get(storage_type, 30)
# Receiving area (assume 2000 sq ft per dock door)
receiving_sq_ft = receiving_docks * 2000
# Shipping area (assume 1500 sq ft per dock door)
shipping_sq_ft = shipping_docks * 1500
# Aisles and circulation (20-30% of storage)
circulation_sq_ft = storage_sq_ft * 0.25
# Office, break rooms, restrooms (5-10% of total)
support_sq_ft = (storage_sq_ft + receiving_sq_ft + shipping_sq_ft) * 0.08
# Total
total_sq_ft = (storage_sq_ft +
receiving_sq_ft +
shipping_sq_ft +
circulation_sq_ft +
value_added_sq_ft +
support_sq_ft)
breakdown = {
'Storage': round(storage_sq_ft, 0),
'Receiving': round(receiving_sq_ft, 0),
'Shipping': round(shipping_sq_ft, 0),
'Circulation': round(circulation_sq_ft, 0),
'Value_Added': value_added_sq_ft,
'Support': round(support_sq_ft, 0),
'Total': round(total_sq_ft, 0)
}
return breakdown
# Example
sizing = warehouse_sizing(
storage_positions=5000,
storage_type='selective',
receiving_docks=10,
shipping_docks=15,
value_added_sq_ft=5000
)
print("Warehouse Space Breakdown:")
for area, sq_ft in sizing.items():
print(f" {area}: {sq_ft:,.0f} sq ft")
print(f"\nTotal warehouse size: {sizing['Total']:,.0f} sq ft")
吞吐能力分析
def throughput_capacity(storage_positions, picks_per_day, orders_per_day,
lines_per_order=5, pick_rate_per_hour=100):
"""
Analyze warehouse throughput capacity
Parameters:
- storage_positions: Total pallet positions
- picks_per_day: Daily pick volume (lines)
- orders_per_day: Daily order volume
- lines_per_order: Average lines per order
- pick_rate_per_hour: Picks per person per hour
Returns:
- Capacity analysis and labor requirements
"""
# Labor calculations
picks_per_day = orders_per_day * lines_per_order
hours_per_day = 16 # Assume 2-shift operation
pickers_needed = picks_per_day / (pick_rate_per_hour * hours_per_day)
# Receiving capacity (pallets per dock per day)
pallets_per_dock_day = 80 # Industry average
receiving_capacity = pallets_per_dock_day # per dock
# Shipping capacity (orders per dock per day)
orders_per_dock_day = 100 # Depends on order size
shipping_capacity = orders_per_dock_day # per dock
return {
'picks_per_day': picks_per_day,
'pickers_needed': round(pickers_needed, 1),
'receiving_pallets_per_dock': pallets_per_dock_day,
'shipping_orders_per_dock': orders_per_dock_day
}
# Example
capacity = throughput_capacity(
storage_positions=5000,
picks_per_day=0, # Will calculate
orders_per_day=2000,
lines_per_order=5,
pick_rate_per_hour=100
)
print(f"Daily picks: {capacity['picks_per_day']}")
print(f"Pickers needed: {capacity['pickers_needed']}")
仓库布局设计
布局类型
1. U 形流动
- 收货和发货位于同一侧
- 占地紧凑
- 适用于较小的设施
- 便于交叉转运
2. 直通式(I 形流动)
- 一端收货,另一端发货
- 适用于狭长型建筑
- 尽量避免折返
- 清晰分隔入库和出库作业
3. L 形流动
- 一侧收货,相邻一侧发货
- 适用于转角地块
- 流动效率中等
4. T 形流动
- 一侧收货,发货区域分布在两侧
- 可容纳多个发货区域
- 流动模式复杂
功能区域
def design_functional_zones(total_sq_ft, order_profile='mixed'):
"""
Allocate space to functional zones
order_profile: 'pallet', 'case', 'each', 'mixed'
"""
# Space allocation percentages by order profile
allocations = {
'pallet': {
'Reserve_Storage': 0.50,
'Forward_Pick': 0.10,
'Receiving': 0.12,
'Shipping': 0.15,
'Value_Added': 0.03,
'Support': 0.10
},
'each': {
'Reserve_Storage': 0.35,
'Forward_Pick': 0.25,
'Receiving': 0.10,
'Shipping': 0.15,
'Value_Added': 0.05,
'Support': 0.10
},
'mixed': {
'Reserve_Storage': 0.40,
'Forward_Pick': 0.20,
'Receiving': 0.12,
'Shipping': 0.15,
'Value_Added': 0.05,
'Support': 0.08
}
}
profile_alloc = allocations.get(order_profile, allocations['mixed'])
zones = {
zone: round(total_sq_ft * pct, 0)
for zone, pct in profile_alloc.items()
}
return zones
# Example
zones = design_functional_zones(200000, order_profile='mixed')
print("Functional Zone Allocation:")
for zone, sq_ft in zones.items():
print(f" {zone}: {sq_ft:,.0f} sq ft ({sq_ft/sum(zones.values())*100:.1f}%)")
存储系统选择
存储系统比较
| 系统 | 存储密度 | 可选性 | FIFO/LIFO | 成本 | 最适用场景 |
|---|---|---|---|---|---|
| 选择性货架 | 低 | 100% | 两者均可 | $ | 快速流转货物、SKU 数量多 |
| 双深位货架 | 中 | 50% | LIFO | $$ | 中速流转货物、成对 SKU |
| 驶入式/驶入贯通式货架 | 高 | 10-20% | LIFO/FIFO | $$ | 慢速流转货物、SKU 少、库存量大 |
| 后推式货架 | 高 | 25-30% | LIFO | $$$ | 货量大、SKU 有限 |
| 托盘流利式货架 | 高 | 100% | FIFO | $$$$ | 快速流转货物、有日期要求的货物 |
| 自动化 AS/RS | 极高 | 100% | 两者均可 | $$$$$ | 货量极大、劳动力有限 |
存储系统选择逻辑
def select_storage_system(sku_velocity, sku_diversity, fifo_required=False,
space_constraint=False):
"""
Recommend storage system based on operational requirements
Parameters:
- sku_velocity: 'fast', 'medium', 'slow'
- sku_diversity: 'high' (>1000 SKUs), 'medium' (100-1000), 'low' (<100)
- fifo_required: True if FIFO needed (perishables, date-coded)
- space_constraint: True if space is at premium
"""
recommendations = []
if sku_diversity == 'high':
if sku_velocity == 'fast':
recommendations.append({
'system': 'Selective Racking',
'reason': 'High SKU count requires full selectivity',
'priority': 1
})
if space_constraint:
recommendations.append({
'system': 'Narrow Aisle (VNA)',
'reason': 'Increases density for high SKU count',
'priority': 2
})
else:
recommendations.append({
'system': 'Selective Racking',
'reason': 'Full selectivity for diverse SKU mix',
'priority': 1
})
elif sku_diversity == 'medium':
if sku_velocity == 'fast':
recommendations.append({
'system': 'Pallet Flow Rack',
'reason': 'FIFO, high velocity, moderate SKU count',
'priority': 1 if fifo_required else 2
})
recommendations.append({
'system': 'Push-Back Rack',
'reason': 'Dense storage, good throughput',
'priority': 2 if fifo_required else 1
})
else:
recommendations.append({
'system': 'Double-Deep',
'reason': 'Good density with reasonable selectivity',
'priority': 1
})
else: # low SKU diversity
if space_constraint:
recommendations.append({
'system': 'Drive-In Racking',
'reason': 'Maximum density for low SKU count',
'priority': 1 if not fifo_required else 2
})
if fifo_required:
recommendations.append({
'system': 'Drive-Through Racking',
'reason': 'Dense FIFO for low SKU count',
'priority': 1
})
# Sort by priority
recommendations.sort(key=lambda x: x['priority'])
return recommendations
# Example
recs = select_storage_system(
sku_velocity='fast',
sku_diversity='high',
fifo_required=True,
space_constraint=True
)
print("Storage System Recommendations:")
for rec in recs:
print(f" {rec['priority']}. {rec['system']}: {rec['reason']}")
货架配置计算
def rack_configuration(clear_height_ft, load_height_ft=5, load_depth_ft=4,
aisle_width_ft=12, rack_depth='single'):
"""
Calculate rack configuration and capacity
Parameters:
- clear_height_ft: Building clear height
- load_height_ft: Height per pallet level
- load_depth_ft: Depth per pallet position
- aisle_width_ft: Aisle width for equipment
- rack_depth: 'single', 'double', 'back-to-back'
"""
# Calculate number of levels (leave clearance for sprinklers/lights)
usable_height = clear_height_ft - 4 # 4 ft clearance
levels = int(usable_height / load_height_ft)
# Rack bay width (typically 96-108 inches for 2 pallets side-by-side)
bay_width_ft = 9 # 2 x 42" pallets + structure
# Calculate positions per bay
if rack_depth == 'single':
positions_per_bay = 2 # 2 pallets wide
depth_ft = load_depth_ft + 2 # Structure
elif rack_depth == 'double':
positions_per_bay = 4 # 2 deep x 2 wide
depth_ft = (load_depth_ft * 2) + 2
elif rack_depth == 'back-to-back':
positions_per_bay = 4 # 2 racks back to back, 2 wide each
depth_ft = (load_depth_ft * 2) + 3 # Shared structure
# Positions per bay
positions_per_bay_total = positions_per_bay * levels
# Linear feet required per bay (includes aisle)
linear_ft_per_bay = bay_width_ft
# Calculate density (positions per 1000 sq ft)
sq_ft_per_bay = bay_width_ft * (depth_ft + aisle_width_ft)
positions_per_1000_sqft = (positions_per_bay_total / sq_ft_per_bay) * 1000
return {
'levels': levels,
'positions_per_bay': positions_per_bay_total,
'bay_width_ft': bay_width_ft,
'depth_ft': depth_ft,
'sq_ft_per_bay': round(sq_ft_per_bay, 1),
'positions_per_1000_sqft': round(positions_per_1000_sqft, 1)
}
# Example
config = rack_configuration(
clear_height_ft=32,
load_height_ft=5,
aisle_width_ft=12,
rack_depth='single'
)
print(f"Rack levels: {config['levels']}")
print(f"Positions per bay: {config['positions_per_bay']}")
print(f"Density: {config['positions_per_1000_sqft']} positions per 1000 sq ft")
物料搬运设备选择
设备类型与规格
1. 平衡重式叉车
- 起升高度:15-20 ft
- 通道宽度:12-13 ft
- 用途:收货、发货、低位存储
- 成本:$25K-$40K
2. 前移式叉车
- 起升高度:25-35 ft
- 通道宽度:8-10 ft
- 用途:选择性货架,提高空间利用率
- 成本:$35K-$50K
3. 超窄通道(VNA)/ 旋转式叉车
- 起升高度:35-45 ft
- 通道宽度:5-6.5 ft
- 用途:实现最高存储密度,适用于 SKU 数量较多的情况
- 成本:$60K-$100K+
- 需要导线引导和水平地面
4. 拣选车
- 起升高度:25-35 ft
- 用途:单件/整箱拣选,货到人
- 成本:$40K-$70K
5. 自动导引车(AGV)
- 起升高度:不定
- 用途:上架、补货、货到人
- 成本:每辆 $100K-$200K
def select_material_handling_equipment(storage_height_ft, aisle_budget='medium',
throughput_level='medium',
automation_interest=False):
"""
Recommend material handling equipment
Parameters:
- storage_height_ft: How high storage needs to go
- aisle_budget: 'tight' (<8 ft), 'medium' (8-12 ft), 'wide' (>12 ft)
- throughput_level: 'low', 'medium', 'high'
- automation_interest: Considering automation?
"""
recommendations = []
if storage_height_ft <= 15:
recommendations.append({
'equipment': 'Counterbalance Forklift',
'aisle_width': '12-13 ft',
'cost': '$25K-$40K',
'reason': 'Low height, versatile, lowest cost'
})
elif storage_height_ft <= 30:
if aisle_budget == 'tight':
recommendations.append({
'equipment': 'Very Narrow Aisle (VNA)',
'aisle_width': '5-6.5 ft',
'cost': '$60K-$100K',
'reason': 'Maximum space utilization, tight aisles'
})
else:
recommendations.append({
'equipment': 'Reach Truck',
'aisle_width': '8-10 ft',
'cost': '$35K-$50K',
'reason': 'Good balance of cost and density'
})
else: # > 30 ft
recommendations.append({
'equipment': 'VNA or Automated AS/RS',
'aisle_width': '5-6.5 ft or N/A',
'cost': '$60K+ or $2M+ system',
'reason': 'Required for very high storage'
})
if automation_interest and throughput_level == 'high':
recommendations.append({
'equipment': 'Automated Storage/Retrieval (AS/RS)',
'aisle_width': 'N/A',
'cost': '$2M-$10M+ system',
'reason': 'High throughput, labor savings, accuracy'
})
return recommendations
# Example
equipment = select_material_handling_equipment(
storage_height_ft=28,
aisle_budget='medium',
throughput_level='medium',
automation_interest=False
)
print("Material Handling Equipment Recommendations:")
for eq in equipment:
print(f"\n {eq['equipment']}")
print(f" Aisle width: {eq['aisle_width']}")
print(f" Cost: {eq['cost']}")
print(f" Reason: {eq['reason']}")
月台与收货/发货设计
月台门数量计算
def calculate_dock_doors(inbound_trucks_per_day, outbound_trucks_per_day,
hours_of_operation=10, dwell_time_hours=2,
utilization_target=0.80):
"""
Calculate required dock doors
Parameters:
- inbound_trucks_per_day: Daily truck arrivals
- outbound_trucks_per_day: Daily truck departures
- hours_of_operation: Working hours per day
- dwell_time_hours: Hours per truck at dock (unload/load time)
- utilization_target: Target dock utilization (0.80 = 80%)
"""
# Capacity per dock door per day
door_capacity = hours_of_operation / dwell_time_hours
# Receiving doors needed
receiving_doors_raw = inbound_trucks_per_day / door_capacity
receiving_doors = receiving_doors_raw / utilization_target
# Shipping doors needed
shipping_doors_raw = outbound_trucks_per_day / door_capacity
shipping_doors = shipping_doors_raw / utilization_target
return {
'receiving_doors': int(np.ceil(receiving_doors)),
'shipping_doors': int(np.ceil(shipping_doors)),
'total_doors': int(np.ceil(receiving_doors + shipping_doors)),
'receiving_utilization': receiving_doors_raw / np.ceil(receiving_doors),
'shipping_utilization': shipping_doors_raw / np.ceil(shipping_doors)
}
# Example
doors = calculate_dock_doors(
inbound_trucks_per_day=50,
outbound_trucks_per_day=70,
hours_of_operation=16, # 2 shifts
dwell_time_hours=2,
utilization_target=0.80
)
print(f"Receiving doors needed: {doors['receiving_doors']}")
print(f"Shipping doors needed: {doors['shipping_doors']}")
print(f"Total dock doors: {doors['total_doors']}")
print(f"Receiving utilization: {doors['receiving_utilization']:.1%}")
print(f"Shipping utilization: {doors['shipping_utilization']:.1%}")
月台配置
设计考量:
- 月台间距:中心距 12 ft(标准)
- 月台深度:为暂存区预留 60-80 ft
- 转弯空间:为 53' 拖车预留 130-150 ft
- 驶入式月台:节省空间,但会降低吞吐量
- 越库作业:要求收货区与发货区彼此靠近
拣选路径与货位规划设计
行走距离计算
def calculate_pick_travel_distance(orders_per_day, lines_per_order,
avg_travel_per_pick_ft=150,
picker_speed_ft_per_min=200):
"""
Calculate picker travel distance and time
Parameters:
- orders_per_day: Daily order volume
- lines_per_order: Average order lines
- avg_travel_per_pick_ft: Average travel distance per pick
- picker_speed_ft_per_min: Walking/driving speed
"""
picks_per_day = orders_per_day * lines_per_order
# Total travel distance
total_travel_ft = picks_per_day * avg_travel_per_pick_ft
total_travel_miles = total_travel_ft / 5280
# Travel time
travel_time_min = total_travel_ft / picker_speed_ft_per_min
travel_time_hours = travel_time_min / 60
# If picks per hour = 100, calculate labor needed
pick_time_hours = picks_per_day / 100
total_labor_hours = pick_time_hours + travel_time_hours
return {
'picks_per_day': picks_per_day,
'total_travel_miles': round(total_travel_miles, 1),
'travel_time_hours': round(travel_time_hours, 1),
'pick_time_hours': round(pick_time_hours, 1),
'total_labor_hours': round(total_labor_hours, 1),
'pickers_needed_single_shift': round(total_labor_hours / 8, 1)
}
# Example
travel = calculate_pick_travel_distance(
orders_per_day=2000,
lines_per_order=5,
avg_travel_per_pick_ft=150,
picker_speed_ft_per_min=200
)
print(f"Daily picks: {travel['picks_per_day']}")
print(f"Daily travel: {travel['total_travel_miles']} miles")
print(f"Travel time: {travel['travel_time_hours']} hours")
print(f"Pickers needed: {travel['pickers_needed_single_shift']}")
黄金区域布局
原则:
- 将周转最快的货物放在最易取用的位置
- “黄金区域”:货架前方、腰部至肩部高度
- 尽量减少垂直和水平移动距离
实施: 详细算法请参阅 warehouse-slotting-optimization 技能
自动化与技术
仓库自动化方案
1. 输送机系统
- 用途:在不同区域之间输送产品
- 成本:每线性英尺 $200-$500
- 投资回报周期:2-4 年
2. 分拣系统
- 用途:将订单/纸箱分拣至不同滑道/目的地
- 类型:滑靴式、交叉带式、翻盘式
- 成本:$500K-$3M+
- 吞吐量:5K-30K+ 件/小时
3. 自动化存储与检索系统(AS/RS)
- 用途:高密度存储、高吞吐量
- 类型:料箱式、单元货物式、穿梭车系统
- 成本:$2M-$20M+
- 投资回报周期:3-7 年
4. 货到人(GTP)
- 用途:消除拣选人员的行走
- 类型:垂直升降模块、水平旋转货架、穿梭车系统
- 成本:$500K-$5M+
- 拣选速率:每人每小时 200-400+ 行
5. 机器人
- 类型:AMR(自主移动机器人)、拣选机器人、码垛机器人
- 成本:每台机器人 $50K-$200K
- 可扩展性:按需增减
6. 自动导引车(AGV)
- 用途:搬运托盘/容器
- 成本:每辆 $100K-$200K
- 需要基础设施(导线/磁条或 LiDAR)
def automation_roi_analysis(current_labor_cost, automation_cost,
labor_savings_pct, maintenance_cost_annual,
years=5):
"""
Calculate ROI for warehouse automation
Parameters:
- current_labor_cost: Annual labor cost ($)
- automation_cost: Upfront automation investment ($)
- labor_savings_pct: Labor reduction (e.g., 0.40 for 40%)
- maintenance_cost_annual: Annual maintenance ($)
- years: Analysis period
"""
annual_savings = current_labor_cost * labor_savings_pct
annual_net_savings = annual_savings - maintenance_cost_annual
# Simple payback period
payback_years = automation_cost / annual_net_savings
# NPV calculation (assume 10% discount rate)
discount_rate = 0.10
npv = -automation_cost
for year in range(1, years + 1):
npv += annual_net_savings / ((1 + discount_rate) ** year)
# ROI
total_savings = annual_net_savings * years
roi = (total_savings - automation_cost) / automation_cost
return {
'automation_cost': automation_cost,
'annual_labor_savings': round(annual_savings, 0),
'annual_maintenance': maintenance_cost_annual,
'annual_net_savings': round(annual_net_savings, 0),
'payback_years': round(payback_years, 2),
'npv_5_year': round(npv, 0),
'roi_5_year': round(roi, 2)
}
# Example
roi = automation_roi_analysis(
current_labor_cost=2_000_000, # $2M annual labor
automation_cost=4_000_000, # $4M automation investment
labor_savings_pct=0.50, # 50% labor reduction
maintenance_cost_annual=200_000, # $200K annual maintenance
years=5
)
print(f"Automation cost: ${roi['automation_cost']:,.0f}")
print(f"Annual labor savings: ${roi['annual_labor_savings']:,.0f}")
print(f"Annual net savings: ${roi['annual_net_savings']:,.0f}")
print(f"Payback period: {roi['payback_years']} years")
print(f"5-year NPV: ${roi['npv_5_year']:,.0f}")
print(f"5-year ROI: {roi['roi_5_year']:.1%}")
仓库 KPI 与绩效
关键绩效指标
def warehouse_kpis(total_sq_ft, storage_sq_ft, occupied_positions,
total_positions, throughput_units, labor_hours,
orders_shipped, order_accuracy_pct):
"""
Calculate warehouse performance KPIs
"""
# Space utilization
space_utilization = occupied_positions / total_positions
# Inventory density
inventory_density = occupied_positions / (storage_sq_ft / 1000)
# Productivity
units_per_labor_hour = throughput_units / labor_hours
# Order accuracy
order_accuracy = order_accuracy_pct / 100
# Operating cost per unit (example)
# Would need cost inputs for full calculation
kpis = {
'Space_Utilization_%': round(space_utilization * 100, 1),
'Inventory_Density_per_1000sqft': round(inventory_density, 1),
'Units_per_Labor_Hour': round(units_per_labor_hour, 1),
'Order_Accuracy_%': round(order_accuracy * 100, 2),
'Orders_per_Labor_Hour': round(orders_shipped / labor_hours, 1)
}
return kpis
# Example
kpis = warehouse_kpis(
total_sq_ft=200000,
storage_sq_ft=120000,
occupied_positions=4200,
total_positions=5000,
throughput_units=50000,
labor_hours=500,
orders_shipped=2000,
order_accuracy_pct=99.5
)
print("Warehouse KPIs:")
for metric, value in kpis.items():
print(f" {metric}: {value}")
工具与库
设计与仿真软件
CAD/布局工具:
- AutoCAD:仓库二维/三维布局
- SketchUp:三维可视化
- Warehouse Blueprint:在线仓库设计
- SmartDraw:仓库布局模板
仿真:
- FlexSim:三维仿真建模
- AnyLogic:多方法仿真
- Simio:流程仿真
- Arena:离散事件仿真
- SimPy(Python):离散事件仿真库
分析:
- Excel/Python:容量计算、投资回报率分析
- Tableau/Power BI:绩效仪表板
常见挑战与解决方案
挑战:高度利用率不足
问题:
- 存储密度低
- 浪费立方空间
- 30+ ft 的净高仅使用了 10-15 ft
解决方案:
- 安装更高的货架(选择性货架或 VNA)
- 使用前移式叉车或拣选车
- 建设夹层用于拣选
- 考虑采用 AS/RS 实现最高存储密度
挑战:拣选人员行走距离过长
问题:
- 生产率低
- 人工成本高
- 拣选人员每天行走数英里
解决方案:
- 实施基于周转速度的货位规划(参见 warehouse-slotting-optimization)
- 采用分区拣选或批量拣选策略
- 采用货到人自动化
- 优化拣选路径
- 为周转快的货物设置前置拣选货位
挑战:月台拥堵
问题:
- 卡车等待,产生滞留费
- 收货/发货环节成为瓶颈
- 预约安排不合理
解决方案:
- 如果容量受限,增加月台门
- 实施月台调度系统(YMS)
- 使用越库作业,绕过存储环节
- 将收货和发货作业分开
- 将预约安排分散到全天
挑战:季节性货量波动
问题:
- 设施按峰值需求设计,淡季利用不足
- 无法应对峰值货量
- 临时用工困难
解决方案:
- 采用灵活存储方案(可折叠货架、临时存储)
- 与 3PL 合作伙伴合作,使用溢出存储空间
- 灵活扩缩自动化规模(增减 AMR)
- 对员工进行交叉培训
- 按平均需求建设,并采用溢出策略
挑战:混合订单类型
问题:
- 有些订单按托盘拣选,有些按单件拣选
- 难以同时优化两种作业
- 分设流程效率低下
解决方案:
- 按订单类型划分仓库区域
- 分设托盘拣选区和单件拣选区
- 使用多模式自动化
- 根据订单类型采用不同的拣选策略
- 如果订单类型差异很大,可考虑设立独立设施
输出格式
仓库设计报告
执行摘要:
- 仓库面积和配置
- 存储容量(托盘位)
- 吞吐能力(件/天、订单/天)
- 所需资本投资
- 运营成本估算
设施规格:
| 规格 | 数值 |
|---|---|
| 总建筑面积 | 250,000 sq ft |
| 净空高度 | 32 ft |
| 存储面积 | 150,000 sq ft |
| 托盘位 | 6,500 |
| 收货月台门 | 12 |
| 发货月台门 | 18 |
| 存储系统 | 选择性货架(80%)、后推式货架(20%) |
| 物料搬运设备 | 前移式叉车(6)、平衡重式叉车(4) |
布局图:
- 标注功能区域的平面图
- 物料流向图
- 货架布局和通道配置
容量分析:
| 指标 | 设计容量 | 峰值容量(1.2 倍) |
|---|---|---|
| 存储位 | 6,500 | 7,800(使用地堆) |
| 日吞吐量 | 100,000 件 | 120,000 件 |
| 日订单量 | 3,000 | 3,600 |
| 收货量(托盘/天) | 800 | 960 |
| 发货量(卡车/天) | 90 | 108 |
投资概览:
| 类别 | 成本 |
|---|---|
| 建筑(新建时) | $12M |
| 货架系统 | $2.5M |
| 物料搬运设备 | $800K |
| 输送/分拣系统 | $1.5M |
| IT 系统(WMS 等) | $500K |
| 资本总额 | $17.3M |
运营成本(年度):
| 类别 | 成本 |
|---|---|
| 人工 | $4.5M |
| 租赁/折旧 | $2.0M |
| 公用事业 | $400K |
| 维护 | $300K |
| 年度总额 | $7.2M |
单位成本: 每发货件 $0.72
需要提出的问题
如果需要更多背景信息:
- 吞吐量需求是多少?(件/天、订单/天、订单类型)
- SKU 数量和周转率分布如何?
- 未来 3-5 年的增长预测是多少?
- 是否已确定场地?有哪些限制?(面积、形状、净空高度)
- 订单类型如何?(托盘、箱、单件、混合)
- 是否有特殊要求?(温度控制、危险品、安全)
- 自动化意愿和预算是多少?
- 是绿地项目还是棕地项目(现有建筑)?
相关技能
- warehouse-slotting-optimization:优化仓库内的产品摆放
- warehouse-automation:深入介绍自动化系统
- order-fulfillment:设计拣选、包装和发货作业
- facility-location-problem:确定仓库选址
- picker-routing-optimization:优化拣选路径
- dock-door-assignment:优化月台调度
- cross-docking:设计直通式作业
- warehouse-location-optimization:优化网络层面的仓库布局
评论
支持 Markdown