Torna alla pagina di Ricerca Operativa
:: Ricerca Operativa - PL - Pizze - 6.02.07 ::
Per festeggiare il superamento dell’esame di Ricerca Operativa, due amici escono in pizzeria e, affamatissimi per l’immane sforzo compiuto, ordinano tre pizze diverse. Ognuno dei due attribuisce diversi valori di gradimento percentuale alle tre pizze; i valori sono riportati nel file PIZZE.TXT. I due amici vorrebbero dividersi le pizze in modo che ciascuno sia il più contento possibile e, riconoscendo la conflittualità dei loro obiettivi, decidono ovviamente di formulare il problema e risolverlo in modo scientifico.
Considerare separatamente i due casi: (a) senza vincoli sulla quantità di pizza mangiata da ciascuno; (b) con il vincolo che ciascuno mangi l’equivalente di una pizza e mezzo.
Trovare la soluzione ottima con le seguenti funzioni obiettivo:
Le pizze sono tre: ai formaggi, ai salumi, alle verdure. ======================================================== Tabella 1: Percentuale di gradimento Amico Formaggi Salumi Verdure 1 0.3 0.5 0.2 2 0.7 0.2 0.1
Conviene separare in due variabili distinte le quantità di pizze mangiate dai due amici. Quindi:
Le variabili sono continue e non negative.
Nel problema non ci viene chiesto di massimizzare il gradimento di uno solo dei due amici, ma di entrambi. Dovremmo quindi avere due funzioni obiettivo per ciascuno di essi da considerare contemporaneamente, ma dal momento che ciò non è realizzabile trasformeremo una delle due in un vincolo (che definiremo poi).
Come funzione obiettivo manterremo:
max (somma)i gradij * xi (per j=1)
Per poter rispondere alle richieste del testo (massimizzare il grado di contentezza del più scontento, massimizzare il grado di contentezza del più contento, massimizzare il grado di contentezza totale) ricorreremo in un secondo momento con l'analisi parametrica.
Caso (a):
Caso (b):
! esercizio - Pizze ! variabili: x(i) = quantità di pizza i mangiata dall'amico 1 ! y(i) = quantità di pizza i mangiata dall'amico 2 ! le variabili sono continue e non negative ! funzione obiettivo (riguardante l'amico 1) max 0.3 x1 + 0.5 x2 + 0.2 x3 st ! vincolo che trasforma la funzione obiettivo riguardante l'amico 2 vinFO2) 0.7 y1 + 0.2 y2 + 0.1 y3 >= 0 ! caso (a): vincolo che impone di mangiare la pizza per intero pizza1) x1 + y1 = 1 pizza2) x2 + y2 = 1 pizza3) x3 + y3 = 1 end
! esercizio - Pizze ! variabili: x(i) = quantità di pizza i mangiata dall'amico 1 ! y(i) = quantità di pizza i mangiata dall'amico 2 ! le variabili sono continue e non negative ! funzione obiettivo (riguardante l'amico 1) max 0.3 x1 + 0.5 x2 + 0.2 x3 st ! vincolo che trasforma la funzione obiettivo riguardante l'amico 2 vinFO2) 0.7 y1 + 0.2 y2 + 0.1 y3 >= 0 ! caso (b): vincolo che impone di mangiare la pizza per intero pizza1) x1 + y1 = 1 pizza2) x2 + y2 = 1 pizza3) x3 + y3 = 1 ! caso (b): vincolo che impone che gli amici mangino la stessa quantità di pizza ugPizza) x1 + x2 + x3 - y1 - y2 - y3 = 0 end
Riportiamo il report della soluzione del caso (a):
LP OPTIMUM FOUND AT STEP 0 OBJECTIVE FUNCTION VALUE 1) 1.000000 VARIABLE VALUE REDUCED COST X1 1.000000 0.000000 X2 1.000000 0.000000 X3 1.000000 0.000000 Y1 0.000000 0.300000 Y2 0.000000 0.500000 Y3 0.000000 0.200000 ROW SLACK OR SURPLUS DUAL PRICES VINFO2) 0.000000 0.000000 PIZZA1) 0.000000 0.300000 PIZZA2) 0.000000 0.500000 PIZZA3) 0.000000 0.200000 NO. ITERATIONS= 0
Facciamo ora l'analisi parametrica sul vincolo che rappresenta la seconda funzione obiettivo, fissando il nuovo valore a 1:
RIGHTHANDSIDE PARAMETRICS REPORT FOR ROW: VINFO2 VAR VAR PIVOT RHS DUAL PRICE OBJ OUT IN ROW VAL BEFORE PIVOT VAL 0.000000E+00 0.000000E+00 1.00000 SLK 2 Y1 2 0.000000E+00 0.000000E+00 1.00000 X1 Y3 3 0.700000 -0.428571 0.700000 X3 Y2 5 0.800000 -2.00000 0.500000 1.00000 -2.50000 0.372529E-07
Rispondiamo ora alle richieste del testo:
Riportiamo il report della soluzione del caso (b):
LP OPTIMUM FOUND AT STEP 2 OBJECTIVE FUNCTION VALUE 1) 0.6500000 VARIABLE VALUE REDUCED COST X1 0.500000 0.000000 X2 1.000000 0.000000 X3 0.000000 0.100000 Y1 0.500000 0.000000 Y2 0.000000 0.200000 Y3 1.000000 0.000000 ROW SLACK OR SURPLUS DUAL PRICES VINFO2) 0.450000 0.000000 PIZZA1) 0.000000 0.150000 PIZZA2) 0.000000 0.350000 PIZZA3) 0.000000 0.150000 UGPIZZA) 0.000000 0.150000 NO. ITERATIONS= 2
Facciamo ora l'analisi parametrica sul vincolo che rappresenta la seconda funzione obiettivo, fissando il nuovo valore a 1:
RIGHTHANDSIDE PARAMETRICS REPORT FOR ROW: VINFO2 VAR VAR PIVOT RHS DUAL PRICE OBJ OUT IN ROW VAL BEFORE PIVOT VAL 0.000000E+00 0.000000E+00 0.650000 SLK 2 X3 2 0.450000 0.000000E+00 0.650000 X1 Y2 3 0.750000 -0.166667 0.600000 Y3 ART 5 0.800000 -3.00000 0.450000 1.00000 -INFINITY INFEASIBLE
Rispondiamo ora alle richieste del testo: