Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Алгоритм линейного раскроя (финальный рывок)


Автор: AXS 4.2.2009, 14:04
В общем решил написать алгоритм линейного раскроя методом полного перебора.

Дано:
N деталей разной длины и неограниченное количество заготовок длиной L
Любая из деталей меньше L
Требуется:
Разместить все детали на заготовки, используя как можно меньше заготовок и при этом остаток от последней заготовки должен быть как можно бОльшим.

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

В аттаче скрин - результат работы алгоритма при 10 деталях разной длины и заготовках длиной 1000. Первые 10 полос - это сами детали (по сути тоже комбинации из одной детали) остальное - их комбинации.
------------------------------------------------------------------------
Теперь то, что я не могу осилить... мозг устал наверное

Надо из этих комбинаций выбрать те которые отвечают условию:

Цитата

использовать как можно меньше заготовок и при этом остаток от последней заготовки должен быть как можно бОльшим 

Автор: AXS 4.2.2009, 14:56
Кстати, (для лучшего понимания) Вот такой результат даёт одна из коммерческих программ раскроя:
user posted image

Автор: WaReZMEN 4.2.2009, 15:04
Ждать устанешь полным перебором это очень долгий способ...

Автор: AXS 4.2.2009, 17:53
Цитата(WaReZMEN @ 4.2.2009,  15:04)
Ждать устанешь полным перебором это очень долгий способ...

Ну а если невзирая на скорость..?  Может мне всего 30-50 деталей надо использовать.
Вопрос же не в этом, а в том как из уже полученных вариантов наполнения заготовок выбрать те, которые используют как можно меньше материала... Как в предыдущем моём посте.


PS: Кстати, попробовал сделать раскрой своей программой, алгоритм которой, разрабатывал 2 года назад и считал неоптимальным...   и результат удивил:

user posted image

Получается лучше чем платный конкурент!
Причём алгоритм молниеносный по своей скорости...

Но всё же хочется доработать нынешний алгоритм.

Автор: WaReZMEN 5.2.2009, 08:24
Слушай а не профиль ли ты случаем хочешь раскроить?

Автор: AXS 5.2.2009, 11:15
Цитата(WaReZMEN @ 5.2.2009,  08:24)
Слушай а не профиль ли ты случаем хочешь раскроить?

Он самый. МДФ профиль. Даже программа, которой принадлежит последний скрин называется http://www.mak-ms.com/index.php?option=com_content&task=view&id=12&Itemid=32. 
Правда я использовал там "жадный" алгоритм, а он по-моему не очень оптимален для такой задачи.

Кстати, какой алгоритм использовал ты?

Автор: WaReZMEN 5.2.2009, 11:30
AXS, извини я работаю в кампаний разрабатывающие ПО для предприятий и фирм связных с изготовлением ПВХ конструкций поэтому коммерческая тайна.. скажу лишь что это наш собственный а тот что в книге был описан он не оптимальный его могу дать если интересно...

Автор: AXS 5.2.2009, 11:40
Цитата(WaReZMEN @ 5.2.2009,  11:30)
AXS, извини я работаю в кампаний разрабатывающие ПО для предприятий и фирм связных с изготовлением ПВХ конструкций поэтому коммерческая тайна.. скажу лишь что это наш собственный а тот что в книге был описан он не оптимальный его могу дать если интересно...

Жаль. 
Мне в принципе пофиг - софт фриварный, но хотелось бы качественный раскрой.

Но от "того что в книге" не откажусь. Поковыряю мозг. 

Автор: WaReZMEN 5.2.2009, 12:11
Постараюсь вечерком залить... если не забуду...

Автор: AXS 9.2.2009, 09:25
Цитата(WaReZMEN @ 5.2.2009,  12:11)
Постараюсь вечерком залить... если не забуду...

Видимо забыл...
WaReZMEN! Жду...

Автор: WaReZMEN 9.2.2009, 13:18
Вылетело из головы... седня точно закину...

Автор: WaReZMEN 10.2.2009, 20:27
Вот код

Автор: RuslanR 28.3.2013, 03:31
Программа Optimize
Ссылка для скачивания: http://fs-bud.at.ua/Programma/Optimize/Optimize_Setup.rar

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)