Страницы: 1
RSS
Алгоритм для расчёта пила профилей
 
Добрый день.
Сразу предупреждаю , что я объясняюсь я хуже всех на планете))
Спасибо за внимание и терпение )

Ситуация такая. Занимаюсь пилом ал. профилей. Предпочитаю подсчитывать все в экселе по производству. Но вот , уже какой день бьюсь над реализацией своей идеи в эксель. Мне нужно минимизировать используемое кол-во материала. Попытаюсь объяснить нагляднее.

У меня есть заказ:
Профиль А 500 см  8 шт.
Профиль B 730 см 7 шт.
Профиль С 901 см 5 шт.
Размер 1 целого профиля у меня обычно идет по соткам от 4000 до 6500 ( 4100;4200; ..... ; 6400;6500)
Мне нужно чтобы программа находила оптимальный размер целого профиля с минимальным отходом.

Есть куча программ которые это делают , но я хочу внести такую функцию в свой ексель , чтобы все можно делать с 1 файла и не заморачиваться.
Привел , пару примеров в скриншотах. Но такие программы все равно не делают все что я хочу .
Мне нужно , чтобы оно искала сама оптимальный размер профиля с наименьшими затратами.
В скриншотах я вводил это значение руками 4000,5000,6300
При 4000 у нас выходит 4 палки , что равняется 16000
При 5000 у нас выходит 3 палки , что равняется 15000
При 6300 у нас выходит 3 палки , что равняется 18900
Получается что искомое наше значение 4000 , самое оптимальное.
http://cs622525.vk.me/v622525792/1fa0e/dqLg4OYl9Rk.jpg
http://cs622525.vk.me/v622525792/1fa17/9ATMvP6lHmI.jpg
http://cs622525.vk.me/v622525792/1fa05/lF9UKFwM-UM.jpg
Изменено: saint93 - 06.03.2015 14:00:54
 
Не могу даже привести пример в эксель.
Одно могу еще написать.
Что программа дожна брать допустим размер 4000 и запихнуть туда максимальное кол-во палок с размер 500,730,901 с минимальным остатком ! как то так
 
Добрый день
Посмотрите здесь
 
Alexander88, тут прямоугольный профиль , тут даже тяжелее. У меня линейный . То есть там длина ширина . у меня только длина
 
Обязательно нужно использовать заготовки одного размера или можно комбинировать различные?
Например, одновременное использование заготовок размером 4000, 4800 и 4900 можно минимизировать отходы.
901*3 + 730*3 = 4893
901*2 + 730*4 = 4722
500 * 8 = 4000
суммарные отходы - 85, всего 0,62%
 
если использовать только один вид, то оптимальным будет размер 4600:
901 + 730*3 + 500*3 = 4591
901 + 730*3 + 500*3 = 4591
901*3 + 730 + 500*2 = 4433
суммарный отход - 185 или 1,34%
 
В описании и на скринах различная информация.
во 2м и 3м скрине указано следующее количество: 500 - 10шт, 730 - 7 шт, 901 - 5 шт.\
Оптимальным в данном случае нужно взять 3 заготовки размером 4900
901*3 + 730*3 = 4893
901 +730*2 + 500*5 = 4861
901 + 730*2 + 500*5 = 4861

общий отход составит 0,58%
Пример варианта распила см. в файле
 
Задача (может, ошибаюсь) непростая.
Может, ее в Работу перенести. Хотя... Автора давно нет. Празднует? :)
 
Задача очень не простая. И довольно интересная.
Вот по поводу варианта распила под ноль хотелось бы уточнить у автора: на практике реально распилить профиль 4000 на 8 кусков по 500? Ведь сам рез отнимает свои миллиметры от длины профиля.
Учимся сами и помогаем другим...
 
Тема интересная, жаль что ТС пропал
Хотел протестировать свои алгоритмы на реальных данных в сравнении с CuttingLine и др. программами линейного раскроя.
 
Блин , и в правду пропал. Много работы было , не до этого. Пользовался специальными программами.
Сейчас появилась новая проблема , изучаю VB :D Хочу быть опытным юзером)
Цитата
ber$erk написал: на практике реально распилить профиль 4000 на 8 кусков по 500? Ведь сам рез отнимает свои миллиметры от длины профиля.
Нет , обычно длинна пропила 5-10 мм. Зависит от заготовки.

Цитата
MCH написал: и алгоритмы на реальн
Это ваша программа?
Если да , то вы большой молодец. Хотел бы я обладать такими же знаниями )
Только я не могу понять как запустить расчёт?
Изменено: saint93 - 26.05.2015 09:39:22
 
Цитата
saint93 написал: Это ваша программа?
Да, есть определенный опыт по написанию алгоритма оптимизации линейного раскроя (сам по работе с раскроем не связан)
Цитата
Только я не могу понять как запустить расчёт?
В приложенном файле нет макросов, это просто сгенерированный отчет.

Мне самому интерессно, как работают алгоритмы линейного раскроя, которые я написал.
Могли бы выложить реальные данные здесь (или отправить в личку).
Можно было бы сравнить их эффективность.
 
MCH, то есть это не программа , а просто вбитые данные?  :D
 
Цитата
есть определенный опыт по написанию алгоритма оптимизации линейного раскроя
Уж, поверьте, не алгоритм ручного ввода данных :)
 
Цитата
saint93 написал:
то есть это не программа , а просто вбитые данные?
В приложенном мной файле "просто вбитые данные", но посчитаны они программным способом.

Задачу линейного раскроя можно решать разными способами:
1. Полный перебор, как правило, не возможно реализовать в реальных условиях.
2. Самый эффективный способ - целочисленное линейное программирование. В качестве инструмента можно использовать Solver.
Но здесь есть ряд ограничений - необходимо найти все варианты сложения исходных деталей, не превышающих размер заготовок (а вариантов может быть несколько тысяч или сотен тысяч). Ограничение Solver'a - 200 изменяемых ячеек.
3. "Жадный" алгоритм. У данного алгоритма есть вариации, основное достоинство - высокая скорость. Применим для быстрой оценки раскроя, либо когда скорость важнее оптимизации.
4. Решать как частный случай задачи о рюкзаке (сумма подмножеств) и выбор наилучшего варианта из имеющихся.
5. Генетический алгоритм и алгоритм муравьиной колонии. Ничего про эти алгоритмы сказать не могу, т.к. их не изучал.

Реализовал собственный алгоритм линейного раскроя, который основан на решении задачи о рюкзаке методом целочисленного динамического программирования. Производится генерация различных вариантов раскроя в зависимости от сортировки исходных деталей и заготовок и выбор наилучшего решения.
К достоинству можно отнести - достаточно эффективный результат по сравнению с "жадным" алгоритмом, а также при сравнении с результатом программ CuttingLine и Optimize.

Примеры получаемых раскроев можно посмотреть здесь: https://yadi.sk/d/B_fg089lhsMk4
Если будет заинтересованность в алгоритме, то можете обратиться ко мне в личку.


В сети наткнулся на тесты программ по линейному раскрою: http://forum-okna.ru/index.php?showtopic=35118
Выложил свои результаты (на 5м листе)
Мой алгоритм показал результаты лучше, чем это делают специализированные программы.

Выложите пример данных, раскрою своей программой, сможете оценить эффективность алгоритма.
 
Цитата
saint93 написал: Только я не могу понять как запустить расчёт?
Программу можно скачать здесь: http://www.excelworld.ru/forum/3-21304-1
Страницы: 1
Наверх