I notebook del laboratorio
Ogni capitolo con un modello ha il suo notebook: si apre in Google Colab con
un clic sul badge, installa il solver da sé e gira nel browser — sul computer non
serve installare niente. È lo stesso codice degli script di python/, cella per
cella, con le figure che compaiono sotto le celle invece di finire in un file.
La licenza del pacchetto pip basta
La licenza inclusa in gurobipy è limitata a 2000 variabili e 2000 vincoli, e
tutti i modelli del laboratorio ci stanno: il più grande — il newsvendor a
scenari — ne usa 1803 e 1801. Aumentando il numero di scenari si può superarla:
in quel caso si attiva la licenza accademica gratuita da
portal.gurobi.com.
| Capitolo | Classe | Notebook |
|---|---|---|
| Produzione e scorte multiperiodali | LP / QP convesso | |
| Supply chain con congestione e sostenibilità | LP / NLP convesso | |
| Portafoglio di Markowitz | QP convesso | |
| Pricing e revenue management | NLP concavo / non convesso | |
| Allocazione del budget pubblicitario | NLP convesso | |
| Localizzazione continua di un servizio | NLP convesso | |
| Ricarica intelligente di veicoli elettrici | LP / QP convesso | |
| Capacità di servizio e tempi di attesa | NLP convesso (coda M/M/1) | |
| Il Newsvendor e le sue varianti | convesso 1D / LP stocastico a scenari | |
| VaR e CVaR: misurare e ottimizzare il rischio | LP a scenari | |
| Arbitraggio e prezzatura senza arbitraggio | LP | |
| Support Vector Machine: ottimizzazione per il machine learning | QP convesso | |
| Regressione robusta e quantile | LP (confronto con QP) |
Come sono fatti
I notebook non si scrivono a mano: si generano dagli script con
python3 python/genera_notebook.py
Lo script del capitolo resta l'unica sorgente del codice — il notebook ne riprende
docstring, sezioni e commenti — e chi preferisce la riga di comando continua a
lanciare, dalla cartella python/:
python3 lab06_markowitz.py
Installazione e licenza
Per lavorare in locale serve soltanto gurobipy:
python3 -m pip install gurobipy
Il pacchetto pip include una licenza dimostrativa (fino a 2000 variabili e 2000 vincoli):
sufficiente per tutti i modelli di questo laboratorio. All'avvio compare la riga
Restricted license - for non-production use only: è normale.
Licenza accademica completa (gratuita):
- registrarsi su https://portal.gurobi.com con l'email istituzionale (
@uniroma1.it); - richiedere una Named-User Academic License;
- eseguire il comando
grbgetkey XXXXXXXX-...mostrato dal portale (serve la rete di ateneo o VPN); - la licenza viene salvata in
~/gurobi.lice da quel momento non ci sono limiti di dimensione.
Verifica rapida:
import gurobipy as gp
print(gp.gurobi.version()) # es. (13, 0, 3)
Rigenerare tutto
python3 -m pip install gurobipy matplotlib pandas scipy # scipy: solo funzioni statistiche
python3 python/run_all.py # rigenera dati, risultati e figure
Nel repository ci sono tutti gli script Python e i dati dei casi di studio in formato CSV.