Problém s batohom v programe Excel VBA - ľahké makrá programu Excel

Obsah

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).

Vám pomôže rozvoju miesta, zdieľať stránku s priateľmi

wave wave wave wave wave