Проблем с раницата в Excel VBA - Лесни Excel макроси

Съдържание

По -долу ще разгледаме програма в Excel VBA че решава малък екземпляр на a проблем с раницата.

Определение: Като се има предвид набор от елементи, всеки с тегло и стойност, определете елементите, които да бъдат включени в колекция, така че общата стойност да е възможно най -голяма, а общото тегло по -малко от дадена граница. Той получава името си от проблема, пред който е изправен някой, който е ограничен от раница с фиксиран размер и трябва да го напълни с най-полезните елементи.

Пример: 5 артикула с тегла, стойности и лимит, както е дадено.

В Excel този проблем изглежда така:

1. Първо, декларираме пет променливи от тип Double с имена limit, weight, value, totalWeight и maximumValue.

Ограничение на затъмняване като двойно, тегло като двойно, стойност като двойно, общо тегло като двойно, максимално значение като двойно

2. След това декларираме пет променливи от тип Integer с имена i, j, k, l, m.

Dim i, j, k, l, m като цяло число

3. Инициализираме две променливи. Инициализираме границата на променливата със стойността на клетка D6. Инициализираме променливата maximumValue със стойност 0.

limit = Range ("D6"). стойност
maxValue = 0

4. След това проверяваме всяко възможно решение. Можем или да включим елемент (1), или да го изоставим (0). Започваме пет цикъла For Next. По един за всеки артикул.

За i = 0 до 1
За j = 0 до 1
За k = 0 до 1
За l = 0 до 1
За m = 0 до 1

5. Изчисляваме теглото и стойността на възможно решение.

тегло = 12 * i + 2 * j + 1 * k + 1 * l + 4 * m
стойност = 4 * i + 2 * j + 2 * k + 1 * l + 10 * m

6. Само ако стойността е по -висока от максималната стойност и теглото е по -ниско от границата, намерихме ново по -добро решение.

Ако стойност> максимална стойност и тегло <= ограничение Тогава

7. Ако е вярно, пишем новото решение на ред 4, тегло към totalWeight и стойност към maximumValue.

Диапазон ("B4"). Стойност = i
Диапазон ("C4"). Стойност = j
Диапазон ("D4"). Стойност = k
Диапазон ("E4"). Стойност = l
Диапазон ("F4"). Стойност = m
общо тегло = тегло
maximumValue = стойност

8. Не забравяйте да затворите оператора If.

Край Ако

9. Не забравяйте да затворите 5 цикъла For Next.

 Следващ м
Следващ л
Следващ к
Следващ j
Следва i

Excel VBA проверява всяко възможно решение по този начин и в резултат оптималното решение ще се появи в ред 4. Запомнете, 1 означава, че включваме елемент, 0 означава, че го изоставяме.

10. Накрая напишете totalWeight и maximumValue на оптималното решение в съответно клетки B6 и B8.

Диапазон ("B6"). Стойност = общо тегло
Диапазон ("B8"). Стойност = максимална стойност

11. Тествайте програмата.

Резултат:

Заключение: оптимално е да се включат последните четири елемента с максимална стойност 15. Това решение с общо тегло 2 + 1 + 1 + 4 = 8 не надвишава границата от 15.

Забележка: като направите теглото и стойностите променливи, можете да решите всеки проблем с раницата с този размер (вижте файла за изтегляне на Excel).

Така ще помогнете за развитието на сайта, сподели с приятелите си

wave wave wave wave wave