По -долу ще разгледаме програма в 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).