Ottimizzazione marginale R. Pesenti Problema di faceness Formulazione del problema Il vostro supermercato deve disporre i prodotti A, B, C e D sugli scaffali 1, 2, e 3 ognuno di lunghezza 100 cm. Dato il diverso posizionamento degli scaffali, il numero di prodotti venduti giornalmente varia a seconda della della disposizione dei prodotti sugli stessi (vedi Tab. 1-3). 1 10 8 6 12 scaffali 2 15 12 7 12 3 5-2 12 Table 1: Prodotti venduti giornalmente per 100cm di esposizione 13 12 10 9 Table 2: Richiesta giornaliera massima del mercato 5 7 4 10 Table 3: Profitti per unità di prodotto Per motivi contrattuali dovete dedicare almeno 30cm di scaffalature ad ogni prodotto e, in particolare, ai prodotti A dovete dedicare complessivamente almeno 60cm sugli scaffali 1 e 2. Per motivi di sicurezza il prodotto B non deve essere a portata di bambino e quindi non deve essere esposto sullo scaffale 3. Supponendo, in prima approssimazione, di potere esporre anche quantità frazionarie di prodotto, formulare un modello di programmazione lineare per il problema di faceness che state affrontando. Stabilire quindi se conviene modificare la disposizione attuale dei prodotti sugli scaffali riportata in Tab. 4. In particolare, determinare per il profitto marginale di ogni prodotto per ogni cm in più a disposizione su ogni scaffale. Tramite l utilizzo opportuno SW determinate infine la disposizione ottimale. 1
1 40 30 30 0 scaffali 2 40 20 20 20 3 0-70 30 Table 4: Configurazione attuale Risposta Le variabili decisionali del problema sono x ij : il numero di cm dedicati al prodotto i sullo scaffale j. Si deve quindi ottenere dai dati disponibili il profitto atteso per ogni cm di scaffale dedicato ai differenti prodotti (vedi Tab. 5). Il profitto attuale è di 162,00 euro. 1 0,5 0,56 0,24 1,2 scaffali 2 0,75 0,84 0,28 1,2 3 0,25-0,08 1,2 Table 5: Profitti per cm max Π = 0, 5x A1 + 0, 75x A2 + 0, 25x A3 + 0, 56x B1 + 0, 84x B2 + 0, 24x C1 + +0, 28x C2 + 0, 08x C3 + 1, 2x D1 + 1, 2x D2 + 1, 2x D3 (1) x A1 + x B1 + x C1 + x D1 100 (2) x A2 + x B2 + x C2 + x D2 100 (3) x A3 + x C3 + x D3 100 (4) x A1 + x A2 + x A3 30 (5) x B1 + x B2 30 (6) x C1 + x C2 + x C3 30 (7) x D1 + x D2 + x D3 30 (8) x A1 + x A2 60 (9) 0, 1x A1 + 0, 15x A2 + 0, 05x A3 13 (10) 0, 08x B1 + 0, 12x B2 12 (11) 0, 06x C1 + 0, 07x C2 + 0, 02x C3 10 (12) 0, 12x D1 + 0, 12x D2 + 0, 12x D3 9 (13) x ij 0 i {A, B, C, D}, j {1, 2, 3} (14) I vincoli (2-4) impongono che lo spazio occupato dai prodotti su ogni scaffale non possa eccedere 100cm. 2
I vincoli (5-8) impongono che lo spazio occupato dai prodotti sia almeno 30cm. Il vincolo (9) impone che lo spazio occupato dal prodotto A sugli scaffali 1 e 2 sia almeno 60cm. I vincoli (10-13) impongono che lo spazio occupato dai prodotti non ecceda quello necessario a vendere tutti i prodotti assorbibili dal mercato. Riscriviamo ora il problema (1-13) in forma standard, usando solo vincoli di uguaglianza (a parte i vincoli sul segno delle variabili). max Π = 0, 5x A1 + 0, 75x A2 + 0, 25x A3 + 0, 56x B1 + 0, 84x B2 + 0, 24x C1 + +0, 28x C2 + 0, 08x C3 + 1, 2x D1 + 1, 2x D2 + 1, 2x D3 (15) x A1 + x B1 + x C1 + x D1 + s 1 = 100 (16) x A2 + x B2 + x C2 + x D2 + s 2 = 100 (17) x A3 + x C3 + x D3 + s 3 = 100 (18) x A1 + x A2 + x A3 s A = 30 (19) x B1 + x B2 s B = 30 (20) x C1 + x C2 + x C3 s C = 30 (21) x D1 + x D2 + x D3 s D = 30 (22) x A1 + x A2 s S = 60 (23) 0, 1x A1 + 0, 15x A2 + 0, 05x A3 + q A = 13 (24) 0, 08x B1 + 0, 12x B2 + q B = 12 (25) 0, 06x C1 + 0, 07x C2 + 0, 02x C3 + q C = 10 (26) 0, 12x D1 + 0, 12x D2 + 0, 12x D3 + q D = 9 (27) x ij, s k, q i 0 i {A, B, C, D}, j {1, 2, 3}, k {1, 2, 3, A; B, C, D, S} (28) Il valore delle variabili di slack s 1, s 2 e s 3 indica lo spazio disponibile sugli scaffali. Il valore delle variabili di surplus da s A a s S indica lo spazio dedicato ai vari prodotti in eccesso a quanto stabilito dagli obblighi contrattuali. Il valore delle variabili di slack da q A a q D indica la rimanente capacità di assorbimento dei prodotti da parte del mercato. Complessivamente si hanno n = 11 + 12 = 23 variabili e m = 12 vincoli. Di queste 17 sono diverse da zero. La soluzione corrente non si trova su un vertice del poliedro delle soluzioni ammissibili. Infatti ogni soluzione di base, cioè che giace su un vertice, è caratterizzata da avere almeno m n componenti nulle. Nel caso specifico si dovrebbero avere 11 componenti nulle e quindi al più 12 valori diversi da zero. La soluzione attualmente implementata probabilmente non è ottima, infatti a meno che non ci siano soluzioni ottime equivalenti, la soluzione ottima di un problema di programmazione lineare giace su un vertice. In questa situazione miglioramenti marginali della soluzione corrente potranno essere ricercati non solo aumentando il valore di una variabile correntemente a zero (operazione che di solito corrisponde a spostare la soluzione corrente da un vertice ad un altro muovendosi lungo uno spigolo dell insieme delle soluzioni ammissibili) ma anche diminuendo il valore di qualche variabile correntemente positiva (operazione che corrisponde ad 3
avvicinare la soluzione corrente ad un vertice dell insieme delle soluzioni ammissibili). Per procedere alla verifica se cambiamenti marginali delle scelte possono condurre a profitti migliori si deve esprimere il valore di m = 12 variabili (preferibilmente positive) in funzione delle altre n m = 11 variabili (preferibilmente nulle, obbligatoriamente nulle se alcune delle precedenti m variabili hanno valore zero). La difficoltà che si incontra in questa operazione è la scelta delle m = 12 variabili, infatti devono essere tali da potere essere espresse in funzione delle rimanenti, ciò implica che m = 12 variabili devono essere scelte in modo tale che le corrispondenti colonne all interno della matrice 12 23 dei coefficienti 1 0 0 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0, 1 0, 15 0, 05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0, 08 0, 12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0, 06 0, 07 0, 02 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0, 12 0, 12 0, 12 0 0 0 0 0 0 0 0 0 0 0 1 definiscano una sottomatrice quadrata 12 12 invertibile (questa sottomatrice viene detta di base). In particolare soddisfano i requisiti richiesti le variabili x C1, x C2, x C3, s A, s B, s C, s D, s F, q A, q B, q C e q D. Il problema può essere riscritto come max Π = 60 + 0, 26x A1 + 0, 47x A2 + 0, 17x A3 + 0, 32x B1 + 0, 56x B2 + +0, 96x D1 + 0, 92x D2 + 1, 12x D3 0, 24s 1 0, 28s 2 0, 08s 3 (29) x C1 = 100 x A1 x B1 x D1 s 1 (30) x C2 = 100 x A2 x B2 x D2 s 2 (31) x C3 = 100 x A3 x D3 s 3 (32) s A = 30 + x A1 + x A2 + x A3 (33) s B = 30 + x B1 + x B2 (34) s C = 270 x A1 x A2 x A3 x B1 x B2 x D1 x D2 x D3 s 1 s 2 s 3 (35) s D = 30 + x D1 + x D2 + x D3 (36) s S = 60 + x A1 + x A2 (37) q A = 13 0, 1x A1 0, 15x A2 0, 05x A3 (38) q B = 12 0, 08x B1 0, 12x B2 (39) q C = 10 + 0, 06x A1 + 0, 07x A2 + 0, 02x A3 + 0, 06x B1 + 0, 07x B2 + +0, 06x D1 + 0, 07x D2 + 0, 026x D3 + 0, 06s 1 + 0, 07s 2 + 0, 02s 3 (40) q D = 9 0, 12x D1 0, 12x D2 0, 12x D3 + (41) x ij, s k, q i 0 i {A, B, C, D}, j {1, 2, 3}, k {1, 2, 3, A; B, C, D, S} (42) Dalla nuova formulazione del problema si può osservare che il massimo incremento marginale del profitto si ottiene aumentando lo spazio assegnato al prodotto D sullo scaffale 3. Infatti il coefficiente di x D3 è 1,12, 4
quindi per ogni cm in più assegnato a D sullo scaffale 3 si ottiene un incremento di profitto di 1, 12 euro. La variabile x D3 compare nei vincoli (32), (35), (36) e (41) e, in particolare, nei vincoli (32), (35) e (41) ha segno negativo. Sono questi ultimi tre vincoli che devono essere tenuti in considerazione per determinare il valore massimo che si può assegnare a x D3, infatti in ogni caso non può essere ammesso che le variabili x C3, s C e q D assumano valore negativo. Dato che attualmente x C3 = 70, s C = 90 e q D = 3 e dati i coefficienti di x D3 nei vincoli (32), (35) e (41), si ottiene che la variazione massima che può subire x D3 è min{70, 90 3 0,12 } = 25. Tale variazione avviene a danno dello spazio assegnato al prodotto C sullo scaffale 3. La nuova assegnazione dei prodotti è quella riportata in Tab. 6 a cui corrisponde un incremento di profitto di 28,00 euro che porta il profitto totale da 162,00 a 190,00 euro. 1 40 30 30 0 scaffali 2 40 20 20 20 3 0-45 55 Table 6: Configurazione nuova Una volta trovata una distribuzione dei prodotti sugli scaffali migliore della precedente ci si ripropone la domanda se esiste una configurazione ancora migliore e si itera il procedimento. Tre considerazioni finali. Nell esempio si è deciso di cercare di aumentare lo spazio a disposizione del prodotto D sullo scaffale 3, molte altre scelte porterebbero comunque a un aumento del profitto. Ad esempio, aumentare lo spazio a disposizione per il prodotto B sullo scaffale 2 condurrebbe ad un incremento del profitto di 0,56 euro per cm. Il profitto marginale è minore degli 1,12 euro per cm del prodotto D, ma si noti che conviene aumentare lo spazio a disposizione del prodotto D per al più 25cm con un incremento complessivo del profitto di 28,00 euro. Se dai conti risultasse che è possibile aumentare lo spazio a disposizione di B, ad esempio, per 60cm con un incremento complessivo del profitto di 33,60 euro, allora converrebbe dare più spazio a B piuttosto che a D. Analoghi ragionamenti valgono per tutti i prodotti sui vari scaffali. Nella pratica non conviene fare tutti questi conti, risulta più conveniente iterativamente scegliere una qualunque disposizione che porti ad un aumento del profitto. In ogni caso, se il problema è lineare, dopo un numero (di solito) relativamente limitato di iterazioni si giunge a una soluzione ottima. La seconda considerazione riguarda sul come comportarsi in presenza di profitti marginali negativi. Si supponga ad esempio che la funzione obiettivo si presentasse come segue max Π = 60 1, 26x A1 + 0, 47x A2 2, 17x A3 + 0, 32x B1 + 0, 56x B2 + +0, 96x D1 + 0, 92x D2 + 1, 12x D3 0, 24s 1 0, 28s 2 0, 08s 3. Si considerino in particolare i profitti marginali del prodotto A sullo scaffale 3 e del prodotto A sullo scaffale 1. Essendo i profitti marginali negativi, in entrambi i casi non converrebbe aumentare lo spazio a disposizione di A, converrebbe diminuirlo. In particolare se si diminuisse lo spazio a disposizione di A sullo scaffale 3 si avrebbe un incremento del profitto di 2,17 euro per cm. Questa operazione non è però attuabile in quanto 5
la soluzione corrente non prevede alcun prodotto sullo scaffale 3. Viceversa, siccome attualmente x A1 è strettamente maggiore di zero si potrebbe diminuire lo spazio a disposizione di A sullo scaffale 1 per un incremento del profitto di 1,26 euro per cm. La terza considerazione riguarda il fatto che, ovviamente, conviene fare eseguire tutti i calcoli alle macchine. Se si riesce a formulare il problema di interesse, qualunque esso sia, sotto forma di problema di programmazione matematica, la soluzione ottima può essere ottenuta utilizzando algoritmi specializzati sul calcolatore. Gli algoritmi si basano su principi analoghi a quelli presentati in questa soluzione, ma essendo eseguiti da una macchina giungono alla soluzione ottima, o almeno ad una soluzione buona, in tempi molto più brevi di un essere umano. La soluzione ottima del problema (15-27) è determinabile in una frazione di secondi e indica che un profitto massimo di 224,70 euro è ottenibile con la disposizione dei prodotti come in Tab. 7. 1 0 95 5 0 scaffali 2 63,33 36,67 0 0 3 0-25 75 Table 7: Configurazione ottima Problema di produzione Formulazione del problema La ACME s.p.a. produce stampi metallici. Da un analisi dei processi produttivi è emerso che le risorse più critiche dell azienda sono la disponibilità del personale, la disponibilità delle presse e la disponibilità della verniciatura. Attualmente l azienda produce tre tipi di stampi S 1, S 2 e S 3, nelle seguenti quantità annuali q 1 = 50000, q 2 = 20000 e q 3 = 30000. Ogni stampo di tipo S 1 produce un profitto di 2.0K$, ogni stampo di tipo S 2 produce un profitto di 1.6K$, infine ogni stampo di tipo S 3 produce un profitto di 1.8K$. Valutare se conviene introdurre la produzione di almeno una delle tipologie di stampi S 4 e S 5 sapendo che ogni stampo di tipo S 4 produce un profitto di 1.2K$ e ogni stampo di tipo S 5 produce un profitto di 2.3K$. Eseguire la valutazione sapendo che: ogni stampo S 1 richiede un ora uomo, ogni stampo S 2 richiede due ore uomo, ogni stampo S 3 richiede tre ore uomo, ogni stampo S 4 richiede due ore uomo, ogni stampo S 5 richiede un ora uomo. ogni stampo S 2 richiede due volte il tempo pressa di uno stampo S 1, ogni stampo S 3 richiede 1.5 volte il tempo pressa di uno stampo S 1, ogni stampo S 4 richiede tre volte il tempo pressa di uno stampo S 1, ogni stampo S 5 richiede due volte il tempo pressa di uno stampo S 1 ; ogni stampo S 4 richiede due volte il tempo verniciatura di uno stampo S 5, ogni stampo S 3 richiede 3/4 volte il tempo verniciatura di uno stampo S 5, ogni stampo S 1 richiede tempo verniciatura uguale 6
alla somma dei tempi verniciatura di uno stampo S 5 e di uno stampo S 3, ogni stampo S 2 richiede tempo verniciatura uguale alla somma dei tempi verniciatura di uno stampo S 1 e di uno stampo S 4. [Suggerimento: formulare prima il problema in termini di programmazione lineare.] Risposta Le variabili decisionali riguardano la quantità da produrre di ogni stampo. Si hanno quindi le variabili decisionali da q 1 a q 5, che nella soluzione corrente valgono q 1 = 50000, q 2 = 20000, q 3 = 30000, q 4 = 0 e q 5 = 0. Formulazione del problema di programmazione lineare max Π = 2.0q 1 + 1.6q 2 + 1.8q 3 + 1.2q 4 + 2.3q 5 (43) q 1 + 2q 2 + 3q 3 + 2q 4 + q 5 180000 (44) q 1 + 2q 2 + 1.5q 3 + 3q 4 + 2q 5 135000 (45) 1, 75q 1 + 3, 75q 2 + 0, 75q 3 + 2q 4 + q 5 185000 (46) q i 0 i {1, 2, 3, 4, 5}. (47) Il vincolo (44) impone che la produzione usi al più le oreuomo disponibili correntemente, nel testo del problema si afferma infatti che le oreuomo sono una risorsa critica, ovvero che sono completamente sfruttate dalla soluzione corrente. Il termine noto del vincolo (44) è ottenuto tenendo conto che nella produzione corrente sono utilizzate 1 50000 + 2 20000 + 3 30000 = 180000 oreuomo. Il vincolo (45) impone che la produzione usi al più il tempo pressa disponibile correntemente, nel testo del problema si afferma infatti che il tempo pressa è una risorsa critica, ovvero che è completamente sfruttato dalla soluzione corrente. Non essendo disponibili dei tempi assoluti, si considera come unità di tempo pressa il tempo richiesto da uno stampo S 1. Il termine noto del vincolo (45) è ottenuto tenendo conto che nella produzione corrente è utilizzato 1 50000 + 2 20000 + 1, 5 30000 = 135000 tempo pressa. Il vincolo (46) impone che la produzione usi al più il tempo verniciatura disponibile correntemente, nel testo del problema si afferma infatti che il tempo verniciatura è una risorsa critica, ovvero che è completamente sfruttato dalla soluzione corrente. Non essendo disponibili dei tempi assoluti, si considera come unità di tempo verniciatura il tempo richiesto da uno stampo S 5. Il termine noto del vincolo (46) è ottenuto tenendo conto che nella produzione corrente è utilizzato 1, 75 50000+3, 75 20000+0, 75 30000 = 185000 tempo verniciatura. Il problema precedente se riscritto in forma standard diventa max Π = 2.0q 1 + 1.6q 2 + 1.8q 3 + 1.2q 4 + 2.3q 5 (48) q 1 + 2q 2 + 3q 3 + 2q 4 + q 5 + s O = 180000 (49) q 1 + 2q 2 + 1.5q 3 + 3q 4 + 2q 5 + s P = 135000 (50) 1, 75q 1 + 3, 75q 2 + 0, 75q 3 + 2q 4 + q 5 + s V = 185000 (51) q i 0 i {1, 2, 3, 4, 5} (52) s j 0 j {O, P, S}, (53) 7
dove s O, s P, s V rappresentano rispettivamente le oreuomo, il tempo presso e il tempo verniciatura che eventualmente avanzano data una fissata produzione. Correntemente queste variabili di slack valgono 0. Siccome siamo interessati a determinare se vale la pena produrre stampi S 4 e S 5, dobbiamo determinare i profitti ridotti di tali stampi. A tal fine dobbiamo esprimere i valori delle variabili q 1, q 2 e q 3 relative alla produzione attuale nei termini delle variabili q 4 e q 5 e delle rimanenti variabili attualmente nulle, i.e., le variabili di slack. Riformulando il problema in tali termini si ottiene max Π = 186000 50q 4 40, 8q 5 + 12, 8s O 31, 6s P + 9, 6s V (54) q 1 = 50000 40q 4 33q 5 + 11s O 26s P + 8s V (55) q 2 = 20000 + 18q 4 + 15q 5 5s O + 12s P 4s V (56) q 3 = 30000 + 0, 67q 4 + 0, 67q 5 0, 67s O + 0, 67s P (57) q i 0 i {1, 2, 3, 4, 5} (58) s j 0 j {O, P, S}, (59) Osservando la funzione obiettivo (54), si deduce che attualmente non conviene produrre stampi S 4 o S 5 dato che sia q 4 che q 5 hanno profitti marginali negativi. Per altro, l attuale piano di produzione non è ottimo, infatti risulta addirittura conveniente non sfruttare del tutto le risorse critiche. In particolare, il coefficiente 12, 8 della variabile s O nella funzione obiettivo indica che potremmo risparmiare un orauomo e avere un incremento di profitto se producessimo 11 stampi S 1 in più sacrificando la produzione di 5 stampi S 2 e 0, 67 stampi S 3. Sualla base di questo ragionamento e ammesso di avere a sufficienza risorse non critiche, si potrebbe portare s O a 400, cioè sacrificare completamente la produzione di S 2 e ridurre la produzione di S 3 di = 0, 67 4000 = 2680 stampi per produrre 44000 stampi S 1 in più, con un incremento del profitto di 12, 8 4000 = 51200. La soluzione ottenuta porta ad incremento di profitto del 27%, e come si potrebbe verificare ripetendo il ragionamento precedente a partire da questa nuova soluzione è anche ottima. 8