Решение задачи рюкзака в excel


Меню сайта

 В общем виде задача о рюкзаке формулируется следующим способом: имеется рюкзак определенного объема и неограниченное количество предметов. Для каждого предмета известен его объем (вес) и ценность (стоимость, эффективность). В рюкзак можно положить целое число предметов различного типа. Цель состоит в том, чтобы суммарная ценность всех находящихся в рюкзаке предметов была максимальна, а их объем (вес) не превышал заданной величины. К подобной формулировке может быть сведена задача максимального использования грузоподъемности подвижного состава, грузовместимости судна, автомобиля и т.п. Такая задача часто возникает при выборе оптимального управления в экономико-финансовых областях (например распределение бюджета отдела по проектам).

Решение задачи в классической постановке

 Подобные задачи легко решаются с помощью надстройки «Поиск решения». Подготовлены исходные данные (рисунок ниже). Задача состоит в том, чтобы за счет подбора значений ячеек B16:B19 добиться максимального значения целевой функции (значение ячейки D20).

рис.1

На первом рисунке ниже показаны ограничения на значения изменяемых ячеек. На втором рисунке ниже приводится результат расчета. Во многих практических случаях данная постановка задачи является слишком упрощенной. Далее будут рассмотрены варианты усложнения постановки задачи.

рис.2
 

рис.3

Модифицированная задача

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

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

рис.4

 На следующем рисунке показаны ограничения на значения изменяемых ячеек B16:B19. В данном случае к ограничениям добавлено условие 16:19>=8:11, то есть задано минимальное необходимое количество предметов различных видов.

рис.5

Решение задачи представлено последнем рисунке.

рис.5

 При необходимости дополнительное условие 16:19>=8:11 может быть изменено. Например, можно установить отдельные ограничения для всех предметов, назначив для некоторых из них точное количество предметов, в то время как для других — условие «не менее» или «не более»

Назад Домой Вперед


Фрейм


Создадим модель для одной из модификаций классической задачи о рюкзаке: укладка как можно большего числа вещей в рюкзак при условии, что общий объём (или вес) всех предметов, способных поместиться в рюкзак, ограничен. Расчет будем проводить с помощью надстройки Поиск решения.

Существует множество разновидностей задачи о рюкзаке, отличия заключаются в условиях, наложенных на рюкзак, на предметы или их выбор. Рассмотрим Рюкзак 0-1 (англ. 0-1 Knapsack Problem): не более одного экземпляра каждого предмета (пример с сайта

www.solver.com

).

Задача

Бензовоз с 4-мя цистернами разного объема должен выполнить заказ: перевезти определенное количество топлива трех разных типов. К сожалению, суммарный объем цистерн меньше, чем объем заказа. За невыполненный заказ взимается штраф, размер которого пропорционален объему невыполненного заказа. Необходимо минимизировать размер штрафа, заполнив цистерны топливом оптимальным образом.

Создание модели

На рисунке ниже приведена модель, созданная для решения задачи (см.

файл примера

).


Переменные (выделено зеленым)

. В качестве переменных модели следует взять загрузку цистерн разными видами топлива.

Поиск решения

подбирает как сам вид топлива, который нужно перевозить, так и его объем.

Ограничения (выделено синим)

. Объем перевозимого топлива не должен превышать объем цистерн, а также как можно ближе к требованиям заказа.

Целевая функция (выделено красным)

.

Сумма штрафа должна быть минимальна.


Примечание

: для удобства настройки

Поиска решения

используются

именованные диапазоны

.

Вводная статья про

Поиск решения

в MS EXCEL 2010

находится здесь

.

Задача о рюкзаке

MCH

Дата: Среда, 12.08.2015, 20:40 |
Сообщение № 1

Группа: Админы

Ранг: Старожил

Сообщений: 2002


Репутация:

751

±

Замечаний:
±


В продолжении темы «Подбор слагаемых под нужную сумму» (сумма подмножеств)
Предлагаю решение «Задачи о рюкзаке»

Во вложении два алгоритма:
Первый подбирает предметы суммарным весом не более необходимого, имеющие максимальную стоимость.
Второй подбирает перечень предметов суммарным весом и стоимостью в определенном диапазоне от минимального до максимального.

В основе решения динамическое программирование, отсюда ограничения — работа с целыми числами, и существенное увеличение времени решения и количество выделяемой памяти от размеров рюкзака.

UPD 13/08/2015
Добавил решение классической «задачи о рюкзаке» жадным алгоритмом
Не всегда находит наилучшее решение, но работает достаточно быстро

 

Ответить

nerv

Дата: Суббота, 15.08.2015, 14:44 |
Сообщение № 2

Группа: Редакторы

Ранг: Обитатель

Сообщений: 431

К сожалению, не могу запустить в Libre Office макросы VBA.

Добавил решение классической «задачи о рюкзаке» жадным алгоритмом
Не всегда находит наилучшее решение, но работает достаточно быстро

В качестве дополнения можно попытаться решить данную задачу
1. Алгоритмом имитации отжига
2. Генетическим алгоритмом


Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина — самый громкий звук

YM 41001156540584 / WM WMR R21924176233

https://github.com/nervgh/vba

Сообщение отредактировал nervСуббота, 15.08.2015, 14:44

 

Ответить

RAN

Дата: Суббота, 15.08.2015, 16:07 |
Сообщение № 3

Группа: Друзья

Ранг: Экселист

Сообщений: 5645


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RANСуббота, 15.08.2015, 16:24

 

Ответить

Lina40

Дата: Понедельник, 18.01.2016, 22:58 |
Сообщение № 4

Группа: Пользователи

Ранг: Прохожий

Сообщений: 5


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

Подскажите, пожалуйста, а есть где-нибудь решение задачи о рюкзаке методом полного перебора на vba.

 

Ответить

MCH

Дата: Вторник, 19.01.2016, 04:16 |
Сообщение № 5

Группа: Админы

Ранг: Старожил

Сообщений: 2002


Репутация:

751

±

Замечаний:
±


Что подразумевается под полным перебором?
Нужно перебрать все 2^n комбинаций сочетания грузов и выбрать наилучший вариант?
Учтите, что при количестве грузов более 20-25 данный способ не применим.

Чем плох вариант с динамическим программированием? ограничения на количество грузов практически нет.

 

Ответить

Lina40

Дата: Вторник, 19.01.2016, 09:59 |
Сообщение № 6

Группа: Пользователи

Ранг: Прохожий

Сообщений: 5


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

Да, полный перебор всех комбинаций.
Методы решения задачи о рюкзаке

Он хорош, просто мне в работе необходимо использовать несколько методов :(

 

Ответить

MCH

Дата: Вторник, 03.08.2021, 15:02 |
Сообщение № 7

Группа: Админы

Ранг: Старожил

Сообщений: 2002


Репутация:

751

±

Замечаний:
±


Выкладываю пример двумерной задачи о рюкзаке.

Исходные условия:
Есть прямоугольный контейнер размером X*Y
Есть множество прямоугольных заполнителей размером X1*Y1 … Xn*Yn
Нужно уложить заполнители в контейнер максимально его заполнив по площади (с наименьшими пустотами)
Количество каждого вида заполнителя неограниченно
Заполнители можно вращать (на 90 градусов)

Вариант использования: уложить на паллет размерностью 1200*800 различные коробки с максимальной эффективностью
(до задачи двумерного раскроя еще не дошел)

К сообщению приложен файл:

_2D.xlsm
(62.4 Kb)

 

Ответить

Руссталь

Дата: Воскресенье, 15.08.2021, 17:07 |
Сообщение № 8

Группа: Пользователи

Ранг: Прохожий

Сообщений: 5

Добрый день.
Не могли бы Вы помочь с решением нашей задачи.
По большому счету задача очень схожа с Вашим файлом, за исключением того, что в нашем случае нельзя вращать Заполнители на 90 градусов. И не хватает итоговой суммы необходимых контейнеров для укладки всех заполнителей.
russtalpg@yandex.ru

К сообщению приложен файл:

2149044.docx
(65.7 Kb)

Сообщение отредактировал Serge_007Понедельник, 16.08.2021, 15:07

 

Ответить

Руссталь

Дата: Понедельник, 23.08.2021, 14:14 |
Сообщение № 9

Группа: Пользователи

Ранг: Прохожий

Сообщений: 5

до задачи двумерного раскроя еще не дошел

Добрый день.
Есть в планах на ближайшее будущее приступить к написанию алгоритма двумерного раскроя?

 

Ответить

MCH

Дата: Понедельник, 23.08.2021, 15:06 |
Сообщение № 10

Группа: Админы

Ранг: Старожил

Сообщений: 2002


Репутация:

751

±

Замечаний:
±


Есть в планах на ближайшее будущее приступить к написанию алгоритма двумерного раскроя?

Задача двумерного раскроя достаточно сложна, у меня нет эффективного алгоритма для ее решения
По Вашей задаче приложите фактические исходные данные (перечень деталей, размеры, количества)
Лучше это сделать в отдельной теме форума, а не в «Готовых решениях»

 

Ответить

MCH

Дата: Четверг, 05.05.2022, 17:44 |
Сообщение № 11

Группа: Админы

Ранг: Старожил

Сообщений: 2002


Репутация:

751

±

Замечаний:
±


На базе задачи из сообщения № 7
Реализовал еще один алгоритм по двумерному рюкзаку (двумерной упаковке), который построен на переборе вариантов
Медленный (переборный) алгоритм способен найти идеальное размещение (гильотинным раскроем), но очень сильно падает в скорости при увеличении размерности рюкзака

 

Ответить

Программа-калькулятор для решения задачи о рюкзаке 0-1 или 0-1 knapsack problem (достаточно большого размера) LargeKnapsack здесь

  1. Динамическое программирование. Что меня поразило в этом алгоритме
  2. Пример решений задачи на VBA Excel
  3. Пример решений задачи на C# Visual Studio 2012
  4. Пример решений задачи на C++ Visual Studio 2012
  5. Пример решений задачи на Delphi 7, XE

Условие 0-1 knapsack problem:
Из множества предметов со свойствами «стоимость» и «вес», отобрать некоторое их число таким образом,
чтобы получить максимальную суммарную стоимость при одновременном соблюдении ограничения на суммарный вес.

Динамическое программирование. Что меня поразило в этом алгоритме

Ведь задан вес — Р.
Кажется, кратчайшее решение — это рассматривать наборы только этого веса.
Число сочетаний С из n по m возрастает с увеличением m [от 1 до n/2], а затем будет убывать.
Так зачем рассматривать промежуточные наборы и тратить время.
Отсортировать предметы по убыванию «стоимости» и перебирать в цикле, проверяя условие: вес <=P.
Машина посчитает

Можно, даже, отсортировать по параметру удельной стоимости каждого предмета (стоимость/вес предмета),
тогда каждый выше расположенный в ряду предмет будет предпочтительней, чем нижние.

А оказывается, нет.
Рассматривая варианты для весов от 1 до Р (внутренний цикл > ячейки одной строки) и увеличивая
количество предметов от 1 до n (внешний цикл > увеличение номера строки) становится возможной
автоматическая оптимизация.

Делая выбор для очередной ячейки, выбирается максимум из двух вариантов:
Первый вариант: ячейка в этой же колонке, но на строку выше (т.е. просто, не брать этот предмет в ранец,
т.к. предыдущий набор предметов для данного веса «ценнее»).
Второй вариант: стоимость предмета + ячейка, которая на строку выше и левее на величину веса предмета
(т.е. берем предмет, но выбрасываем из ранца другие предметы на величину его веса).

Гениально…

А как красиво заполняется таблица Иногда, оказывается, следует выбрасывать предметы с большей удельной
стоимостью, чтобы достичь максимальной загрузки ранца и от этого получить максимум стоимости в результат.

И даже сортировка излишня. Без нее результат абсолютно тот же. Предмет с большим удельным весом всегда
будет размещаться алгоритмом (в строке таблицы) левее, чем остальные.

Экспериментируйте. Все наглядно.
В желтых ячейках можно задать параметры.
Кнопки Random, Sort, Massiv запускают определенные макросы.

Пример решений задачи на VBA Excel 2007 и выше

А это Задача о ранце (рюкзаке) на VBA Excel 2010

Пример решений задачи на VBA Excel
Рис.1        Пример решений задачи на VBA Excel

Пример решений задачи на C# Visual Studio 2012

Так может выглядеть главная форма…

Пример решений задачи на C# Visual Studio 2012
Рис.2        Пример решений задачи на C# Visual Studio 2012

Пример решений задачи на C++ Visual Studio 2012

Так может выглядеть главная форма…

Пример решений задачи на C++ Visual Studio 2012
Рис.3        Пример решений задачи на C++ Visual Studio 2012

Замена фото (файл the_foto.jpg) на форме AboutForm — вопрос на любителя… Можно форму «О разработчике» удалить, если не требуется.

Пример решений задачи на Delphi 7, XE

Главная форма…

Пример решений задачи на Delphi 7, XE
Рис.5        Пример решений задачи на Delphi 7, XE

Если у Вас остались вопросы, то задать их Вы можете, нажав на эту кнопочку …

Если на этой странице не нашлось того, что Вы так искали…

         Не расстраивайтесь, не все потеряно… Смело щелкайте…

       телефон:

+7(919) 572-59-92
+7(987) 848-79-61

1)
6x1+
2x2+
3x3+
7x4

max

5x1+
2x2+
4x3+
5x4

14

xi

0, x
i
є
Z,

i
=
1,..,4.

2)
2x1+
4x2+
4x3+
3x4

max

2x1+5x2+
3x3+4x4
≤ 12

xi

0, xi
є
Z,
i
=
1,..,4.

3)
3x1+
6x2+
5x3+
x4

max

2x1+
5x2+4x3+
x4

15

xi

0, xi
є
Z,
i
=
1,..,4.

4)
2x1+
2x2+
x3+3x4

max

2x1+
3x2+
2x3+
3x4

13

xi

0, xi
є
Z,
i
=
1,..,4.

5)
5
x1+
x2+
x3+
3x4

max

4x1+
3x2+
x3
+
3x4

13

xi

0, xi
є
Z,
i
=
1,..,4.

6)
x1+
5x2+
2x3+
3x4

max

2x1+
4x2+
5x3+
3x4

14

xi

0, xi
є
Z,
i
=
1,..,4.

7)

5x1+
7x2+
6x3+
3x4

max

4x1+
5x2+
8x3+
3x4

14

xi

0, xi
є
Z,
i
=
1,..,4.

8)
x1+
7x2+
3x3+
4x4

max

x1+
5x2+
2x3+
3x4

13

xi

0, xi
є
Z,
i
=
1,..,4.

9)
x1+
7x2+
7x3+
4x4

max

2x1+
6x2+
4x3+
3x4

15

xi

0, xi
є
Z,
i
=
1,..,4.

10)
3
x1+
5x2+
2x3+
8x4

max

2x1+
4x2+
x3+
6x4

15

xi

0, xi
є
Z,
i
=
1,..,4.

11)
x1+
5x2+
6x3+
3x4

max

2x1+
4x2+
5x3
+ 3x4

15

xi

0, xi
є
Z,
i
=
1,..,4.

12)
4
x1+
5x2+
2x3+4x4

max

2x1+2x2+
x3+
3x4

13

xi

0, xi
є
Z,
i
=
1,..,4.

13)
3x1+

7x2+
7x3+
5x4

max

4x1+
7x2+
5x3+
6x4

13

xi

0, xi
є
Z,
i
=
1,..,4.

14)
2x1+
4x2+
5x3+
6x4

max

2x1+
3x2+
4x3+
5x4

14

xi

0, xi
є
Z,
i
=
1,..,4.

15)
5x1+
6x2+
3x3+
4x4

max

4x1+
7x2+
3x3+
5x4

18

xi

0, xi
є
Z,
i
=
1,..,4.

16)
5x1+
6x2+
9x3+
4x4

max

4x1+
5x2+
8x3+
3x4

14

xi

0, xi
є
Z,
i
=
1,..,4.

17)
x1+

7x2+
3x3+
8x4

max

x1+
4x2+
2x3+
5x4

14

xi

0, xi
є
Z,
i
=
1,..,4.

18)
9x1+
x2+
2x3+5x4

max

8x1+
x2+3x3+4x4

15

xi

0, xi
є
Z,
i
=
1,..,4.

19)
2x1+
3x2+
6
x
3+9x4

max

4x1+
7x2+
8x3+10x4

20

xi

0, xi
є
Z,
i
=
1,..,4.

20)
x1+

8x2+
9x3+7x4

max

x1+
5x2+
8x3+
6x4

14

xi

0, xi
є
Z,
i
=
1,..,4.

21)
2x1+
3x2+
3x3+
4x4

max

4x1+
4x2+
5x3+
5x4

19

xi

0, xi
є
Z,
i
=
1,..,4.

22)
4x1+
3x2+
7x3+
x4

max

4x1+
5x2+
8x3+
2x4

14

xi

0, xi
є
Z,
i
=
1,..,4.

23)
x1+

4x2+
3x3+
9x4

max

x1+
3x2+
2x3+
5x4

17

xi

0, xi
є
Z,
i
=
1,..,4.

24)
7x1+
x2+
3x3+2x4

max

6x1+
x2+2x3+3x4

20

xi

0, xi
є
Z,
i
=
1,..,4.

25)
2x1+
3x2+
6
x
3+9x4

max

4x1+
7x2+
8x3+10x4

20

xi

0, xi
є
Z,
i
=
1,..,4.

26)
x1+

6x2+
7x3+4x4

max

x1+
5x2+
4x3+
3x4

19

xi

0, xi
є
Z,
i
=
1,..,4.

27)
2x1+

5x2+
3x3+
7x4

max

x1+
3x2+
2x3+
5x4

27

xi

0, xi
є
Z,
i
=
1,..,4.

28)
5x1+
x2+
3x3+7x4

max

4x1+
x2+2x3+3x4

26

xi

0, xi
є
Z,
i
=
1,..,4.

29)
2x1+
3x2+
6
x
3+7x4

max

3x1+
7x2+
8x3+
9x4

25

xi

0, xi
є
Z,
i
=
1,..,4.

30)
x1+

6x2+
4x3+4x4

max

x1+
5x2+
4x3+
3x4

29

xi

0, xi
є
Z,
i
=
1,..,4.

Содержание

  1. Задача о ранце (рюкзаке) на VBA (EXCEL), C++, C# (Visual Studio 2012) и DELPHI
  2. Динамическое программирование. Что меня поразило в этом алгоритме
  3. Пример решений задачи на VBA Excel 2007 и выше
  4. Поиск решения EXCEL (3.2). Минимизация потерь (задача о рюкзаке)
  5. Задача
  6. Создание модели
  7. Задача о рюкзаке в Excel
  8. Задача рюкзака решение excel
  9. Лабораторная работа 3. Решение задачи о рюкзаке приближенными и точными алгоритмами.
  10. «Жадный» алгоритм.

Задача о ранце (рюкзаке) на VBA (EXCEL), C++, C# (Visual Studio 2012) и DELPHI

Программа-калькулятор для решения задачи о рюкзаке 0-1 или 0-1 knapsack problem (достаточно большого размера) LargeKnapsack здесь

Калькулятор-Упаковщик «Packer1» тоже использует алгоритм «задачи рюкзака» Программа-калькулятор расчета укладки продукции в упаковки

Условие 0-1 knapsack problem:
Из множества предметов со свойствами «стоимость» и «вес», отобрать некоторое их число таким образом, чтобы получить максимальную суммарную стоимость при одновременном соблюдении ограничения на суммарный вес.

Динамическое программирование. Что меня поразило в этом алгоритме

Ведь задан вес — Р.
Кажется, кратчайшее решение — это рассматривать наборы только этого веса.
Число сочетаний С из n по m возрастает с увеличением m [от 1 до n/2], а затем будет убывать.
Так зачем рассматривать промежуточные наборы и тратить время.
Отсортировать предметы по убыванию «стоимости» и перебирать в цикле, проверяя условие: вес ячейки одной строки) и увеличивая количество предметов от 1 до n (внешний цикл > увеличение номера строки) становится возможной автоматическая оптимизация.

Делая выбор для очередной ячейки, выбирается максимум из двух вариантов:
Первый вариант: ячейка в этой же колонке, но на строку выше (т.е. просто, не брать этот предмет в ранец, т.к. предыдущий набор предметов для данного веса «ценнее»).
Второй вариант: стоимость предмета + ячейка, которая на строку выше и левее на величину веса предмета (т.е. берем предмет, но выбрасываем из ранца другие предметы на величину его веса).

А как красиво заполняется таблица Иногда, оказывается, следует выбрасывать предметы с большей удельной стоимостью, чтобы достичь максимальной загрузки ранца и от этого получить максимум стоимости в результат.

И даже сортировка излишня. Без нее результат абсолютно тот же. Предмет с большим удельным весом всегда будет размещаться алгоритмом (в строке таблицы) левее, чем остальные.

Экспериментируйте. Все наглядно.
В желтых ячейках можно задать параметры.
Кнопки Random, Sort, Massiv запускают определенные макросы.

Пример решений задачи на VBA Excel 2007 и выше

А это Задача о ранце (рюкзаке) на VBA Excel 2010.

Источник

Поиск решения EXCEL (3.2). Минимизация потерь (задача о рюкзаке)

history 27 марта 2015 г.

Создадим модель для одной из модификаций классической задачи о рюкзаке: укладка как можно большего числа вещей в рюкзак при условии, что общий объём (или вес) всех предметов, способных поместиться в рюкзак, ограничен. Расчет будем проводить с помощью надстройки Поиск решения.

Существует множество разновидностей задачи о рюкзаке, отличия заключаются в условиях, наложенных на рюкзак, на предметы или их выбор. Рассмотрим Рюкзак 0-1 (англ. 0-1 Knapsack Problem): не более одного экземпляра каждого предмета (пример с сайта ]]> www.solver.com ]]> ).

Задача

Бензовоз с 4-мя цистернами разного объема должен выполнить заказ: перевезти определенное количество топлива трех разных типов. К сожалению, суммарный объем цистерн меньше, чем объем заказа. За невыполненный заказ взимается штраф, размер которого пропорционален объему невыполненного заказа. Необходимо минимизировать размер штрафа, заполнив цистерны топливом оптимальным образом.

Создание модели

На рисунке ниже приведена модель, созданная для решения задачи (см. файл примера ).

Переменные (выделено зеленым) . В качестве переменных модели следует взять загрузку цистерн разными видами топлива. Поиск решения подбирает как сам вид топлива, который нужно перевозить, так и его объем. Ограничения (выделено синим) . Объем перевозимого топлива не должен превышать объем цистерн, а также как можно ближе к требованиям заказа. Целевая функция (выделено красным) . Сумма штрафа должна быть минимальна.

Примечание : для удобства настройки Поиска решения используются именованные диапазоны .

Вводная статья про Поиск решения в MS EXCEL 2010 находится здесь .

Источник

Задача о рюкзаке в Excel

В общем виде задача о рюкзаке формулируется следующим способом: имеется рюкзак определенного объема и неограниченное количество предметов. Для каждого предмета известен его объем (вес) и ценность (стоимость, эффективность). В рюкзак можно положить целое число предметов различного типа. Цель состоит в том, чтобы суммарная ценность всех находящихся в рюкзаке предметов была максимальна, а их объем (вес) не превышал заданной величины. К подобной формулировке может быть сведена задача максимального использования грузоподъемности подвижного состава, грузовместимости судна, автомобиля и т.п. Такая задача часто возникает при выборе оптимального управления в экономико-финансовых областях (например распределение бюджета отдела по проектам).

Решение задачи в классической постановке

Подобные задачи легко решаются с помощью надстройки «Поиск решения». Подготовлены исходные данные (рисунок ниже). Задача состоит в том, чтобы за счет подбора значений ячеек B16:B19 добиться максимального значения целевой функции (значение ячейки D20).

На первом рисунке ниже показаны ограничения на значения изменяемых ячеек. На втором рисунке ниже приводится результат расчета. Во многих практических случаях данная постановка задачи является слишком упрощенной. Далее будут рассмотрены варианты усложнения постановки задачи.

Модифицированная задача

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

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

На следующем рисунке показаны ограничения на значения изменяемых ячеек B16:B19. В данном случае к ограничениям добавлено условие 16:19>=8:11, то есть задано минимальное необходимое количество предметов различных видов.

Решение задачи представлено последнем рисунке.

При необходимости дополнительное условие 16:19>=8:11 может быть изменено. Например, можно установить отдельные ограничения для всех предметов, назначив для некоторых из них точное количество предметов, в то время как для других — условие «не менее» или «не более»

Источник

Задача рюкзака решение excel

= Мир MS Excel/Задача о рюкзаке — Мир MS Excel

Войти через uID

Войти через uID

Модератор форума: _Boroda_, китин

Мир MS Excel » Вопросы и решения » Готовые решения » Задача о рюкзаке (Excel)

Задача о рюкзаке

MCH Дата: Среда, 12.08.2015, 20:40 | Сообщение № 1

В продолжении темы «Подбор слагаемых под нужную сумму» (сумма подмножеств)
Предлагаю решение «Задачи о рюкзаке»

Во вложении два алгоритма:
Первый подбирает предметы суммарным весом не более необходимого, имеющие максимальную стоимость.
Второй подбирает перечень предметов суммарным весом и стоимостью в определенном диапазоне от минимального до максимального.

В основе решения динамическое программирование, отсюда ограничения — работа с целыми числами, и существенное увеличение времени решения и количество выделяемой памяти от размеров рюкзака.

UPD 13/08/2015
Добавил решение классической «задачи о рюкзаке» жадным алгоритмом
Не всегда находит наилучшее решение, но работает достаточно быстро

В продолжении темы «Подбор слагаемых под нужную сумму» (сумма подмножеств)
Предлагаю решение «Задачи о рюкзаке»

Во вложении два алгоритма:
Первый подбирает предметы суммарным весом не более необходимого, имеющие максимальную стоимость.
Второй подбирает перечень предметов суммарным весом и стоимостью в определенном диапазоне от минимального до максимального.

В основе решения динамическое программирование, отсюда ограничения — работа с целыми числами, и существенное увеличение времени решения и количество выделяемой памяти от размеров рюкзака.

UPD 13/08/2015
Добавил решение классической «задачи о рюкзаке» жадным алгоритмом
Не всегда находит наилучшее решение, но работает достаточно быстро MCH

Сообщение В продолжении темы «Подбор слагаемых под нужную сумму» (сумма подмножеств)
Предлагаю решение «Задачи о рюкзаке»

Во вложении два алгоритма:
Первый подбирает предметы суммарным весом не более необходимого, имеющие максимальную стоимость.
Второй подбирает перечень предметов суммарным весом и стоимостью в определенном диапазоне от минимального до максимального.

В основе решения динамическое программирование, отсюда ограничения — работа с целыми числами, и существенное увеличение времени решения и количество выделяемой памяти от размеров рюкзака.

UPD 13/08/2015
Добавил решение классической «задачи о рюкзаке» жадным алгоритмом
Не всегда находит наилучшее решение, но работает достаточно быстро Автор — MCH
Дата добавления — 12.08.2015 в 20:40

Источник

Лабораторная работа 3. Решение задачи о рюкзаке приближенными и точными алгоритмами.

Задача о рюкзаке и ее варианты широко используются для моделирования большого числа практических задач управления, таких как выбор проектов, распределение капитала, комбинаторные аукционы, расположение предметов в системах сборки по заказу и др. [3, 6, 7].

Одним из частных случаев задачи о рюкзаке является одномерная булева задача о рюкзаке, которая может быть сформулирована следующим образом. Рассмотрим рюкзак с объемом равным b. Пусть существует n различных предметов. Предмет j занимает объем aj, при этом его ценность равна cj. Цель задачи состоит в максимизации выгоды от помещенных в рюкзак предметов. Таким образом, задача может быть сформулирована как задача булева линейного программирования в следующем виде:

Если условие заменить условием, то получим задачу об одномерном целочисленном рюкзаке. В этом случае имеетсяn типов предметов и требуется определить, сколько предметов каждого типа нужно поместить в рюкзак, чтобы они имели максимальную суммарную ценность.

Для решения задачи о рюкзаке разработан целый ряд алгоритмов и методов: динамическое программирование [6], метод ветвей и границ [3], метод перебора L-классов [2] и другие.

В случае небольших n одномерная задача о рюкзаке может быть также решена в табличном процессоре MS Excel. При этом исходные данные задачи записываются также, как и для задачи ЛП, но в окне Поиск решения, Ограничения необходимо указать, что переменные являются целыми, либо булевыми (рис. 10).

Рис. 10. Диалоговое окно Поиск решения для задачи о рюкзаке.

При больших n точное решение задачи может потребовать значительных затрат машинного времени. Поэтому актуальной является разработка приближенных алгоритмов. Самый известный приближенный алгоритм – это так называемый “жадный” алгоритм. Опишем этот алгоритм по шагам для булевого случая.

«Жадный» алгоритм.

т.е. так, чтобы выполнялось соотношение

,

положить k:=1 и перейти на шаг 2.

Увеличить k на единицу и перейти на шаг 3.

Шаг 3. Если k > n, то алгоритм завершает работу, иначе перейти на шаг 2.

Варианты заданий. Решить задачу о рюкзаке в пакете MS Excel. Разработать алгоритм полного перебора и «жадный» алгоритм для задачи о рюкзаке [8]. Найти точное и приближенное решение задачи о рюкзаке, используя реализованные алгоритмы.

Источник

Adblock
detector

Понравилась статья? Поделить с друзьями:
  • Решение задачи по формуле если в excel
  • Решение задачи по информатике в excel с решением
  • Решение задачи оптимизации средствами excel
  • Решение задачи оптимального планирования в ms excel готовая работа
  • Решение задачи об оптимальном плане в excel