TransportationPlanningOptimization.jl
A Julia package for solving transportation planning problems.
Features
- Multi-commodity flow over transportation networks with time-dependent routing
- Multiple cost models: Support for linear costs (proportional to volume) and bin packing costs (discrete per vehicle/container)
- Routing constraints: option to model forbidden nodes and arcs restrictions
- Time discretization: handle delivery deadlines and transit times with flexible time steps
- Efficient algorithms: greedy heuristics for fast and good quality solution generation
Installation
using Pkg
Pkg.add("https://github.com/BatyLeo/TransportationPlanningOptimization.jl")Quick Start
using TransportationPlanningOptimization
using Dates
# Define network nodes
nodes = [
NetworkNode(; id="Origin", node_type=:origin),
NetworkNode(; id="Hub", node_type=:other),
NetworkNode(; id="Destination", node_type=:destination),
]
# Define transportation arcs
arcs = [
Arc(; origin_id="Origin", destination_id="Hub",
cost=LinearArcCost(10.0), travel_time=Day(1)),
Arc(; origin_id="Hub", destination_id="Destination",
cost=LinearArcCost(10.0), travel_time=Day(1)),
]
# Define commodities to transport
commodities = [
Commodity(;
origin_id="Origin",
destination_id="Destination",
arrival_date=DateTime(2025, 1, 3),
max_delivery_time=Day(2),
size=5.0,
),
]
# Create instance and solve
instance = Instance(nodes, arcs, commodities, Day(1))
solution = greedy_heuristic(instance)
# Validate and evaluate
is_feasible(solution, instance; verbose=true)
println("Total cost: ", cost(solution))