MOP-ND ๐ด
๐ด Overview
MOP-ND is a university data analytics and optimization project where I implemented a Multi-commodity Orienteering Problem with Network Design (MOP_ND) model for the "Data Analytics and Data Driven Decision" course at the University of L'Aquila.
The project studies how to design high-quality origin-destination itineraries for different classes of cycle-tourists, inspired by the paper "Designing single origin-destination itineraries for several classes of cycle-tourists".
๐ฆพ Repository
Code and notebooks: github.com/gianlucarea/mop-nd
Why this project matters
Route planning in cycling tourism is a multi-objective problem: distance, attractiveness, and user preferences often pull in different directions. The goal of this project was to model that tradeoff and compute practical itineraries for multiple user groups in a shared network.
In practice, the work focuses on:
- *Designing routes for multiple tourist classes
- *Optimizing network design decisions for cycling scenarios
- *Balancing route quality, travel constraints, and preferences
- *Maximizing overall satisfaction across itineraries
๐ ๏ธ Tech Stack
- *Python for model implementation and experimentation
- *Jupyter Notebooks for interactive analysis
- *Gurobi as the mathematical optimization solver
- *NumPy for numerical operations
- *NetworkX for graph and network modeling
- *Matplotlib for visualizing outputs and comparisons
- *Itertools for combinatorial utilities
Modeling workflow
The project is organized as an experimentation workflow in notebooks:
- *Define the network and candidate routes.
- *Encode constraints and objective terms for each tourist class.
- *Run optimization with Gurobi.
- *Compare candidate solutions and interpret tradeoffs.
- *Visualize resulting itineraries and key metrics.
๐งช Getting Started
Requirements:
- *Gurobi (optimization solver)
- *NumPy
- *NetworkX
- *Matplotlib
- *Itertools
- *Jupyter
The repository is notebook-driven and aimed at reproducible analysis. After installing dependencies (and a valid Gurobi setup), open the notebooks and execute cells in order to reproduce model runs and charts.
๐ Learn More
For additional context on the optimization formulation, refer to the linked paper and the implementation notebooks in the repository.
What I learned
- *How to translate research-style formulations into executable optimization models
- *How to reason about tradeoffs between competing objectives in network design
- *How to structure notebook experiments so results are easier to compare and explain
๐ค Contributing
Contributions are welcome. If you want to improve the formulation, datasets, or notebook clarity, feel free to open a pull request.
- *Fork the repository
- *Create a feature branch:
git checkout -b feature-name - *Commit your changes:
git commit -m 'Add new feature' - *Push to the branch:
git push origin feature-name - *Open a Pull Request
Please ensure your code follows the existing style and includes appropriate documentation.
๐ง Contact
For questions, feedback, or collaboration opportunities, feel free to reach out:
- *LinkedIn: Gianluca Rea
- *Email: gianlucarea.work@gmail.com
This project reflects my interest in optimization, applied data science, and decision-support systems for real-world mobility problems.