cerca
RO - PNL - Compito del 7 aprile 2008
modifica cronologia stampa login logout

Wiki

UniCrema


Materie per semestre

Materie per anno

Materie per laurea


Help

RO - PNL - Compito del 7 aprile 2008

 :: RO - PNL - Compito del 7 aprile 2008 ::

Testo

Il reparto vendite di un’azienda deve studiare la quantità ottima di prodotti da immettere sul mercato. Da rilevamenti effettuati dagli analisti del mercato risulta che il prezzo di vendita a cui gli acquirenti sono disposti a comprare i prodotti è correlato alla quantità di prodotti posti in commercio: maggiore è la quantità di prodotti offerta e minore è il prezzo a cui la si può vendere.

Si ritiene che la relazione tra quantità q e prezzo p sia la seguente: p = alfa * beta * e -gamma * quantità.

Sono note le quantità di materie prime necessarie alla produzione ed è nota la composizione dei prodotti ottenibili dalle materie prime.

Formulare il problema, classificarlo e risolverlo con i dati del file PREZZI.TXT. Discutere l’ottimalità e l’unicità della soluzione ottenuta.

I prodotti sono 3. Le materie prime sono 5.

Tabella 1: composizione dei prodotti (unità di materia per ogni unità di prodotto)

              Prodotto
Materia     P1   P2   P3
   M1       20   15   30
   M2       12   18   40
   M3       25   21   30
   M4       30   38   18
   M5       25   12   33

Tabella 2: Parametri per il calcolo dei prezzi

Prodotto    Alfa   Beta   Gamma
   P1        50     50     0.8
   P2        48     55     0.2
   P3        65     45     0.5

Tabella 3: Disponibilità di materie (numero di unità per periodo)

Materia  Quantità
   M1      1600
   M2      1800
   M3      2200
   M4      3800
   M5      1300

Soluzione

Sul sito non è presente lo zip con il codice Lingo ufficiale, quindi quella che segue è un tentativo di soluzione, e ho l'idea che non sia nemmeno tanto felice... vabbeh.

Dati

I dati di questo problema sono:

  • quanto tipo di materiale serve per produrre un certo prodotto;
  • le variabili alfa, beta e gamma per calcolare il prezzo di un prodotto;
  • la quantità di materia prima disponibile, per ognuno dei 5 tipi di materiale.

Variabili

La variabile qui dovrebbe essere solo quanti esemplari di un certo prodotto produrre, e sempra una variabile continua non negativa.

Funzione obiettivo

Sembra che la funzione obiettivo consista nel massimizzare il prezzo del singolo prodotto, tramite quelle funzioni viste prima.

Vincoli

L'unico vincolo che mi viene in mente è:

  • l'assorbimento di materie prime deve essere inferiore a quelle disponibili

Discussione della soluzione

Comunque vada, questo non è un problema lineare perché ho le variabili all'esponente etc. (c'entra qualcosa?). Pertanto, la soluzione che si spera uscirà da Lingo sarà un ottimo locale, e non è garantito che sia un ottimo globale.

Codice Lingo

Ed ecco il presunto codice Lingo.

!Prezzi. PNL del 7 aprile 2008;

model:

sets:
prodotti /1..3/; 
q /1..3/: x; ! Variabile: numero di quantità di prodotto i da produrre;
dispmat /1..5/: tabdisp;
tabmat (dispmat, prodotti): tabella; ! Faccio riferimento al data "tabella";
alfa /1..3/: tabalfa;
beta /1..3/: tabbeta;
gamma /1..3/: tabgamma;

endsets


data:
! Tabella delle materie per prodotto;
! Le materie sono in colonna, i prodotti sono in riga;
tabella = 20   15   30
	   12   18   40
        25   21   30
        30   38   18
        25   12   33;

! Parametri per il calcolo del prezzo del prodotto;
tabalfa = 50 48 65;
tabbeta = 50 55 45;
tabgamma = 0.8 0.2 0.5;

! Disponibilità delle materie;
tabdisp = 1600 1800 2200 3800 1300;

enddata

! Funzione obiettivo;
max = @sum(prodotti(i): tabalfa(i) + (tabbeta(i) * 2.78 ^((0 - tabgamma(i)) * x(i))));

! Vincoli;
x(1)*tabella(1,1) + x(2) * tabella(1,2) + x(3) * tabella(1,3) <= tabdisp(1);
x(1)*tabella(2,1) + x(2) * tabella(2,2) + x(3) * tabella(2,3) <= tabdisp(2);
x(1)*tabella(3,1) + x(2) * tabella(3,2) + x(3) * tabella(3,3) <= tabdisp(3);
x(1)*tabella(4,1) + x(2) * tabella(4,2) + x(3) * tabella(4,3) <= tabdisp(4);
x(1)*tabella(5,1) + x(2) * tabella(5,2) + x(3) * tabella(5,3) <= tabdisp(5);
x(1) > 0;
x(2) > 0;
x(3) > 0;

end

Quello che esce

Quello che esce non è propriamente positivo... Faccio un rapido copia e incolla:

Local optimal solution found.
Objective value:                              313.0000
Infeasibilities:                              0.000000
Extended solver steps:                               5
Total solver iterations:                            24

                       Variable           Value        Reduced Cost
                          X( 1)        0.000000            40.89804
                          X( 2)        0.000000            11.24696
                          X( 3)        0.000000            23.00515
                    TABDISP( 1)        1600.000            0.000000
                    TABDISP( 2)        1800.000            0.000000
                    TABDISP( 3)        2200.000            0.000000
                    TABDISP( 4)        3800.000            0.000000
                    TABDISP( 5)        1300.000            0.000000
...

                            Row    Slack or Surplus      Dual Price
                              1        313.0000            1.000000
                              2        1600.000            0.000000
                              3        1800.000            0.000000
                              4        2200.000            0.000000
                              5        3800.000            0.000000
                              6        1300.000            0.000000

Come si vede, Lingo stabilisce che è meglio non produrre niente... ma qui non sono molto ferrato e non sono in grado di interpretare bene questa roba!


Torna alla pagina di Ricerca Operativa