Задача об упаковке в контейнеры с ограничениями на остатки
Калькулятор решает задачу об упаковке в контейнеры с ограничениями на оставшееся свободное место в контейнере. Создано по запросу пользователя.
Данный калькулятор был создан по запросу пользователя Калькулятор раскроя панели по ширине.
Задача формулировалась следующим образом: Нужен калькулятор для раскроя заказов с учетом остатков при порезке. Например: Имеются панели длиной 13500 мм18 шт и есть заказ: 9000мм9 шт и 4500мм9 шт 63002. Суть алгоритма такая: берем 913500 и делаем 99000 и 94500, остаток равен 0. Потом берем 213500 и делаем 26300, остаток 27200, так как остаток в 900 мм не выгоден, если делать с одной панели. Имеется условия: 1) остаток должен быть либо 2000 мм и выше. Либо до 700 мм не больше. То есть, мне необходимо знать как выгоднее раскроить материал либо без остатков, либо с остатком приемлемого размера. Хотелось бы, чтобы условную длину панели для резки можно было вносить вручную.
Как видим, есть набор панелей фиксированной длины, и набор отрезков, которые нужно из них получить. Если панели заменить на контейнеры, а отрезки на элементы, то задача выглядит почти как Задача об упаковке в контейнеры. Но с одним существенным отличием — если в классической задаче об упаковке в контейнеры требовалось минимизировать число контейнеров, то здесь нам всего лишь надо обеспечить приемлемые остатки, или, в терминологии контейнеров, размер оставшегося свободного места.
Ниже калькулятор, который пытается рекурсивным алгоритмом заполнять контейнеры так, чтобы удовлетворять условию по остаткам. Я не уверен, что он всегда будет находить оптимальное решение, но вроде бы работает. Если для какой-то комбинации ошибется, напишите, будет интересно на нее посмотреть.
Набор элементов для упаковки
Размер элемента | Количество элементов данного размера | ||
---|---|---|---|
Комментарии