logistics-expert
Expert-level supply chain management, logistics optimization, warehouse systems, and fleet management
What this skill does
# Logistics Expert
Expert guidance for supply chain management, logistics optimization, warehouse management systems, and transportation planning.
## Core Concepts
### Supply Chain Management
- Inventory management
- Demand forecasting
- Procurement and sourcing
- Warehouse management (WMS)
- Transportation management (TMS)
- Order fulfillment
- Last-mile delivery
### Optimization
- Route optimization
- Load planning
- Inventory optimization
- Network design
- Cost minimization
- Delivery scheduling
### Technologies
- RFID and barcode scanning
- GPS tracking
- IoT sensors
- Predictive analytics
- Automated warehouses
- Drone delivery
## Warehouse Management System
```python
from dataclasses import dataclass
from typing import List, Optional
from datetime import datetime
from enum import Enum
class StorageType(Enum):
PALLET = "pallet"
SHELF = "shelf"
BULK = "bulk"
COLD = "cold_storage"
@dataclass
class Location:
location_id: str
zone: str
aisle: str
rack: str
level: int
storage_type: StorageType
capacity: float
current_load: float
@dataclass
class Product:
sku: str
name: str
category: str
weight: float
volume: float
storage_requirements: str
@dataclass
class InventoryItem:
item_id: str
sku: str
quantity: int
location_id: str
received_date: datetime
expiry_date: Optional[datetime]
batch_number: str
class WMS:
"""Warehouse Management System"""
def __init__(self, db):
self.db = db
def receive_shipment(self, shipment):
"""Process incoming shipment"""
items_received = []
for item in shipment.items:
# Find optimal storage location
location = self.find_optimal_location(item)
# Create inventory record
inventory_item = InventoryItem(
item_id=generate_id(),
sku=item.sku,
quantity=item.quantity,
location_id=location.location_id,
received_date=datetime.now(),
expiry_date=item.expiry_date,
batch_number=item.batch_number
)
self.db.save_inventory(inventory_item)
self.update_location_capacity(location, item)
items_received.append(inventory_item)
return {
'shipment_id': shipment.shipment_id,
'items_received': len(items_received),
'status': 'completed'
}
def find_optimal_location(self, item):
"""Find best storage location for item"""
product = self.db.get_product(item.sku)
available_locations = self.db.get_available_locations(
storage_type=product.storage_requirements,
min_capacity=product.volume * item.quantity
)
# Prioritize locations
# 1. Same SKU for efficient picking
# 2. Closest to shipping area for fast-moving items
# 3. Maximize space utilization
same_sku_locations = [
loc for loc in available_locations
if self.has_same_sku(loc, item.sku)
]
if same_sku_locations:
return same_sku_locations[0]
# Select closest to shipping for fast-moving items
if product.category == 'fast-moving':
return min(available_locations, key=lambda l: l.distance_to_shipping)
# Otherwise, optimize space utilization
return max(available_locations, key=lambda l: l.utilization_score)
def pick_order(self, order_id):
"""Generate picking list and route"""
order = self.db.get_order(order_id)
picking_list = []
for line_item in order.line_items:
inventory = self.db.find_inventory(
sku=line_item.sku,
quantity=line_item.quantity
)
picking_list.append({
'sku': line_item.sku,
'quantity': line_item.quantity,
'location': inventory.location_id,
'batch': inventory.batch_number
})
# Optimize picking route
optimized_route = self.optimize_picking_route(picking_list)
return {
'order_id': order_id,
'picking_list': optimized_route,
'estimated_time': self.estimate_picking_time(optimized_route)
}
def optimize_picking_route(self, picking_list):
"""Optimize warehouse picking route"""
# Sort by zone, aisle, rack for efficient walking path
sorted_picks = sorted(
picking_list,
key=lambda x: (
self.get_location_zone(x['location']),
self.get_location_aisle(x['location']),
self.get_location_rack(x['location'])
)
)
return sorted_picks
def check_stock_level(self, sku):
"""Check current stock level"""
total_quantity = self.db.sum_quantity_by_sku(sku)
product = self.db.get_product(sku)
status = 'normal'
if total_quantity <= product.reorder_point:
status = 'reorder'
elif total_quantity <= product.safety_stock:
status = 'critical'
return {
'sku': sku,
'quantity': total_quantity,
'status': status,
'reorder_point': product.reorder_point
}
```
## Route Optimization
```python
import numpy as np
from scipy.spatial.distance import cdist
from ortools.constraint_solver import routing_enums_pb2
from ortools.constraint_solver import pywrapcp
class RouteOptimizer:
"""Vehicle routing optimization"""
def optimize_delivery_routes(self, depot, deliveries, vehicles):
"""Optimize delivery routes using OR-Tools"""
# Create distance matrix
locations = [depot] + deliveries
distance_matrix = self.create_distance_matrix(locations)
# Create routing model
manager = pywrapcp.RoutingIndexManager(
len(distance_matrix),
len(vehicles),
0 # depot index
)
routing = pywrapcp.RoutingModel(manager)
# Distance callback
def distance_callback(from_index, to_index):
from_node = manager.IndexToNode(from_index)
to_node = manager.IndexToNode(to_index)
return distance_matrix[from_node][to_node]
transit_callback_index = routing.RegisterTransitCallback(distance_callback)
routing.SetArcCostEvaluatorOfAllVehicles(transit_callback_index)
# Add capacity constraints
def demand_callback(from_index):
from_node = manager.IndexToNode(from_index)
return deliveries[from_node - 1].weight if from_node > 0 else 0
demand_callback_index = routing.RegisterUnaryTransitCallback(demand_callback)
routing.AddDimensionWithVehicleCapacity(
demand_callback_index,
0, # null capacity slack
[v.capacity for v in vehicles],
True, # start cumul to zero
'Capacity'
)
# Solve
search_parameters = pywrapcp.DefaultRoutingSearchParameters()
search_parameters.first_solution_strategy = (
routing_enums_pb2.FirstSolutionStrategy.PATH_CHEAPEST_ARC
)
solution = routing.SolveWithParameters(search_parameters)
if solution:
return self.extract_routes(manager, routing, solution, locations)
return None
def create_distance_matrix(self, locations):
"""Create distance matrix from coordinates"""
coords = np.array([(loc.lat, loc.lon) for loc in locations])
return cdist(coords, coords, metric='euclidean')
def extract_routes(self, manager, routing, solution, locations):
"""Extract optimized routes from solution"""
routes = []
for vehicle_id in range(routing.vehicles()):
route = []
index = routing.Start(vehicle_id)
Related in domains
aerospace-expert
IncludedExpert-level aerospace systems, flight management, maintenance tracking, aviation safety, and aerospace software
automotive-expert
IncludedExpert-level automotive systems, connected vehicles, fleet management, telematics, ADAS, and automotive software
real-estate-expert
IncludedExpert-level real estate systems, property management, MLS integration, CRM, virtual tours, and market analysis
manufacturing-expert
IncludedExpert-level manufacturing systems, Industry 4.0, production optimization, quality control, and smart factory solutions
retail-expert
IncludedExpert-level retail systems, POS, inventory management, e-commerce, customer analytics, and omnichannel retail
insurance-expert
IncludedExpert-level insurance systems, underwriting, claims processing, actuarial analysis, risk assessment, and insurtech solutions