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

Ricerca Operativa - PL - Pizze - 6.02.07

Torna alla pagina di Ricerca Operativa


 :: 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)
  • gradij (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:

  • xi (quantità di pizza i=1..3 mangiata dall'amico 1)
  • yi (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 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.

Vincoli

  • come prima cosa definiamo il vincolo che rappresenta la funzione obiettivo che riguarda il secondo amico:
    (somma)i gradij * yi >= 0 (per j=2)

Caso (a):

  • vincolo che impone che ogni pizza sia mangiata per intero:
    xi + yi = 1 (per ogni i)

Caso (b):

  • vincolo che impone che ogni pizza sia mangiata per intero:
    xi + yi = 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 xi = (somma)i yi
    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

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: ??

Torna alla pagina di Ricerca Operativa