cerca
Ricerca Operativa - PL - Pizze - 6.02.07
modifica cronologia stampa login logout

Wiki

UniCrema


Materie per semestre

Materie per anno

Materie per laurea


Help

Uni.RO-PL-6feb2007 History

Hide minor edits - Show changes to output

Changed line 64 from:
Caso (a)\\
to:
!!!Caso (a)
Deleted line 66:
Deleted line 67:
Deleted lines 70-71:
Deleted line 71:
Deleted lines 75-76:
Deleted line 76:
Deleted lines 78-79:
Deleted line 79:
Deleted line 83:
Changed line 87 from:
Caso (b):\\
to:
!!!Caso (b):
Deleted line 89:
Deleted line 90:
Deleted lines 93-94:
Deleted line 94:
Deleted lines 98-99:
Deleted line 99:
Deleted lines 101-102:
Deleted line 102:
Deleted line 109:
Added lines 159-202:
!!!Caso (b)
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:
* massimizzare il grado di contentezza del più contento: in questo caso la soluzione ottima si trova nel punto (0.65 , 0.45)
* massimizzare il grado di contentezza del più scontento: per lo stesso ragionamento fatto nel caso (a), la soluzione ottima si trova nel punto (0.65 , 0.45)
* massimizzare il grado di contentezza totale: ??
Added lines 1-185:
[[Torna alla pagina di Ricerca Operativa -> Ricerca Operativa]]
----

(:title Ricerca Operativa - PL - Pizze - 6.02.07:)
%titolo%''':: Ricerca Operativa - PL - Pizze - 6.02.07 ::'''

!!Testo del problema
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:
*massimizzare il grado di contentezza del più scontento
*massimizzare il grado di contentezza del più contento
*massimizzare il grado di contentezza totale

!!!Dati
[@
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
@]

!!Formulazione del problema
!!!Dati
* '''amici = 2''' (numero di amici)
* '''pizze = 3''' (numero di pizze)
* '''grad'_ij_'''' (percentuale gradimento della pizza i=1..3 per l'amico j=1..2) [%]

!!!Variabili
Conviene separare in due variabili distinte le quantità di pizze mangiate dai due amici. Quindi:
* '''x'_i_'''' (quantità di pizza i=1..3 mangiata dall'amico 1)
* '''y'_i_'''' (quantità di pizza i=1..3 mangiata dall'amico 2)

Le variabili sono continue e non negative.

!!!Funzione obiettivo
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_' grad'_ij_' * x'_i_'''' (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.

!!!Vincoli
* come prima cosa definiamo il vincolo che rappresenta la funzione obiettivo che riguarda il secondo amico:\\
'''(somma)'_i_' grad'_ij_' * y'_i_' >= 0''' (per j=2)

Caso (a):
* vincolo che impone che ogni pizza sia mangiata per intero:\\
'''x'_i_' + y'_i_' = 1''' (per ogni i)

Caso (b):
* vincolo che impone che ogni pizza sia mangiata per intero:\\
'''x'_i_' + y'_i_' = 1''' (per ogni i)
* vincolo che impone che ogni amico mangi la stessa quantità di pizza. Notare che non va bene un'espressione con questa forma:\\
'''(somma)'_i_' x'_i_' = (somma)'_i_' y'_i_''''\\
perché sappiamo che Lindo vuole

!!Lindizzazione del problema
Caso (a)\\
[@
! 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
@]

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 (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
@]

!!Le tre funzioni obiettivo richieste nel testo
!!!Caso (a)
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:
* massimizzare il grado di contentezza del più contento: evidentemente è la situazione in cui uno dei due amici mangia tutto e l'altro non mangia niente. Infatti quando uno dei due amici ha soddisfazione complessiva 1, l'altro ha 0
* massimizzare il grado di contentezza del più scontento: dobbiamo confrontare nei risultati dell'analisi parametrica la colonna del valore attuale del vincolo sulla seconda funzione obiettivo ("RHS VAL") e il valore ottimo corrispondente del problema ("OBJ VAL"). In questo modo osserviamo che l'OBJ VAL che massimizza l'RHS VAL (ricordando sempre che il primo deve essere maggiore del secondo) è quello in cui il primo e il secondo amico hanno grado di contentezza pari a 0.7
* massimizzare il grado di contentezza totale: evidentemente è lo stesso risultato del punto precedente, ovvero quello in cui entrambi hanno grado di contentezza pari a 0.7


----
[[Torna alla pagina di Ricerca Operativa -> Ricerca Operativa]]