Problema di Knapsack Intero

Messaggioda Gagliano » 02/11/2011, 11:22

Salve a tutti. Avrei dei dubbi su un problema di Knapsack Intero, quindi di programmazione lineare intera. Il problema è il seguente :

max\(\displaystyle 50x1 + 18x2 + 3x3 +11x4 \)
s.v. \(\displaystyle 24x1+9x2+2x3+6x4 \leqslant 70\)
Con \(\displaystyle xj \geqslant 0 \)

Vi spiego il procedimento che uso io. Ho ordinato in ordine decrescente le variabili in base ai rapporti cj/aj.
quindi ho :
max\(\displaystyle 50y1 + 18y2 + 11y3 +3y4 \)
s.v. \(\displaystyle 24y1+9y2+6y3+2y4+y5 =70\)

Poi parto con il primo probelma Po, la cui soluzione è \(\displaystyle (70/24, 0, 0, 0, 0 ,0)^T \)

Non essendo soluzione intera y1 diventa variabile di branching. Ho quindi il problema P1 con \(\displaystyle y1 \leqslant 2 \) e il problema P2 con \(\displaystyle y1\geqslant 3 \)

Fin qui nessun problema. Verifico che P1 non è ancora soluzione ottima e quindi arrivo al problema P4 ottenuto usando y2 come variabile di Branching e in particolare \(\displaystyle y2 \geqslant3 \). (Si parta da Po che si ramifica in P1 e P2. Poi da P1 si ramifica in P3 e P4)

Ora come procedo? Ho imposto che \(\displaystyle y2-s2=3 \) da cui, ovviamente, \(\displaystyle y2=3+s2 \) . Poi ho sostituito questo valore nella funzione obiettivo e nel vincolo ottenendo :

max\(\displaystyle 50y1 + 54+ 18s2 + 11y3 +3y4 \)
s.v. \(\displaystyle 24y1+9s2+6y3+2y4+y5 =43\)

Come faccio a ricavarmi gli altri valori per poi arrivare alla soluzione? :?
Al valore di y1 devo sostituire 2 poichè il P4 deriva dal problema P1 che aveva come vincolo \(\displaystyle y1\leqslant 2\) ?
O devo calcolare il minimo fra certi valori??? :cry:

Vi ringrazio anticipatamente. Ovviamente per ulteriori chiarimenti basta chiedere.

Ciao Ciao Francesco!
Gagliano
Starting Member
Starting Member
 
Messaggio: 17 di 40
Iscritto il: 13/01/2009, 17:29
Località: Brindisi

Re: Problema di Knapsack Intero

Messaggioda Deckard » 02/11/2011, 18:47

Gagliano ha scritto:Salve a tutti. Avrei dei dubbi su un problema di Knapsack Intero, quindi di programmazione lineare intera. Il problema è il seguente :

max\(\displaystyle 50x1 + 18x2 + 3x3 +11x4 \)
s.v. \(\displaystyle 24x1+9x2+2x3+6x4 \leqslant 70\)
Con \(\displaystyle xj \geqslant 0 \)

Vi spiego il procedimento che uso io. Ho ordinato in ordine decrescente le variabili in base ai rapporti cj/aj.
quindi ho :
max\(\displaystyle 50y1 + 18y2 + 11y3 +3y4 \)
s.v. \(\displaystyle 24y1+9y2+6y3+2y4+y5 =70\)

Poi parto con il primo probelma Po, la cui soluzione è \(\displaystyle (70/24, 0, 0, 0, 0 ,0)^T \)

Non essendo soluzione intera y1 diventa variabile di branching. Ho quindi il problema P1 con \(\displaystyle y1 \leqslant 2 \) e il problema P2 con \(\displaystyle y1\geqslant 3 \)

Fin qui nessun problema. Verifico che P1 non è ancora soluzione ottima e quindi arrivo al problema P4 ottenuto usando y2 come variabile di Branching e in particolare \(\displaystyle y2 \geqslant3 \). (Si parta da Po che si ramifica in P1 e P2. Poi da P1 si ramifica in P3 e P4)

Fin qui ok; ma non ho capito da qui in poi cosa hai fatto: puoi ancora fare branching oppure sei arrivato ad una soluzione intera? Nell'ultimo caso, che soluzione hai trovato? È maggiore di una qualche soluzione ottima (anche non intera) trovata e quindi hai la possibilità di eliminare qualche ramificazione?
http://www.mathcomp.leeds.ac.uk/turing2012/

Hilbert space is a big place.
Deckard
Average Member
Average Member
 
Messaggio: 212 di 503
Iscritto il: 17/08/2010, 08:58

Re: Problema di Knapsack Intero

Messaggioda Gagliano » 02/11/2011, 19:44

Mmh. Devo riuscire a trovare la soluzione del problema P4 ma non so come arrivarci!!! Tralascia magari il procedimento che ho usato io. Tu come cercheresti la soluzione del problema P4 con quei vincoli?
Grazie mille!!!
Gagliano
Starting Member
Starting Member
 
Messaggio: 18 di 40
Iscritto il: 13/01/2009, 17:29
Località: Brindisi

Re: Problema di Knapsack Intero

Messaggioda dorindo » 11/01/2018, 18:02

Salve a tutti , mi collego a questo post per non aprirne un altro dato che il titolo che avrei utilizzato sarebbe stato lo stesso ,anche se l'argomento del topic non proprio uguale :-D

Veniamo a noi .. nel calcolo (carta&penna) del Knapsack intero ( dove rispetto al Knapsack 0/1 è possibile scegliere più di una volta un oggetto) cosa cambia nelle modalità di calcolo rispetto al knapsack 0/1 ?

Come formula ricorsiva per il Knapsack 0/1 ho la seguente :
F(k,y) = max { (F[(k-1) , y] ed F[(k-1),(y-a(k)) +c(k) ]}

con k #oggetti , y capacità totale , a(k) a con indice k peso oggetto k-esimo , c(k) c con indice k valore oggetto k-esimo

Invece per quanto riguarda il Knapsack intero ho quest'altra :
F(k,y) = max { F[(k-1),y] ed F[(k, y-(a(k)) + c(k)] }

Scusate ma non usare il bbc per le formule ancora

In pratica tra la prima e la seconda cambia un (k-1) .. ma quando ho di fronte la tabella che si costruisce per il calcolo manuale cosa cambia all'atto pratico ?
Il massimo tra due valori ora in che maniera pratica si calcola ?
Grazie
dorindo
Starting Member
Starting Member
 
Messaggio: 4 di 12
Iscritto il: 10/01/2018, 14:19


Torna a Analisi Numerica e Ricerca Operativa

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite