Задача о рюкзаке в Excel VBA - макросы Easy Excel

Содержание

Ниже мы рассмотрим программу на Excel VBA тот решает небольшой экземпляр проблема с рюкзаком.

Определение: учитывая набор элементов, каждый из которых имеет вес и значение, определите элементы, которые нужно включить в коллекцию, чтобы общее значение было как можно большим, а общий вес был меньше заданного предела. Он получил свое название от проблемы, с которой сталкивается тот, кто ограничен рюкзаком фиксированного размера и должен наполнить его самыми полезными предметами.

Пример: 5 предметов с указанным весом, значениями и пределом.

В Excel эта проблема выглядит следующим образом:

1. Сначала мы объявляем пять переменных типа Double с именами limit, weight, value, totalWeight и maximumValue.

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

2. Затем мы объявляем пять переменных типа Integer с именами i, j, k, l, m.

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

3. Инициализируем две переменные. Мы инициализируем переменную limit значением ячейки D6. Мы инициализируем переменную maximumValue значением 0.

limit = Диапазон ("D6"). значение
максимальное значение = 0

4. Далее мы проверяем все возможные решения. Мы можем либо включить элемент (1), либо исключить его (0). Запускаем 5 петель 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. Мы нашли новое лучшее решение только в том случае, если значение больше maximumValue, а вес меньше limit.

Если значение> максимальное значение И вес <= предел Тогда

7. Если это правда, мы записываем новое решение в строку 4, вес в totalWeight и значение в maximumValue.

Диапазон ("B4"). Value = i
Диапазон ("C4"). Value = j
Диапазон ("D4"). Значение = k
Диапазон ("E4"). Значение = l
Диапазон ("F4"). Значение = м
totalWeight = вес
maximumValue = значение

8. Не забудьте закрыть оператор If.

Конец, если

9. Не забудьте закрыть 5 петель For Next.

 Следующий м
Следующий l
Следующие k
Следующий j
Далее я

Excel VBA проверяет каждое возможное решение таким образом, и в результате оптимальное решение появится в строке 4. Помните, 1 означает, что мы включаем элемент, 0 означает, что мы его не учитываем.

10. Наконец, запишите totalWeight и maximumValue оптимального решения в ячейки B6 и B8 соответственно.

Диапазон ("B6"). Value = totalWeight
Диапазон ("B8"). Value = maximumValue

11. Протестируйте программу.

Результат:

Вывод: оптимально включать последние четыре элемента с максимальным значением 15. Это решение с общим весом 2 + 1 + 1 + 4 = 8 не превышает лимита в 15.

Примечание: сделав переменные веса и значений, вы можете решить любую задачу о рюкзаке такого размера (см. Загружаемый файл Excel).

Вы поможете развитию сайта, поделившись страницей с друзьями

wave wave wave wave wave