Problem s naprtnjačom u programu Excel VBA - Jednostavne makronaredbe programa Excel

Sadržaj

U nastavku ćemo pogledati program u Excel VBA da rješava mali primjerak a problem naprtnjače.

Definicija: S obzirom na skup stavki, od kojih svaka ima težinu i vrijednost, odredite stavke koje ćete uključiti u zbirku tako da ukupna vrijednost bude što je moguće veća, a ukupna težina manja od zadanog ograničenja. Ime je dobio po problemu s kojim se suočava netko tko je ograničen naprtnjačom fiksne veličine i mora ga napuniti najkorisnijim stavkama.

Primjer: 5 stavki s težinama, vrijednostima i ograničenjima kako je navedeno.

U Excelu ovaj problem izgleda ovako:

1. Prvo, deklariramo pet varijabli tipa Double s imenima limit, weight, value, totalWeight i maximumValue.

Ograničenje prigušenja kao dvostruko, težina kao dvostruko, vrijednost kao dvostruko, ukupna težina kao dvostruka, maksimalna vrijednost kao dvostruka

2. Zatim deklariramo pet varijabli tipa Integer s nazivima i, j, k, l, m.

Dim i, j, k, l, m Kao cijeli broj

3. Pokrećemo dvije varijable. Granicu varijable inicijaliziramo vrijednošću ćelije D6. Promjenjivu maximumValue inicijaliziramo s vrijednošću 0.

limit = raspon ("D6"). vrijednost
maksimalna vrijednost = 0

4. Zatim provjeravamo svako moguće rješenje. Možemo ili uključiti stavku (1) ili je izostaviti (0). Počinjemo petlje For Next. Po jedan za svaku stavku.

Za i = 0 do 1
Za j = 0 do 1
Za k = 0 do 1
Za l = 0 do 1
Za m = 0 do 1

5. Izračunavamo težinu i vrijednost mogućeg rješenja.

težina = 12 * i + 2 * j + 1 * k + 1 * l + 4 * m
vrijednost = 4 * i + 2 * j + 2 * k + 1 * l + 10 * m

6. Samo ako je vrijednost veća od maksimalneVrijednost i težina niža od granice, pronašli smo novo bolje rješenje.

Ako je vrijednost> maksimalnaVrijednost i težina <= granica Tada

7. Ako je točno, novo rješenje zapisujemo u red 4, težinu u totalWeight i vrijednost u maximumValue.

Raspon ("B4"). Vrijednost = i
Raspon ("C4"). Vrijednost = j
Raspon ("D4"). Vrijednost = k
Raspon ("E4"). Vrijednost = l
Raspon ("F4"). Vrijednost = m
ukupna težina = težina
maximumValue = vrijednost

8. Ne zaboravite zatvoriti naredbu If.

Završi ako

9. Ne zaboravite zatvoriti petlje 5 For Next.

 Sljedeći m
Sljedeće l
Sljedeće k
Sljedeće j
Sljedeći i

Excel VBA na ovaj način provjerava svako moguće rješenje i kao rezultat toga optimalno rješenje pojavit će se u retku 4. Upamtite, 1 znači da uključujemo stavku, 0 znači da smo je izostavili.

10. Na kraju upišite totalWeight i maximumValue optimalnog rješenja u ćelije B6 i B8.

Raspon ("B6"). Vrijednost = ukupna težina
Raspon ("B8"). Vrijednost = maksimalnaVrijednost

11. Testirajte program.

Proizlaziti:

Zaključak: optimalno je uključiti posljednje četiri stavke s najvećom vrijednošću 15. Ovo rješenje ukupne težine 2 + 1 + 1 + 4 = 8 ne prelazi granicu od 15.

Napomena: postavljanjem pondera i vrijednosti možete riješiti svaki problem s naprtnjačom ove veličine (pogledajte Excel datoteku za preuzimanje).

Vi ćete pomoći u razvoju web stranice, dijeljenje stranicu sa svojim prijateljima

wave wave wave wave wave