Economia Applicata all’Ingegneria Dott.ing. Massimo Di Francesco mdifrance@unica.it Dott.ssa Michela Lai mlai@unica.it http://sorsa.unica.it/ Esercitazione 2
La programmazione lineare per problemi decisionali di economia Articolazione del processo decisionale: Definizione del problema Costruzione di un modello matematico di programmazione lineare Risoluzione delle istanze del modello con il programma scelto (ad esempio Lindo) Analisi dei risultati ottenuti Tipicamente queste fasi non sono strettamente sequenziali Modello matematico: descrizione con strumenti di tipo logico-matematico della porzione di realtà di interesse. 2
La programmazione lineare per problemi decisionali di economia Non esistono metodologie formali per generare automaticamente modelli di programmazione lineare. La loro costruzione è lasciata fondamentalmente alla fantasia, alla creatività e all’esperienza del singolo La soluzione di un modello è sempre la soluzione della rappresentazione costruita del problema reale 3
Il problema della fonderia Definizione del problema, analisi della realtà e raccolta dati Una fonderia deve produrre 1000 pezzi del peso ciascuno di 1kg. Il ferro con cui tali pezzi sono fatti dovrà contenere manganese e silicio nelle seguenti quantità: manganese ≥ 0.45 % 3.25% ≤ silicio ≤ 5.5% Sono disponibili tre tipi di materiale ferroso con le seguenti caratteristiche: Inoltre si può acquistare il solo manganese a 10€/kg TIPO A TIPO B TIPO C % di silicio 4.00 1.00 0.60 % di manganese 0.45 0.50 0.40 Costo (€/kg) 0.025 0.03 0.018 4 4
Il problema della fonderia Definizione del problema, analisi della realtà e raccolta dati ESERCIZIO: Determinare il piano di produzione che minimizza il costo d’acquisto delle materie prime mediante un modello di Programmazione Lineare 5
Il problema della fonderia Definizione del problema, analisi della realtà e raccolta dati Variabili: xFA (≥0): numero di kg di materiale ferroso A da acquistare xFB (≥ 0): numero di kg di materiale ferroso B da acquistare xFC (≥ 0): numero di kg di materiale ferroso C da acquistare xM (≥ 0): numero di kg di manganese da acquistare La definizione di queste variabili ci consente di rispettare i vincoli di non negatività 6
Il problema della fonderia Definizione del problema, analisi della realtà e raccolta dati Vincoli Il numero totale di kg prodotti deve essere 1000: xFA + xFB + xFC + xM = 1000 La quantità di silicio presente nel prodotto risultante è: 0.04 xFA + 0.01 xFB + 0.006 xFC e dovrà essere compresa tra il 3.25% e il 5.5% del totale (1000 kg), quindi 0.04 xFA + 0.01 xFB + 0.006 xFC ≥ 32.5 0.04 xFA + 0.01 xFB + 0.006 xFC ≤ 55 7
Il problema della fonderia Definizione del problema, analisi della realtà e raccolta dati La quantità di manganese presente nel prodotto risultante non dovrà essere inferiore al 0.45% del totale, quindi: 0.0045 xFA + 0.005 xFB + 0.004 xFC + xM ≥ 4.5 Dobbiamo determinare il piano di produzione che minimizza il costo di acquisto: min 0.025 xFA + 0.03 xFB + 0.018 xFC + 10 xM 8
Il problema della fonderia Costruzione del modello di ottimizzazione Il problema può essere così formalizzato: min 0.025 xFA + 0.03 xFB + 0.018 xFC + 10 xM s.t. xFA + xFB + xFC + xM = 1000 0.04 xFA + 0.01 xFB + 0.006 xFC ≥ 32.5 0.04 xFA + 0.01 xFB + 0.006 xFC ≤ 55 0.0045 xFA + 0.005 xFB + 0.004 xFC + xM ≥ 4.5 xFA , xFB , xFC ,xM ≥ 0 9
Il problema della fonderia Determinazione delle soluzioni Istanza su Lindo: min 0.025 xfa + 0.03 xfb + 0.018 xfc + 10 xm s.t. xfa + xfb + xfc + xm = 1000 0.04 xfa + 0.01 xfb + 0.006 xfc > 32.5 0.04 xfa + 0.01 xfb + 0.006 xfc < 55 0.0045 xfa + 0.005 xfb + 0.004 xfc + xm > 4.5 end
Il problema della fonderia Analisi dei risultati LP OPTIMUM FOUND AT STEP 4 OBJECTIVE FUNCTION VALUE 1) 24.56130 VARIABLE VALUE REDUCED COST XFA 779.431274 0.000000 XFB 0.000000 0.001744 XFC 220.457962 0.000000 XM 0.110727 0.000000 ROW SLACK OR SURPLUS DUAL PRICES 2) 0.000000 0.022441 3) 0.000000 -0.058494 4) 22.500000 0.000000 5) 0.000000 -10.022441 Soluzione con Lindo:
Dal problema della fonderia a una notazione più generale La struttura modellistica del problema della fonderia può essere applicata a numerosi problemi decisionali: Si deve definire quante unità acquistare tra un dato insieme di prodotti (ad esempio tre tipologie di materiali ferrosi) Spesso non si può acquistare una quantità di un dato prodotto che sia superiore a un limite predefinito Questi prodotti presentano delle proprietà (ad esempio la quantità di silicio e manganese) Il mix di beni acquistati deve garantire dei requisiti rispetto a tali proprietà (ad esempio la quantità minima di silicio e manganese) Occorre minimizzare il costo di acquisto dei prodotti 12 12
Dal problema della fonderia a una notazione più generale j l’indice dei prodotti tra cui poter scegliere i l’indice delle proprietà xj la quantità (non negativa) da acquistare del prodotto j cj il costo unitario di acquisto del prodotto j uj la quantità massima acquistabile del prodotto j bi la quantità minima della proprietà i richiesta nel mix di prodotti da acquistare aij la quantità di proprietà i presente in una unità del prodotto j 13 13
Dal problema della fonderia a una notazione più generale Il precedente problema può essere così formalizzato: s.t. Possibile applicazione: il problema della dieta 14 14
Il problema della dieta Una mensa scolastica deve pianificare gli acquisti degli alimenti per la sua attività La dieta deve rispettare alcuni requisiti nutrizionali minimi e le porzioni massime di ogni alimento Noti i costi unitari dei vari alimenti, determinare la composizione di alimenti in modo da minimizzare il costo complessivo d’acquisto degli alimenti 15 15
Il problema della dieta ESERCIZIO Definire variabili e vincoli. Dati del problema: Alimento Quantità massima (in hg) Prezzo di vendita (in €/hg) Pane 4 0.1 Latte 3 0.5 Uova 1 0.12 Carne 2 0.9 Dolce 1.3 Valori nutrizionali minimi Calorie 600 cal. Proteine 50 g Calcio 0.7 g Valori nutrizionali per hg Pane Latte Uova Carne Dolce Calorie 30 50 150 180 400 Proteine 5 g 15 g 30 g 90 g 70 g Calcio 0.02 g 0.15 g 0.05 g 0.08 g 0.01 g 16 16
Il problema della dieta min 0.1 x_pane + 0.5 x_latte + 0.12 x_uova + 0.9 x_carne + 1.3 x_dolce 30 x_pane + 50 x_latte + 150 x_uova + 180 x_carne + 400 x_dolce ≥ 600 5 x_pane + 15 x_latte + 30 x_uova + 90 x_carne + 70 x_dolce ≥ 50 0.02 x_pane + 0.15 x_latte + 0.05 x_uova + 0.08 x_carne + 0.01 x_dolce ≥ 0.7 x_pane ≤ 4 x_latte ≤ 3 x_uova ≤ 1 x_carne ≤ 2 x_dolce ≤ 2 17 17
Il problema della dieta Soluzione con Lindo: LP OPTIMUM FOUND AT STEP 6 OBJECTIVE FUNCTION VALUE 1) 3.370000 VARIABLE VALUE REDUCED COST X_PANE 4.000000 0.000000 X_LATTE 3.000000 0.000000 X_UOVA 1.000000 0.000000 X_CARNE 1.500000 0.000000 X_DOLCE 0.000000 1.187500 18
Pasta Un’impresa produce 3 tipi di pasta: Tipo A, Tipo B e Tipo C. Per produrre la pasta utilizza 4 diverse macchine (M1, M2, M3, M4) le cui produzioni orarie sono: M1: 15 pacchi di pasta tipo B e 10 tipo C M2: 20 pacchi di pasta tipo A, 15 tipo B e 25 tipo C M3: 25 pacchi di pasta tipo A e 20 tipo C M4: 20 pacchi di pasta tipo A 10 tipo B Il mercato giornalmente richiede almeno: 650 pacchi di pasta di tipo A, 500 di tipo B e 500 di tipo C. I costi di produzione orari sono: M1: 90 euro M2: 150 euro M3: 140 euro M4: 105 euro Ogni macchina non può superare 15ore di produzione giornaliere. Inoltre, le ore di produzione sono complete (una macchina lavora per 0,1, 2,…,15 ore, non si tiene conto dei minuti). Determinare la produzione giornaliera di costo minimo. 19
Pasta Variabili: Vincoli: M1: numero di ore giornaliere di impiego della macchina 1 M2: numero di ore giornaliere di impiego della macchina 2 M3: numero di ore giornaliere di impiego della macchina 3 M4: numero di ore giornaliere di impiego della macchina 4 Vincoli: Il numero massimo delle ore nelle quali può lavorare ogni macchina è 15 M1 ≤ 15 M2 ≤ 15 M3 ≤ 15 M4 ≤ 15 La quantità minima giornaliera richiesta per tipologia di pasta: 20 M2 + 25 M3 + 20 M4 ≥ 650 15 M1 + 15 M2 + 10 M4 ≥ 500 10 M1 + 25 M2 + 20 M3 ≥ 500 20
Pasta Su Lindo : min 90 M1 + 150 M2 + 140 M3 + 105 M4 s.t. PACCHIA)20 M2 + 25 M3 + 20M4 > 650 PACCHIB)15 M1+ 15 M2 + 10M4 > 500 PACCHIC)10 M1+ 25 M2 + 20M3 > 500 end gin 4 Nome seguito da “)” consente di assegnare un nome al vincolo facilitando la lettura della soluzione
Pasta Soluzione su Lindo: OBJECTIVE FUNCTION VALUE 1) 4915.000 1) 4915.000 VARIABLE VALUE REDUCED COST M1 9.000000 90.000000 M2 15.000000 150.000000 M3 2.000000 140.000000 M4 15.000000 105.000000 ROW SLACK OR SURPLUS DUAL PRICES M1) 6.000000 0.000000 M2) 0.000000 0.000000 M3) 13.000000 0.000000 M4) 0.000000 0.000000 PACCHIA) 0.000000 0.000000 PACCHIB) 10.000000 0.000000 PACCHIC) 5.000000 0.000000
Turni Ospedalieri Il direttore amministrativo dell’ospedale Santa Cara deve stabilire i turni ospedalieri delle ostetriche, in modo da garantire un minimo numero di ostetriche presenti in ogni turno (indicato nella tabella). Il direttore vuole utilizzare il minor numero totale di ostetriche, tenendo conto che le ostetriche che si recano in reparto per uno dei primi cinque turni sono obbligate a lavorare per 8 ore consecutive (due turni consecutivi), mentre quelle impiegate nell’ultimo turno (turno 6) lavorano solo 4 ore. TURNI 1 2 3 4 5 6 ORARIO 6-10 10-14 14-18 18-22 22-2 2-6 N.OSTETRICHE 70 80 50 60 40 30 23
Turni Ospedalieri Variabili Vincoli: x1: numero di ostetriche nel turno 1 x2: numero di ostetriche nel turno 2 x3: numero di ostetriche nel turno 3 x4: numero di ostetriche nel turno 4 x5: numero di ostetriche nel turno 5 x6: numero di ostetriche nel turno 6 Vincoli: x1 ≥ 70 x1 + x2 ≥ 80 x2 + x3 ≥ 50 x3 + x4 ≥ 60 x4 + x5 ≥ 40 x5 + x6 ≥ 30 24
Turni Ospedalieri Su Lindo: min 8 x1 + 8 x2 + 8 x3 + 8 x4 + 8 x5 + 4 x6 s.t. 1T) x1 > 70 2T) x1+x2 > 80 3T) x2+x3 > 50 4T) x3+x4 > 60 5T) x4+x5 > 40 6T) x5+x6 > 30 end
Turni Ospedalieri Soluzione: OBJECTIVE FUNCTION VALUE 1) 1320.000 1) 1320.000 VARIABLE VALUE REDUCED COST X1 70.000000 0.000000 X2 10.000000 0.000000 X3 40.000000 0.000000 X4 20.000000 0.000000 X5 20.000000 0.000000 X6 10.000000 0.000000 ROW SLACK OR SURPLUS DUAL PRICES 1T) 0.000000 -4.000000 2T) 0.000000 -4.000000 3T) 0.000000 -4.000000 4T) 0.000000 -4.000000 5T) 0.000000 -4.000000 6T) 0.000000 -4.000000