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