2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 Задача о рюкзаке.
Сообщение28.06.2022, 13:11 
Заслуженный участник
Аватара пользователя


23/07/05
17977
Москва
Имеются несколько "рюкзаков" заданной вместимости (возможно, разной) и "куча" предметов разного объёма, которые нужно упаковать в эти рюкзаки. Предметы делятся на две категории: те, которые обязательно надо упаковать (для них места в рюкзаках должно хватить), и те, которые упаковываются при наличии достаточного места в рюкзаке. Есть одна особенность: если одинаковые предметы попадают в один рюкзак, то они вместе занимают меньше места, чем их суммарный объём. Задача состоит в максимизации количества упакованных предметов.

Нужна литература, в которой описаны алгоритмы решения такой задачи, отличные от полного перебора, пусть даже приближённые. Я в курсе, что задача NP-полная.

P. S. Задача связана с оптимизацией производства. Программированием буду заниматься не я, меня просто спросили о методах решения.

 Профиль  
                  
 
 Re: Задача о рюкзаке.
Сообщение28.06.2022, 15:04 


07/08/14
4231
Someone в сообщении #1558698 писал(а):
Нужна литература, в которой описаны алгоритмы решения такой задачи
В гуле находит

"Задача укладки рюкзака очень сложна. Если перебирать всевозможные подмножества данного набора из k предметов, то получится решение сложности не менее чем O($2^k$ ). В настоящее время неизвестен (и, скорее всего, вообще не существует) алгоритм решения этой задачи, сложность которого является многочленом от k."

 Профиль  
                  
 
 Re: Задача о рюкзаке.
Сообщение28.06.2022, 15:21 
Заслуженный участник
Аватара пользователя


23/07/05
17977
Москва
upgrade, я в курсе. Я же и спрашиваю о методах, которые эффективнее полного перебора, пусть даже они не дают точного решения. Важно за приемлемое время получить достаточно хорошее решение.

 Профиль  
                  
 
 Re: Задача о рюкзаке.
Сообщение28.06.2022, 15:24 
Аватара пользователя


14/12/17
1523
деревня Инет-Кельмында
Someone в сообщении #1558698 писал(а):
если одинаковые предметы попадают в один рюкзак, то они вместе занимают меньше места

Это может быть про нелинейный рюкзак? https://hochbaum.ieor.berkeley.edu/html ... apsack.pdf
или вот, https://www.sciencedirect.com/science/a ... 0306014500
По крайней мере, я попытался ответить, на троечку :)

 Профиль  
                  
 
 Re: Задача о рюкзаке.
Сообщение28.06.2022, 15:47 
Заслуженный участник


20/08/14
11867
Россия, Москва
Someone
Не так давно у нас была похожая тема: «Перераспределить кучу на кучки с min дисперсией»
Там не совсем рюкзак, но кажется как раз планирование производства. Без литературы, но вроде человек получил вполне приемлемое решение. Можно оттуда взять идеи/методы, условия же придётся уточнить под свою задачу.

 Профиль  
                  
 
 Re: Задача о рюкзаке.
Сообщение28.06.2022, 16:14 


14/01/11
3062
По-моему, условие нелинейной впихиваемости одинаковых предметов можно свести к рассмотрению задачи multiple-choice knapsack problem. Т.е. если есть 2 предмета объёмом по $v_1$, при упаковке в один рюкзак дающих объём $v_2$, мы можем рассмотреть набор из 3-х предметов объёмами $v_1,v_1,v_2$ стоимостью $1,1,2$ соответственно, из которых мы можем выбрать только один.

 Профиль  
                  
 
 Re: Задача о рюкзаке.
Сообщение29.06.2022, 14:35 


14/01/11
3062
Стоп, бред написал. :facepalm: Они ведь могут в разные рюкзаки попасть.

 Профиль  
                  
 
 Re: Задача о рюкзаке.
Сообщение29.06.2022, 19:44 
Заслуженный участник
Аватара пользователя


23/07/05
17977
Москва
eugensk в сообщении #1558711 писал(а):
Это может быть про нелинейный рюкзак?
Похоже.

Dmitriy40 в сообщении #1558716 писал(а):
Не так давно у нас была похожая тема
Надо обдумать.

Sender в сообщении #1558800 писал(а):
Стоп, бред написал.
Не страшно. Я иногда тоже бред изрекаю.

Однако, может быть, кто-нибудь порекомендует литературу (лучше, но не обязательно на русском языке) с описаниями алгоритмов?

 Профиль  
                  
 
 Re: Задача о рюкзаке.
Сообщение29.06.2022, 23:50 


14/01/11
3062
Один из возможных общих подходов к решению - переформулировать задачу в виде SMT или даже SAT, после чего натравить соответствующий специализированный решатель. У SMT более богатый язык, позволяющий компактно сформулировать задачу, в то время как SAT-решатели способны решать очень большие и/или сложные задачи. SMT- и SAT-решатели развиваются уже не первый год и позволяют решать в том числе задачи промышленной сложности. Среди этих решателей проводятся ежегодные состязания(http://www.satcompetition.org/,https://smt-comp.github.io/2021/results.html), их результаты и по большей части исходные коды программ-участников находятся в открытом доступе.

-- Чт июн 30, 2022 00:09:40 --

Но лучше, наверное, начать с динамического программирования(в данном случае это метод решения задач дискретной оптимизации, а не написание кода). С его принципами можно ознакомиться, например, в 15 главе классической книги по алгоритмам: Т.Кормен, Ч.Лейзерсон, Р.Ривест, К.Штайн - Алгоритмы. Построение и анализ.

 Профиль  
                  
 
 Re: Задача о рюкзаке.
Сообщение30.06.2022, 07:22 
Заслуженный участник
Аватара пользователя


03/06/08
2337
МО
Someone
Перебор плох из-за недостаточности ресурсов или в силу сложности реализации, сиречь написания читаемого кода?
И ещё вопрос, число рюкзаков штучное или статистическое?

 Профиль  
                  
 
 Re: Задача о рюкзаке.
Сообщение30.06.2022, 11:19 
Заслуженный участник
Аватара пользователя


23/07/05
17977
Москва
пианист в сообщении #1558875 писал(а):
Перебор плох из-за недостаточности ресурсов или в силу сложности реализации, сиречь написания читаемого кода?
Насколько я знаю, пока не пробовали. На всякий случай хорошо было бы иметь и другие методы.

пианист в сообщении #1558875 писал(а):
И ещё вопрос, число рюкзаков штучное или статистическое?
Фиксированное количество (то ли $5$, то ли $6$, мне точно не сказали).

Содержательно "рюкзаки" — это рабочие, занимающиеся сборкой, которых надо загрузить работой достаточно равномерно. Попутно есть надежда, что это позволит увеличить объём производства. На практике часто получается так, что один уже свою работу сделал и сидит без дела, а зарплата у них одинаковая. Поэтому занятые ему завидуют. Там есть какие-то технологические ограничения, которые не позволяют загрузить "бездельника" работой, пока остальные не закончат. Составить распределение заданий раз и навсегда нельзя, потому что набор устройств, которые они собирают, постоянно меняется.

Sender в сообщении #1558863 писал(а):
Но лучше, наверное, начать с динамического программирования
Надо будет попробовать.

 Профиль  
                  
 
 Re: Задача о рюкзаке.
Сообщение30.06.2022, 12:11 
Заслуженный участник
Аватара пользователя


01/09/13
4676
Someone в сообщении #1558898 писал(а):
не позволяют загрузить "бездельника" работой, пока остальные не закончат

Но это же уже не упаковка рюкзаков?...

 Профиль  
                  
 
 Re: Задача о рюкзаке.
Сообщение30.06.2022, 12:25 
Заслуженный участник
Аватара пользователя


23/07/05
17977
Москва
Geen в сообщении #1558904 писал(а):
Но это же уже не упаковка рюкзаков?
Почему? Просто не осталось предметов такого объёма, который мог бы влезть. В любом случае, весьма похоже.

 Профиль  
                  
 
 Re: Задача о рюкзаке.
Сообщение30.06.2022, 12:32 


14/01/11
3062
Someone в сообщении #1558898 писал(а):
Содержательно "рюкзаки" — это рабочие, занимающиеся сборкой, которых надо загрузить работой достаточно равномерно.

Может, тогда имеет смысл максимизировать не число предметов, а минимальную загрузку рюкзака?

 Профиль  
                  
 
 Re: Задача о рюкзаке.
Сообщение30.06.2022, 13:01 
Заслуженный участник
Аватара пользователя


23/07/05
17977
Москва
Sender в сообщении #1558907 писал(а):
Может…
Пусть подумают, что лучше. Мне задача была сформулирована так, что я её понял как написано в первом сообщении, и со мной согласились. Меня просили порекомендовать методы решения. До полного перебора они сами додумались, но пока не реализовали.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 27 ]  На страницу 1, 2  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group