Massimizza valore e volume, riducendo al minimo il peso - Zaino

2

Provare una variante di Zaino in cui le regole sono

  1. Ogni oggetto che prendi deve essere inserito completamente nella borsa
  2. Le metriche utilizzabili della borsa sono lunghezza (l), larghezza (w), altezza (h) e si può presumere che se i prodotti si inseriscono nella borsa sia singolarmente che insieme per volume totale, c'è un modo per impacchettarli in
  3. Il valore del prezzo deve essere massimizzato
  4. Il peso deve essere ridotto al minimo senza compromettere il valore in dollari

L'input è fondamentalmente un elenco di elementi con l, w, h, valore in dollari e peso. Sembra che ci siano molti parametri oltre alle normali varianti dello zaino. Quello che sto facendo è eliminare prima tutti i prodotti che non si adattano al sacchetto (volume e dimensioni). Quindi eseguo la logica dello zaino normale (calcolando se ciascun elemento appartiene o no alla borsa) in base al volume e al prezzo utilizzando lo pseudo codice DP comune

if (volume[i] > V) {
        return knapsack(i-1, V);
    } else {
        return Math.max(knapsack(i-1, V), knapsack(i-1, V - volume[i]) + values[i]);
    }

Questo sembra andare in tilt considerando che il massimo l, w, h della borsa è come 40, 40, 40. (Quindi il volume è 64000) e il numero di elementi è sul tono di 16k. (Errore di memoria esaurita Java). Provare Branch e Bound (non sono sicuro se correttamente)

Un altro modo subottimale che ho provato è quello di utilizzare l'euristica in base al rapporto valore / peso e quindi prendere il miglior adattamento del volume. Un altro modo sarebbe quello di trovare tutti i possibili modi di imballaggio e quindi scegliere il miglior adattamento del peso (ma anche in questo caso sarebbe iper esponenziale)

Come risolvere questo?

    
posta Slartibartfast 29.12.2015 - 08:23
fonte

1 risposta

1

Poiché l'ottimizzazione del peso non dovrebbe compromettere il valore in dollari, presumibilmente ci saranno molti modi per riempire lo zaino con oggetti che si sommano allo stesso valore in dollari più alto.

Quindi, l'ottimizzazione del peso consiste quindi nel selezionare lo zaino con il peso più basso tra gli zaini con il più alto valore in dollari.

    
risposta data 29.12.2015 - 09:07
fonte

Leggi altre domande sui tag