Алгоритм оптимального гильотинного двумерного раскроя
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Алгоритм оптимального гильотинного двумерного раскроя

Алгоритм оптимального гильотинного двумерного раскроя

Ответ
Поиск в этой теме
Непрочитано 19.04.2011, 09:17 #1
Алгоритм оптимального гильотинного двумерного раскроя
Shpur
 
Регистрация: 19.04.2011
Сообщений: 9

Ребят, такая трабла. Я уже неделю парюсь над оптимальным алгоритмом гильотинного раскроя. Вся проблема в том, что мне хоть и нужен оптимальный метод, метод долбления листа на карты, мне не подходит. Т.к детали у меня имеют задаваемые характеристики, и раскрой я должен написать именно для этих детайлей. Помогите пожалуйста
Просмотров: 12330
 
Непрочитано 19.04.2011, 09:26
#2
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Вы бы поподробнее задачу описали, да еще бы с примерами...
Do$ вне форума  
 
Автор темы   Непрочитано 19.04.2011, 09:35
#3
Shpur


 
Регистрация: 19.04.2011
Сообщений: 9


Извольте. Допустим мне нужно сделать металлический ящик, ну можно сказать что то типа сейфа. Задаются Параметры ящика: длина, ширина, выоста, сиречь a,b,c
Итак, в самом просто варианте без у чета всяких наворотов сие выглядит так
у ящика 6 стенок - передняя, задняя (a*c), дно/верх (a*b), боковые (b*c).
Есть лист металла с поределенными параметрами l -длина, h- ширина.
Мне нужно написать прогу расчета оптимального раскроя данного листа, и посчитать сколько металла уйдет на 1 ящик. Резка гильотинная
Shpur вне форума  
 
Непрочитано 19.04.2011, 09:47
#4
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от Shpur Посмотреть сообщение
Резка гильотинная
То есть, разрез может быть только прямолинейным и от края до края?
Цитата:
Сообщение от Shpur Посмотреть сообщение
метод долбления листа на карты, мне не подходит
А это что за метод?
Do$ вне форума  
 
Автор темы   Непрочитано 19.04.2011, 10:01
#5
Shpur


 
Регистрация: 19.04.2011
Сообщений: 9


1. Да. От края до края листа
2. Везде где я смотрел там именно алгоритм раскроя на максимальное кол во элементов равных по площади.
Shpur вне форума  
 
Непрочитано 19.04.2011, 11:21
#6
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


странный у вас вопрос.
Что значит, вам нужен алгоритм?
По сути, задача решается любым из алгоритмов, применимых для любых задач.

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

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

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

ps. а чем не подходят готовые решения?
__________________
Чем гениальнее ваш план, тем меньше людей с ним будут согласны.
/Сунь Цзы/
Елпанов Евгений вне форума  
 
Автор темы   Непрочитано 19.04.2011, 11:29
#7
Shpur


 
Регистрация: 19.04.2011
Сообщений: 9


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


Вот это мне и надо реализовать. Готовые решения не подходят за невозможностью расковырять сам алгоритм
Shpur вне форума  
 
Непрочитано 19.04.2011, 11:45
#8
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


Тема называется:
Цитата:
Сообщение от Shpur;
Алгоритм оптимального гильотинного двумерного раскроя
Цитата:
Сообщение от Shpur Посмотреть сообщение
Вот это мне и надо реализовать. Готовые решения не подходят за невозможностью расковырять сам алгоритм
Если алгоритм ясен, то не понятно, в чем же вопрос...
__________________
Чем гениальнее ваш план, тем меньше людей с ним будут согласны.
/Сунь Цзы/
Елпанов Евгений вне форума  
 
Автор темы   Непрочитано 19.04.2011, 11:51
#9
Shpur


 
Регистрация: 19.04.2011
Сообщений: 9


Хотя бы пример программной реализации... Я пишу учебную прогу и застрял именно на подборе формул...
Shpur вне форума  
 
Непрочитано 19.04.2011, 12:18
#10
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™




На самом деле, если я не ошибаюсь, все программы раскроя платные, т.е. я сильно сомневаюсь, что тебе удастся получит реальный пример боевого кода...
__________________
Чем гениальнее ваш план, тем меньше людей с ним будут согласны.
/Сунь Цзы/
Елпанов Евгений вне форума  
 
Автор темы   Непрочитано 19.04.2011, 12:31
#11
Shpur


 
Регистрация: 19.04.2011
Сообщений: 9


Блин((( Влип я.. Спасибо всем за внимание и участие
Shpur вне форума  
 
Непрочитано 19.04.2011, 16:21
#12
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Shpur Посмотреть сообщение
Блин((( Влип я.. Спасибо всем за внимание и участие
А вариантов листов/ящичков много? Если пару десятков, то может их побыстрому вручную оформить, сохранить и потом из списка выбирать готовые варианты?
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Автор темы   Непрочитано 19.04.2011, 16:24
#13
Shpur


 
Регистрация: 19.04.2011
Сообщений: 9


Вариантов? Ну -.. Надо блин еще предусмотреть возможность добавления новых ,но это не проблема.. Так весь прикол в том, что прога высчитывать должна сколько на энное кол во ящиков уйдет листов металла, и наоборот сколько из энного колва металла получится ящиков. За этим и нужен оптимальный раскрой
Shpur вне форума  
 
Непрочитано 19.04.2011, 16:30
#14
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


стенки ящика все прямоугольные? или возможны ящики в виде "сердечка", "цилиндра"?
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Автор темы   Непрочитано 19.04.2011, 16:32
#15
Shpur


 
Регистрация: 19.04.2011
Сообщений: 9


Все прямогольные. Это в условии сразу обговаривается
Shpur вне форума  
 
Непрочитано 19.04.2011, 16:35
#16
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Shpur Посмотреть сообщение
Я уже неделю парюсь над оптимальным алгоритмом гильотинного раскроя.
Покажешь, чего уже "напарил"?
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Автор темы   Непрочитано 19.04.2011, 17:06
#17
Shpur


 
Регистрация: 19.04.2011
Сообщений: 9


Только голую математику. Как ее применить в программном виде не приложу ума. Итак, как я понимаю.
n- кол во деталей всего
ищем деталей с максимальной длиной
max:=l[1];
For i:=2 to n do
begin
if l[i]> max then max:=l[i];
end;
Нашли детальку с максимальной длиной.. потом надо как то ее разместить сиречь сразу показать границу обреза ну тут тоже ничего сложного
//LL-длина железного листа целого
lobr - длина обрезанного
НН - ширина целого листа
lobr:= LL-max;
И тут встает первая проблема
Если фигура расположена неудачно ее надо повернуть, в таком случае шиина с длиной меняются местами
Даже если это отбросить в результате обрезки у нас получаются прямоугольника с параметрами:
max*HH
Lobr*HH

что тут делать дальше я и застрял. Я знаю что тут надо писать процесс генерации оптимальных карт раскроя. Вот я и не врублюсь как это делается.
Но если плясать от изложенного выше то в -м прямоуголнике с размерностью max*HH, Сходу надо отчечь ширину уже готовой детали пусть это будет h
Итого в нашем расоряжении прямоугольник
max*HH-h
И опять перебирать детали, какая из них сюда поместится так чтобы остался минимум свободного места
Shpur вне форума  
 
Непрочитано 21.04.2011, 01:17
#18
GRIFEL

пенсионер-конструктор
 
Регистрация: 11.02.2011
Калуга
Сообщений: 68


http://lee-mac.com/boundingboxreactor.html Посмотри здесь - могут возникнуть интересные идеи - хотя все наоборот тут - лист вокруг заготовок .......
GRIFEL вне форума  
 
Непрочитано 15.12.2011, 21:06
#19
romanew


 
Регистрация: 15.12.2011
Сообщений: 1


Цитата:
Сообщение от Елпанов Евгений Посмотреть сообщение
странный у вас вопрос.
3. абсолютный раскрой - создаем квадратную матрицу, с размерностью равной удвоенному количеству всех деталей и решаем, если нет решений, убираем из матрицы одну деталь и решаем заново. Данный путь, я бы не рекомендовал для большого количества деталей...
а можешь поподробнее рассказать про это, или ссылку какуюнибудь или еще чонить?..) поискал в инете, не нашел, имею подобную задачу - есть прямоугольник большой и много маленьких, требуется ответить поместятся маленькие в большом или нет, на Си , С++ ...) вот , нашел кое какие алгоритмы, но они печальны, завтро еще с преподавателем поговорю..
romanew вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Алгоритм оптимального гильотинного двумерного раскроя



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ищу программы для линейного оптимального раскроя и фигурного оптимального раскроя листа под AutoCAD mazik Прочее. Программное обеспечение 24 23.06.2012 08:01
Программа оптимального раскроя металла Конфигуратор Прочее. Программное обеспечение 4 10.04.2008 10:39
программа для оптимального раскроя материала на криволинейные детали Евгений Cахаров AutoCAD 2 06.02.2008 15:07