Programmazione Lineare in MATLAB Ing. Fabio Sciancalepore Politecnico di Bari
Agenda Introduzione alla Ricerca Operativa Problemi di ottimizzazione Programmazione lineare programmazione a variabili continue programmazione a variabili intere Programmazione lineare in MATLAB: la funzione glpk Applicazioni: scheduling dei treni in una rete ferroviaria progettazione di una rete di distribuzione
La Ricerca Operativa (RO) La RO fornisce strumenti decisionali volti a definire soluzioni per la gestione di attività e risorse, considerate: una o più funzioni obiettivo una serie di vincoli relativi ad attività e risorse Le soluzioni individuate possono essere: Ottime Subottime (o ottimali)
Storia della Ricerca Operativa La RO nasce negli anni Trenta del Novecento, per affrontare problemi di natura militare 1935 37 Biggin Hill experiment (Regno Unito): collocazione ottima dei radar sul territorio britannico 1939: all Università di Manchester si forma il primo gruppo di ricerca di RO scientifico militare Secondo Dopoguerra: applicazioni civili della RO pianificazione industriale trasporti ferroviari, stradali, urbani
Applicazioni della Ricerca Operativa Matematica Informatica Economia e finanza Ingegneria Produzione Logistica Militare Progettazione di servizi, trasporti e tecnologie
Definizione di un problema di RO 1. Formulazione del problema 2. Costruzione del modello 3. Derivazione di una soluzione 4. Prova del modello e valutazione della soluzione 5. Attuazione ed aggiornamento della soluzione
Problemi in RO
Problemi di ottimizzazione/1 Approccio matematico di minimizzazione o massimizzazione di una funzione obiettivo, dati certi vincoli Un problema di minimizzazione èsempre riconducibile ad un problema di massimizzazione e viceversa min F( x1, x2,..., xn) max[ F( x1, x2,..., xn)] max F( x, x,..., x ) min[ F( x, x,..., x )] 1 2 n 1 2 n
Problemi di ottimizzazione/2 Ottimizzazione non vincolata: risoluzione mediante analisi differenziale Ottimizzazione vincolata min F( x, x,..., x ) st.. 1 2 ϕ ( x, x,..., x ) b 1 1 2 n 1 ϕ ( x, x,..., x ) b... 2 1 2 n 2 ϕ ( x, x,..., x ) b m 1 2 n m x, x,..., x 0 1 2 n n Funzione obiettivo Vincoli
La Programmazione Lineare Si occupa di studiare algoritmi di risoluzione per problemi di ottimizzazione lineari funzione obiettivo lineare nelle variabili vincoli lineari nelle variabili max T i T a x b i = 1,..., m T i i a x= b i = m,..., m T i i 1 1 2 a x b i = m,..., m i x 0 j = 1,..., n j c x 2
PL in forma matriciale x: vettore delle variabili c: vettore dei coefficienti della funz. obiettivo A: matrice dei vincoli b: vettore dei termini noti max Ax x 0 T c x b Mediante semplici artifici matematici, tutti i vincoli di uguaglianza e diseguaglianza possono essere ricondotti alla forma matriciale Ax B
PL: definizioni n Regione ammissibile X = x : Ax b, x 0 Problema ammissibile Problema inammissibile X { } X = T T Soluzione ottima x* X :c x* c x x X T Problema illimitato k x' X: c x' k
Problemi di PL Problema PL continua PL intera PL binaria PL mista Caratteristiche Algoritmi Variabili continue Metodo grafico Gauss Jordan Simplesso Pr. Duale Variabili intere Lang e Doing Branch and Bound Algoritmo di Gomory Variabili 0 1 Metodo di Balas Variabili di vario tipo Decompos izione di Benders Decompos izione di Dantzig Wolfe
Definizione di un problema di PL: un esempio/1 Un azienda manifatturiera produce i seguenti capi di abbigliamento: Euro Costi unitari Prezzi unitari Pantaloni 24,00 42,00 Giacche 33,00 68,00 Camicie 19,00 34,00 In azienda i reparti hanno i seguenti tempi di lavorazione minuti Taglio Cucitura Stiratura Pantaloni 11 14 10 Giacche 22 19 16 Camicie 16 19 22 Giornalmente possono essere dedicate 21 ore al taglio, 17 ore al cucito e 15 alla stiratura. Definire il mix produttivo giornaliero tale da a) minimizzare i costi; b) massimizzare i ricavi
Definizione di un problema di PL: un esempio/2 Obiettivi: min costi/max ricavi Vincoli: risorse limitate nei reparti Variabili: xp: q.tà pantaloni (u) xg: q.tà giacche (u) xc: q.tà camicie (u) max R= 42x + 68x + 34x or minc = 24x + 33x + 19x st.. 11x + 22x + 16x 1260 P G C 14x + 19x + 19x 1020 P G C 10x + 16x + 22x 900 P G C x, x, x 0 P G C P G C P G C
PL in Matlab: la funzione glpk glpk èun insieme di routine scritte in C++ che permette di risolvere vari problemi di PL glpkmex è un interfaccia che permette di usare glpk in MATLAB mediante la funzione glpk disponibile gratuitamente on line http://glpkmex.sourceforge.net/
Funzione glpk in MATLAB: sintassi [xopt, fmin, status, extra] = glpk (c, a, b, lb, ub, ctype, vartype,sense, param) xopt: vettore delle variabili al valore ottimo fmin: valore ottimo della funzione obiettivo status: codice che esprime la natura del risultato ottenuto c: vettore dei coeff. della funzione obiettivo a: matrice dei vincoli b: vettore dei termini noti lb, ub: vettori dei limiti inf. e sup. delle variabili del problema ctype: vettore che esprime per ogni vincolo la tipologia (<=,=,>=) vartype: vettore che definisce le variabili come continue, intere o bin sense: flag per max ( 1) o min (+1) param: parametro multidimensionale per scegliere gli algoritmi da adottare
Casi studio Progettazione ottima di una rete di distribuzione di farmaci ospedalieri Definizione ottimale dell orario dei treni in una rete ferroviaria