Привет! Подходящего раздела не нашел, напишу здесь.
Есть следующая задача:
Имеем D-деталей различной длины, большое кол-во. Имеем набор упаковок с заготовками. В каждой упаковке по N-штук заготовок длиной L, заготовки в каждой упаковки равной длины, но в разных упаковках длины могут различаться.
Необходимо выполнить раскрой с минимальными отходами. По условию, все неиспользованные заготовки из распечатанной упаковки так-же считаются отходами.
У меня есть несколько вариантов.
1. Полный перебор вариантов кроя и выбор наилучшего. Дает 100% оптимальный результат, но не пригоден при большом кол-ве деталей.
2. Жадный алгоритм, когда сортируем детали от большей к меньшей и каждую деталь отрезаем от заготовки минимальной длины на которую он помещается. Часто результат не совсем хороший, скорость работы очень высокая.
3. Еще вариант, тасовать порядок деталей как в картах, чем больше деталей тем больше вариантов растасовки. В подавляющем числе случаев дает более чем хороший результат, скорость работы высокая, но медленнее чем во втором случае.
Возможно кто-то сталкивался с подобной задачей, хотелось бы услышать, как вы справились с ней?