Sia
Ad ogni oggetto
Sia
Problema dello Zaino
Consiste nello scegliere quali oggetti inserire nello zaino in modo da massimizzare il profitto, rispettando il vincolo sulla capacità.
Definizione Formale
Il problema fa parte dei problemi di riempimento.
Problema di Riempimento
Siano
Il problema di riempimento consiste nel determinare la sottofamiglia
Approccio Euristico
Si costruisce una soluzione inserendo nello zaino per primi gli elementi migliori secondo un certo criterio.
Ci sono tre criteri:
- Peso non decrescente (inseriamo molti oggetti)
- Profitto non decrescente (inseriamo oggetti di maggior valore)
- Rapporto profitto/peso decrescente (più efficace)
Comunque con questo approccio non si arriva all’ottimo
Metodo (esatto) Branch and Bound per lo zaino
Per applicare il Metodo del Branch and Bound dobbiamo specificare:
- Come ottenere l’upper bound
- Come fare branching
- Come ottenere un lower bound
Per l’operazione di bounding adottiamo l’eliminazione del vincolo di interezza (RL|), perciò risolviamo il problema di PL:
Si potrebbe usare il simplesso ma è più efficace un altro metodo.
Si sceglie il criterio di ordinamento
Si ordinano gli oggetti secondo questo criterio e si inizia l’inserimento. Supponiamo che si possano inserire i primi
e
Inseriamo per intero i primi
Mentre l’oggetto
Lo zaino è pieno
Il valore ottimo è
Un Lower Bound si ottiene considerando come Soluzione Intera Ammissibile l’arrotondamento per difetto della soluzione del
-
Soluzione
-
L’arrotondamento è:
-
e il lower bound:
Come strategia si usa in genere il best bound.
Esempio (WIP)