ALGORITMI DI OTTIMIZZAZIONE

[266SM]
a.a. 2025/2026

Secondo Semestre

Frequenza Non obbligatoria

  • 6 CFU
  • 48 ore
  • ITALIANO
  • Sede di Trieste
  • Obbligatoria
  • Convenzionale
  • Scritto e Orale Congiunti
  • SSD MAT/09
Curricula: PERCORSO COMUNE
Syllabus

Conoscenza e capacità di comprensione: comprendere l’impostazione concettuale di un modello di ottimizzazione quale strumento per formulare, risolvere e valutare problemi di decisione relativi a sistemi complessi. Conoscere le metodologie di formalizzazione dei modelli quantitativi e di soluzione algoritmica dei problemi. Comprendere tutti gli aspetti teorici che stanno alla base delle tecniche di soluzione, le loro giustificazioni matematiche e le loro implicazioni e potenzialità applicative.

Conoscenza e capacità di comprensione applicate: essere in grado di applicare in concreto le tecniche di soluzione e gli algoritmi, eseguendo materialmente le procedure necessarie per arrivare alla soluzione di effettivi problemi numerici ed essere in grado quindi di analizzare criticamente le soluzioni ottenute.

Autonomia di giudizio: essere in grado di applicare le conoscenze acquisite per arrivare autonomamente a formulare modelli quantitativi e successivamente a risolvere i relativi problemi di ottimizzazione eseguendo anche manualmente gli opportuni algoritmi risolutivi.

Abilità comunicative: saper esporre, sia in forma scritta che orale, problemi di decisione e le loro possibili soluzioni. Saper discutere criticamente la validità ed i limiti delle formulazioni e delle soluzioni.

Capacità di apprendere: saper raccogliere informazioni dai libri di testo, articoli scientifici e altro materiale per la formulazione e la soluzione autonome di problemi decisionali.

Conoscenze di base: la conoscenza del formalismo dell’algebra lineare (vettori, matrici, loro operazioni e rappresentazioni nello spazio) e della teoria dei grafi (classificazione, proprietà, alberi, percorsi, circuiti) può semplificare l’esposizione del materiale didattico ma non è un requisito indispensabile.

Propedeuticità: nessuna.

1. Introduzione alla ricerca operativa
Problemi decisionali: Analisi e risoluzione di problemi complessi per ottimizzare le soluzioni.
Aree di applicazione:Gestione delle attività, pianificazione e gestione delle risorse, produzione, logistica e trasporti, economia, finanza, servizi sanitari, pubblica amministrazione.

2. Programmazione lineare (PL)
Proprietà e caratteristiche: Ottimizzazione di una funzione obiettivo lineare con vincoli lineari.
Formulazione del modello: Variabili decisionali, obiettivo, vincoli.
Interpretazione geometrica: Rappresentazione in due dimensioni.
Esiti possibili: Ammissibilità, non limitato, ottimalità unica o multipla.
Formulazione algebrica: Forma standard con variabili di slack e surplus.
Metodo del simplesso: Soluzione di base, variabili in base e fuori base, criterio di ottimalità, miglioramento.

3. Dualità in LP
Variabili e vincoli duali: Corrispondenza tra variabili e vincoli di problemi primale e duale.
Obiettivo duale: Funzione obiettivo del problema duale.
Teoremi di dualità: Dualità debole e forte, teorema degli scarti complementari.

4. Postottimalità
Analisi di sensitività: Impatto delle variazioni dei parametri sui risultati ottimali, variazione dei termini noti e dei coefficienti dell'obiettivo.

5. Programmazione intera
Esempi grafici: Problemi con variabili intere.
Algoritmo del branch & bound: Esplorazione sistematica delle soluzioni.
Tagli di Gomory: Tecniche per migliorare le soluzioni.

6. Risolvere problemi di programmazione lineare con Python e Gurobi
Uso di Python e Gurobi per risolvere problemi di programmazione lineare in modo efficiente.

F. S. Hillier and G. J. Liebermann: Ricerca Operativa, 9Ed. McGraw-Hill

1. Introduzione alla ricerca operativa
Problemi decisionali: La ricerca operativa si concentra sull'analisi e la risoluzione di problemi decisionali complessi, utilizzando modelli matematici e algoritmi per ottimizzare le soluzioni.

Aree di applicazione:
- Gestione delle attività: Ottimizzazione dei processi operativi.
- Pianificazione e gestione delle risorse: Allocazione efficiente delle risorse disponibili.
- Produzione: Miglioramento dei processi produttivi.
- Logistica e trasporti: Ottimizzazione dei percorsi e delle reti di trasporto.
- Economia e finanza: Gestione degli investimenti e analisi economica.
- Servizi sanitari: Pianificazione e gestione delle risorse sanitarie.
- Pubblica amministrazione: Efficienza nei servizi pubblici.

2. Programmazione lineare (PL)
Proprietà, caratteristiche e applicabilità della PL: La PL è utilizzata per ottimizzare una funzione obiettivo lineare soggetta a vincoli lineari.

Formulazione di un modello di PL:
- Variabili decisionali: Rappresentano le scelte disponibili.
- Obiettivo: La funzione da ottimizzare (massimizzare o minimizzare).
- Vincoli: Limitazioni o requisiti che devono essere soddisfatti.

Interpretazione geometrica: In due dimensioni, il problema di PL può essere rappresentato graficamente con regioni ammissibili e linee di livello della funzione obiettivo.

Possibili esiti di un problema di PL:
- Ammissibilità: Esistenza di almeno una soluzione che soddisfa tutti i vincoli.
- Non limitato: La funzione obiettivo può essere migliorata indefinitamente.
- Ottimalità unica e multipla: Presenza di una o più soluzioni ottimali.

Formulazione algebrica della PL:
- Forma standard: Tutti i vincoli sono equazioni con variabili non negative.
- Variabili di slack e di surplus: Aggiunte per convertire le disuguaglianze in equazioni.
- Forma canonica: Una forma specifica della PL utilizzata per il metodo del simplesso.

Metodo del simplesso:
- Soluzione di base: Una soluzione che soddisfa i vincoli di uguaglianza.
- Variabili in base e fuori base: Variabili attive e non attive nella soluzione di base.
- Criterio di ottimalità: Condizioni per determinare se una soluzione è ottimale.
- Miglioramento: Tecniche per migliorare soluzioni non ottimali.

3. Dualità in LP
Variabili e vincoli duali: Ogni variabile del problema primale corrisponde a un vincolo nel problema duale e viceversa.
Obiettivo duale: La funzione obiettivo del problema duale.

Teoremi di dualità:
- Dualità debole: La soluzione del problema duale fornisce un limite superiore o inferiore alla soluzione del problema primale.
- Dualità forte: Le soluzioni ottimali del problema primale e del duale sono equivalenti.
- Teorema degli scarti complementari: Relazione tra le soluzioni primali e duali ottimali.

4. Postottimalità
Analisi di postottimalità e di sensitività: Studio dell'impatto delle variazioni dei parametri sui risultati ottimali.
Variazione dei termini noti: Modifiche ai termini dei vincoli.
Variazione dei coefficienti della funzione obiettivo: Cambiamenti nella funzione da ottimizzare.

5. Programmazione intera
Esempi e illustrazione grafica: Problemi in cui le variabili decisionali devono assumere valori interi.
Algoritmo del branch & bound: Metodo per risolvere problemi di programmazione intera esplorando sistematicamente le soluzioni possibili.
Tagli di Gomory: Tecniche per migliorare le soluzioni di programmazione intera.

6. Risolvere problemi di programmazione lineare utilizzando Python e il software di ottimizzazione Gurobi
L'utilizzo di Python e Gurobi per la risoluzione dei problemi di programmazione lineare consente di sfruttare potenti strumenti computazionali per modellare e risolvere problemi complessi in modo efficiente.

Lezioni frontali sugli argomenti di teoria alla lavagna e/o con l'ausilio di slides proiettate in aula.

Esercitazioni sugli argomenti di teoria sia mediante svolgimento di esempi alla lavagna sia utilizzando il computer (Solver di Excel).

Spiegazione di come risolvere un problema di programmazione lineare con python e Gurobi mediante presentazione al computer degli strumenti software appropriati e descrizione dettagliata del codice.

Agli studenti può essere richiesto di portare il proprio computer portatile.

Il materiale didattico è disponibile su http://moodle2.units.it e Teams

La verifica dell'apprendimento avviene attraverso un test finale che consta di due parti per un totale di tre o quattro esercizi. La prima parte (Esercizi 1 e 2) viene svolta al computer utilizzando software open-source (Python) e software di ottimizzazione gratuito per fini accademici (Gurobi). La seconda parte (Esercizi 3 e 4) si svolge su carta.
1. Formulazione di un modello di programmazione lineare continua e sua risoluzione mediante python+Gurobi (punti 1, 2 e 6 del programma)
2. Formulazione di un modello di programmazione lineare intera e sua risoluzione mediante python+Gurobi (punti 5 e 6 del programma)
3. Risoluzione di uno o due esercizii riguardanti gli aspetti teorici della programmazione lineare continua e del metodo del simplesso o della programmazione intera (punti 2, 3, 4 e 5 del programma)

Il punteggio massimo per ogni esercizio è cosi suddiviso, con alcune possibili variazioni dovute a situazioni contingenti:
Esercizio 1: 10 punti,
Esercizio 2: 10 punti,
Esercizio 3+4: 12 punti.

L'esame è considerato superato da chi ottiene un punteggio maggiore o uguale a 18. A chi ottiene un punteggio superiore a 30 (cioè 31 o 32) viene assegnato il voto di "30 e Lode"

Questo insegnamento approfondisce argomenti strettamente connessi a uno o più obiettivi dell’Agenda 2030 per lo Sviluppo Sostenibile delle Nazioni Unite.

icona 11 icona  12 icona  9