LINUX.ORG.RU

алгоритм оптимальной упаковки


0

0

Как правильно решить задачу "оптимальной упаковки" со след. условиями:

Имеется N прямоугольных объектов
(можно повернуть на 90 градусов, но сразу все объекты одного типа) и
лист бумаги, который надо оптимально заполнить этими прямоугольниками.

Кроме того, надо получить заданное кол-во объектов каждого типа
(разное для каждого типа объектов) при минимальном кол-ве листов
бумаги. Все листы бумаги -- копия первого.

Как такое решать?

★★★★★

>Как такое решать?

В общем случае - методом динамического программирования http://ru.wikipedia.org/wiki/Задача_об_упаковке_в_контейнеры

Примеры программ:

Two-dimensional Bin Packing http://www.astrokettle.com/

2D Nesting and Case Packer Optimizer http://www.downloadfreetrial.com/business/busi7592.html

Packer3D http://www.fid-tech.com/rus/technol/data/soft/1.383.html

eCutout http://www.ecutout.com/rus/eCutout-Pro.html

quickquest ★★★★★
()
Ответ на: комментарий от quickquest

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

sdio ★★★★★
() автор топика
Ответ на: комментарий от sdio

>с вышеуказанными доп. условиями.

>(можно повернуть на 90 градусов, но сразу все объекты одного типа)

(ИМХО) это условие сокращает число вариантов размещения, но не влияет на сам алгоритм.

>надо получить заданное кол-во объектов каждого типа (разное для каждого типа объектов) при минимальном кол-ве листов бумаги. Все листы бумаги -- копия первого.

(ИМХО) это двумерный вариант "задачи о M рюкзаках" http://www.np-soft.ru/npproject/projects/int/knapsacks/knapsacks.htm

где для одного рюкзака - http://www.wikiznanie.ru/ru-wz/index.php/Задача_об_одномерной_оптимальной_упа... (Задача о рюкзаке)

P.S. В англоязычных источниках можно поискать по "bin-packing"

quickquest ★★★★★
()
Ответ на: комментарий от quickquest

Там, вроде, каждый рюкзак набивается отдельно.

Мне надо расположить объекты на одном листе, потом этот лист !размножить! (т.е. все одинаковые) некоторое кол-во раз и в сумме получить заданное (или несколько больше) в начале кол-во объектов каждого типа.

Т.е. если надо было по условию n1=10, n2=22, n3=34 в результате можем получить n1=10, n2=25, n3=35 (если было 5 листов на каждом по два n1, пять n2, семь n3)

sdio ★★★★★
() автор топика
Ответ на: комментарий от sdio

никто не знает?
всем лень?
или другое :-)?

sdio ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.