Seljakotiprobleem Excel VBA -s - lihtsad Exceli makrod

Lang L: none (table-of-contents)

Allpool vaatame programmi Exceli VBA seda lahendab väike näide a seljakoti probleem.

Määratlus: Arvestades kauba ja väärtusega esemete komplekti, määrake kogusse kaasatavad esemed nii, et koguväärtus oleks võimalikult suur ja kogumass alla antud piiri. Selle nimi tuleneb probleemist, millega seisab silmitsi keegi, keda piirab fikseeritud suurusega seljakott ja kes peab selle täitma kõige kasulikumate esemetega.

Näide: 5 eset kaalude, väärtuste ja limiidiga, nagu on antud.

Excelis näeb see probleem välja järgmine:

1. Esiteks deklareerime viis Double tüüpi muutujat nimedega limit, kaal, value, totalWeight ja maximumValue.

Hämarduspiirang kui kahekordne, kaal kui kahekordne, väärtus kui kahekordne, kogukaal Kahekordne, maksimaalneVäärtus kui kahekordne

2. Järgmisena deklareerime viis Integer tüüpi muutujat nimedega i, j, k, l, m.

Dim i, j, k, l, m Nagu täisarv

3. Initsialiseerime kaks muutujat. Initsialiseerime muutuja piiri lahtri D6 väärtusega. Initsialiseerime muutuja maximumValue väärtusega 0.

limit = Vahemik ("D6"). väärtus
maksimumväärtus = 0

4. Järgmisena kontrollime kõiki võimalikke lahendusi. Võime lisada üksuse (1) või selle välja jätta (0). Alustame 5 järgmiste silmuste jaoks. Üks iga eseme kohta.

I = 0 kuni 1
Kui j = 0 kuni 1
K = 0 kuni 1
Kui l = 0 kuni 1
M = 0 kuni 1

5. Arvutame kaalu ja võimaliku lahenduse väärtuse.

kaal = 12 * i + 2 * j + 1 * k + 1 * l + 4 * m
väärtus = 4 * i + 2 * j + 2 * k + 1 * l + 10 * m

6. Oleme leidnud uue parema lahenduse ainult siis, kui väärtus on maksimaalsest väärtusest kõrgem ja kaal on piirist madalam.

Kui väärtus> maximumValue Ja kaal <= piir Siis

7. Kui see on tõene, kirjutame uue lahenduse 4. reale, kaalu totalWeight ja väärtuse maximumValue.

Vahemik ("B4"). Väärtus = i
Vahemik ("C4"). Väärtus = j
Vahemik ("D4"). Väärtus = k
Vahemik ("E4"). Väärtus = l
Vahemik ("F4"). Väärtus = m
totalWeight = kaal
maximumValue = väärtus

8. Ärge unustage If -lauset sulgeda.

Lõpp Kui

9. Ära unusta sulgeda 5 For Next silmuseid.

 Järgmine m
Järgmine l
Järgmine k
Järgmine j
Edasi i

Excel VBA kontrollib sel viisil kõiki võimalikke lahendusi ja selle tulemusena kuvatakse 4. real optimaalne lahendus. Pidage meeles, et 1 tähendab, et me lisame üksuse, 0 tähendab, et jätame selle välja.

10. Lõpuks kirjutage lahtrisse B6 ja B8 optimaalse lahendi totalWeight ja maximumValue.

Vahemik ("B6"). Väärtus = totalWeight
Vahemik ("B8"). Väärtus = maximumValue

11. Testige programmi.

Tulemus:

Järeldus: optimaalne on lisada neli viimast eset maksimaalse väärtusega 15. See lahendus kogumassiga 2 + 1 + 1 + 4 = 8 ei ületa piiri 15.

Märkus: muutes kaalu ja väärtusi, saate lahendada kõik selle suurusega seljakotiprobleemid (vt allalaaditav Exceli fail).

Te aitate arengu ala, jagades leht oma sõpradega

wave wave wave wave wave