Data Structures Reference
Quick access to all data structure definitions in the VRP toolkit. This skill saves tokens by providing pre-documented structures instead of reading source code repeatedly.
Quick Navigation
Choose the appropriate reference based on what you're working with:
By Layer
- Problem Layer → [problemlayer.md](references/problemlayer.md)
- Instance, PDPTWInstance, Solution, Node, Constraint - When: Defining or working with problem instances
- Algorithm Layer → [algorithmlayer.md](references/algorithmlayer.md)
- Solver, ALNSSolver, Operators, SearchState, ALNSConfig - When: Implementing or understanding algorithms
- Data Layer → [datalayer.md](references/datalayer.md)
- OSMnx graphs, GeoDataFrame, distance matrices, data generators - When: Loading data, working with OSMnx, benchmarks
- Runtime Formats → [runtimeformats.md](references/runtimeformats.md)
- How routes, time windows, coordinates are actually represented in code - When: Understanding how to work with data structures in Python
By Common Questions
| Question |
Reference |
Section |
| "What attributes does Instance have?" |
problem_layer.md |
Instance |
| "How are routes represented?" |
runtime_formats.md |
Route Representation |
| "What's in an OSMnx Graph?" |
data_layer.md |
Graph (NetworkX) |
| "How do I configure ALNS?" |
algorithm_layer.md |
ALNSConfig |
| "What's the structure of a Node?" |
problem_layer.md |
Node |
| "How are time windows stored?" |
runtime_formats.md |
Time Window Representation |
| "How do destroy operators work?" |
algorithm_layer.md |
DestroyOperator |
| "What's in a distance matrix?" |
runtime_formats.md |
Distance Matrix |
| "How do I work with OSMnx nodes?" |
data_layer.md |
GeoDataFrame |
| "What's a Solution object?" |
problem_layer.md |
Solution |
By Data Type
| Type |
Reference |
Description |
Instance |
problem_layer.md |
Problem definition |
Solution |
problem_layer.md |
Solution with routes |
Node |
problem_layer.md |
Location/customer |
Route |
runtime_formats.md |
List[int] format |
TimeWindow |
runtime_formats.md |
Tuple[float, float] format |
ALNSConfig |
algorithm_layer.md |
Algorithm configuration |
Operator |
algorithm_layer.md |
Destroy/repair/local search |
nx.MultiDiGraph |
data_layer.md |
OSMnx network graph |
np.ndarray |
runtime_formats.md |
Distance/time matrices |
GeoDataFrame |
data_layer.md |
OSMnx nodes/edges |
When to Use This Skill
Trigger this skill when:
- Understanding structures: "What attributes does X have?"
- Working with data: "How do I access Y in Z?"
- Migrating code: Need to understand existing data structures
- Implementing features: Need to know structure interfaces
- Debugging: Need to understand what data looks like
- Avoiding repeated reads: Instead of reading source code files repeatedly
Reference Files Overview
[problemlayer.md](references/problemlayer.md)
Size: ~300 lines Contains:
- Instance, PDPTWInstance classes
- Solution class with methods
- Node class with all attributes
- Constraint types
- Type aliases
- Common usage patterns
Use when: Defining problems, creating instances, working with solutions
[algorithmlayer.md](references/algorithmlayer.md)
Size: ~350 lines Contains:
- Solver interface
- ALNSSolver and ALNSConfig
- Destroy/Repair/LocalSearch operators
- SearchState tracking
- Operator statistics
- ALNS main loop pattern
Use when: Implementing algorithms, understanding operators, configuring ALNS
[datalayer.md](references/datalayer.md)
Size: ~300 lines Contains:
- OSMnx Graph structure (NetworkX)
- GeoDataFrame (nodes and edges)
- Distance/time matrix creation
- Data generators (OrderGenerator)
- Benchmark formats (Solomon)
- OSMnx → VRP conversions
Use when: Loading data, OSMnx integration, working with benchmarks
[runtimeformats.md](references/runtimeformats.md)
Size: ~400 lines Contains:
- Route as
List[int] with examples
- TimeWindow as
Tuple[float, float]
- Coordinates as tuples
- Distance matrices as NumPy arrays
- Pickup-delivery pairs as list of tuples
- Configuration dictionaries
- Common type conversions
- Memory efficiency tips
Use when: Understanding practical code representations, writing/reading routes
Usage Examples
Example 1: Understanding a Route
Question: "I see route = [0, 5, 3, 7, 0] in the code. What does this mean?"
Action: Load [runtimeformats.md](references/runtimeformats.md) → Route Representation
Answer:
- Route is a list of node IDs
0 = depot (start and end)
[5, 3, 7] = customers visited in order
- This represents: Depot → Node 5 → Node 3 → Node 7 → Depot
Example 2: Creating an Instance
Question: "How do I create a PDPTW instance?"
Action: Load [problemlayer.md](references/problemlayer.md) → PDPTWInstance
Answer:
instance = PDPTWInstance(
nodes=node_list,
battery_capacity=100.0,
max_route_time=480.0,
vehicle_capacity=50.0
)
Example 3: Configuring ALNS
Question: "What parameters can I configure for ALNS?"
Action: Load [algorithmlayer.md](references/algorithmlayer.md) → ALNSConfig
Answer: See all parameters with defaults, explanations, and usage example.
Example 4: Working with OSMnx
Question: "What attributes does an OSMnx node have?"
Action: Load [datalayer.md](references/datalayer.md) → Node Attributes
Answer: y (lat), x (lon), osmid, street_count, etc.
Benefits of This Skill
- Token Efficiency: Read structured docs once instead of code files repeatedly
- Quick Reference: Find information faster with organized structure
- Complete Coverage: All data structures in one place
- Practical Examples: Shows actual usage, not just definitions
- Cross-Referenced: Easy to navigate between related structures
Integration with Other Skills
This skill is referenced by:
- migrate-module: Understanding structures when migrating code
- osmnx-integration: OSMnx data structure details (when created)
- add-algorithm: Algorithm layer structures for new implementations
When other skills need data structure information, they reference this skill instead of reading source code.
Maintenance
This reference should be updated when:
- New data structures are added to the codebase
- Existing structures change significantly
- New attributes or methods are added to core classes
Keep this as the single source of truth for data structure documentation.