Nižšie sa pozrieme na program v Excel VBA že rieši malý prípad a problém s batohom.
Definícia: Vzhľadom na množinu položiek, z ktorých každá má hmotnosť a hodnotu, určte položky, ktoré chcete zahrnúť do zbierky, aby bola celková hodnota čo najväčšia a celková hmotnosť nižšia ako daný limit. Názov odvodzuje od problému, ktorému čelí niekto, koho obmedzuje batoh pevnej veľkosti a musí ho naplniť najužitočnejšími predmetmi.
Príklad: 5 položiek s hmotnosťou, hodnotami a limitom, ako je uvedené.
V programe Excel tento problém vyzerá nasledovne:
1. Najprv deklarujeme päť premenných typu Double s názvami limit, hmotnosť, hodnota, totalWeight a maximumValue.
Limit stmievania ako dvojitý, hmotnosť ako dvojitý, hodnota ako dvojitý, celková hmotnosť ako dvojnásobný, maximálna hodnota ako dvojnásobný
2. Ďalej deklarujeme päť premenných typu Integer s názvami i, j, k, l, m.
Dim i, j, k, l, m ako celé číslo
3. Inicializujeme dve premenné. Inicializujeme variabilný limit s hodnotou bunky D6. Inicializujeme premennú maximumValue s hodnotou 0.
limit = rozsah („D6“). hodnota
maximumValue = 0
4. Ďalej skontrolujeme každé možné riešenie. Položku môžeme buď zahrnúť (1), alebo ju vynechať (0). Začíname 5 slučiek For Next. Jeden pre každú položku.
Pre i = 0 až 1
Pre j = 0 až 1
Pre k = 0 až 1
Pre l = 0 až 1
Pre m = 0 až 1
5. Vypočítame hmotnosť a hodnotu možného riešenia.
hmotnosť = 12 * i + 2 * j + 1 * k + 1 * l + 4 * m
hodnota = 4 * i + 2 * j + 2 * k + 1 * l + 10 * m
6. Iba ak je hodnota vyššia ako maximumHodnota a hmotnosť je nižšia ako limit, našli sme nové lepšie riešenie.
Ak hodnota> maximálna hodnota a hmotnosť <= limit potom
7. Ak je to pravda, zapíšeme nové riešenie do riadka 4, hmotnosť do totalWeight a hodnota do maximumValue.
Rozsah („B4“). Hodnota = i
Rozsah („C4“). Hodnota = j
Rozsah („D4“). Hodnota = k
Rozsah („E4“). Hodnota = l
Rozsah ("F4"). Hodnota = m
celková hmotnosť = hmotnosť
maximumValue = hodnota
8. Nezabudnite zatvoriť príkaz If.
Koniec Ak
9. Nezabudnite uzavrieť slučky 5 For Next.
Ďalšie m
Ďalej l
Ďalej k
Ďalej j
Ďalej i
Excel VBA týmto spôsobom kontroluje každé možné riešenie a v dôsledku toho sa optimálne riešenie zobrazí v riadku 4. Nezabudnite, že 1 znamená, že zahrneme položku, 0 znamená, že ho vynecháme.
10. Nakoniec napíšte celkovú hmotnosť a maximálnu hodnotu optimálneho riešenia do bunky B6 a B8.
Rozsah („B6“). Hodnota = totalWeight
Rozsah („B8“). Hodnota = maximumValue
11. Otestujte program.
Výsledok:
Záver: Optimálne je zahrnúť posledné štyri položky s maximálnou hodnotou 15. Toto riešenie s celkovou hmotnosťou 2 + 1 + 1 + 4 = 8 nepresahuje hranicu 15.
Poznámka: Nastavením premenných hmotností a hodnôt môžete vyriešiť akýkoľvek problém s batohom tejto veľkosti (pozrite si stiahnuteľný súbor programu Excel).