Логотип
Админка

Алгоритмы оптимизации раскроя: от простого к сложному

Алгоритмы оптимизации раскроя: от простого к сложному

Алгоритмы оптимизации раскроя: от простого к сложному

Алгоритмический консалтинг: важность оптимизации раскроя

Оптимизация раскроя материала - это одна из ключевых задач в производстве упаковки, которая напрямую влияет на экономическую эффективность производства. Высокий КИМ (коэффициент использования материала) означает меньше отходов, меньше затрат на материал и больше прибыли.

Различные алгоритмы nesting (нестационарной упаковки) позволяют решать эту задачу с разной степенью точности и сложности. Выбор правильного алгоритма зависит от множества факторов: типа заготовок (прямоугольные или сложной формы), количества различных размеров, требований к скорости расчета и точности результата.

Неправильный выбор алгоритма может привести к проблемам: низкий КИМ, медленный расчет, сложность реализации.


Диалог-консультация: выбираем алгоритм оптимизации

[Инженер-новичок, заинтересованно]: "Изучаю алгоритмы оптимизации раскроя. С чего начать? Какой алгоритм использовать для моей задачи?"

[Алгоритмист-оптимизатор упаковки, профессионально]: "Отличный вопрос! Выбор алгоритма зависит от вашей задачи. Расскажите, пожалуйста, какие у вас заготовки - прямоугольные или сложной формы? И сколько различных размеров?"

[Инженер-новичок, уточняя]: "Пока работаю с прямоугольными заготовками. Обычно один-два размера. Хочу достичь КИМ 90%+. Сейчас использую простой алгоритм по сетке, получаю около 85%."

[Алгоритмист-оптимизатор, структурированно]: "Для прямоугольных заготовок начните с алгоритма упаковки по сетке с ротацией. Это даст КИМ 85-90% и относительно прост в реализации. Затем можно перейти к более продвинутым алгоритмам, если нужен КИМ 90%+."

[Фантазер-инженер, вдохновенно]: "А что если использовать генетические алгоритмы или машинное обучение? Можно ли достичь КИМ 95%+?"

[Алгоритмист-оптимизатор, практично]: "Теоретически можно, но на практике для большинства случаев достаточно продвинутых алгоритмов nesting. КИМ 92-94% - это отличный результат. Дальнейшее увеличение требует значительных вычислительных ресурсов и дает небольшой прирост - обычно 1-2%, что может не окупить затраты на реализацию."

[Экономист, расчетливо]: "С точки зрения экономики, увеличение КИМ с 85% до 90% дает экономию материала на 5.9% (100/85 - 100/90 = 1.176 - 1.111 = 0.065). При стоимости материала 100 руб/м² это экономия 6.5 руб на каждый м². При больших объемах это значительная сумма."

[Консультант, ободряюще]: "Отлично! Давайте разберем алгоритмы от простого к сложному, с примерами и формулами..."

[Инженер-новичок, аналитически]: "Хорошо, понимаю теорию. Но на практике - как реализовать алгоритм с ротацией? И как понять, когда нужен более сложный алгоритм?"

[Алгоритмист-оптимизатор, технически]: "Отличные вопросы! Реализация алгоритма с ротацией довольно проста - нужно просто проверить оба варианта размещения (обычное и повернутое) и выбрать лучший. Более сложный алгоритм нужен, когда простой не дает нужного КИМ или когда заготовки сложной формы."

[Фантазер-инженер, креативно]: "А можно комбинировать алгоритмы? Например, сначала использовать простой для быстрой оценки, а потом продвинутый для оптимизации?"

[Алгоритмист-оптимизатор, одобрительно]: "Отличная идея! Это называется гибридный подход. Можно использовать простой алгоритм для начального размещения, а затем продвинутый для оптимизации. Это дает баланс между скоростью и точностью."


Простой алгоритм для прямоугольников: основа основ

Простейший алгоритм упаковки по сетке - это отправная точка для понимания оптимизации раскроя. Хотя он не дает максимального КИМ, он прост в реализации и подходит для большинства базовых случаев.

Алгоритм упаковки по сетке

Принцип работы

Алгоритм: Размещение заготовок по сетке с учетом размеров листа и заготовки, без учета ротации и оптимизации размещения.

Визуализация:

Лист 1000×700 мм
┌─────────────────────────────────────┐
│ [200×150] [200×150] [200×150] ... │ 5 штук по X
│ [200×150] [200×150] [200×150] ... │
│ [200×150] [200×150] [200×150] ... │ 4 ряда по Y
│ [200×150] [200×150] [200×150] ... │
└─────────────────────────────────────┘

Формула расчета

Количество по X = floor(Длина листа / Длина заготовки)
Количество по Y = floor(Ширина листа / Ширина заготовки)
Общее количество = Количество по X × Количество по Y

Где:

  • floor() - функция округления вниз (отбрасывание дробной части)
  • Длина и ширина должны быть в одинаковых единицах (мм, см, м)

Детальный пример расчета

Исходные данные:

  • Лист: 1000×700 мм
  • Заготовка: 200×150 мм

Расчет количества по оси X (длина):

Количество по X = floor(1000 / 200) = floor(5.0) = 5

Расчет количества по оси Y (ширина):

Количество по Y = floor(700 / 150) = floor(4.67) = 4

Расчет общего количества:

Общее количество = 5 × 4 = 20 заготовок

Расчет КИМ:

Площадь одной заготовки:

Площадь заготовки = 200 × 150 = 30,000 мм²

Площадь всех заготовок:

Площадь всех заготовок = 20 × 30,000 = 600,000 мм²

Площадь листа:

Площадь листа = 1,000 × 700 = 700,000 мм²

КИМ:

КИМ = (Площадь всех заготовок / Площадь листа) × 100%
КИМ = (600,000 / 700,000) × 100% = 85.7%

Отходы:

Отходы = Площадь листа - Площадь всех заготовок
Отходы = 700,000 - 600,000 = 100,000 мм² = 14.3%

Преимущества алгоритма

  1. Простота реализации - можно реализовать за несколько строк кода
  2. Быстрый расчет - O(1) сложность, мгновенный результат
  3. Подходит для большинства случаев - когда заготовки одинакового размера
  4. Легко понять - интуитивно понятная логика

Недостатки алгоритма

  1. Не учитывает ротацию - может быть лучше разместить заготовку повернутой
  2. Не оптимизирует размещение - размещение по сетке не всегда оптимально
  3. Ограниченный КИМ - обычно 80-87%, редко выше
  4. Не подходит для разных размеров - только для одинаковых заготовок

Когда использовать

Используйте, когда:

  • Заготовки одинакового размера
  • Нужна быстрая оценка
  • КИМ 85% достаточен
  • Простота важнее оптимизации

Не используйте, когда:

  • Нужен КИМ 90%+
  • Заготовки разных размеров
  • Заготовки сложной формы
  • Важна максимальная оптимизация

Алгоритм с ротацией: простое улучшение

Алгоритм с ротацией - это первое улучшение простого алгоритма, которое дает значительное увеличение КИМ при минимальном усложнении.

Алгоритм с проверкой ротации

Принцип работы

Алгоритм: Пробуем разместить заготовку в обычном положении и повернутую на 90°, выбираем вариант, который дает больше заготовок.

Визуализация:

Вариант 1 (без ротации):

Лист 1000×700 мм
┌─────────────────────────────────────┐
│ [150×200] [150×200] [150×200] ... │ 6 штук по X
│ [150×200] [150×200] [150×200] ... │
│ [150×200] [150×200] [150×200] ... │ 3 ряда по Y
└─────────────────────────────────────┘
Итого: 6 × 3 = 18 заготовок

Вариант 2 (с ротацией на 90°):

Лист 1000×700 мм
┌─────────────────────────────────────┐
│ [200×150] [200×150] [200×150] ... │ 5 штук по X
│ [200×150] [200×150] [200×150] ... │
│ [200×150] [200×150] [200×150] ... │ 4 ряда по Y
│ [200×150] [200×150] [200×150] ... │
└─────────────────────────────────────┘
Итого: 5 × 4 = 20 заготовок

Выбираем вариант 2 - больше заготовок.

Формула расчета

Вариант 1 (обычное положение):

Количество_1 = floor(Длина_листа / Длина_заготовки) × 
                floor(Ширина_листа / Ширина_заготовки)

Вариант 2 (ротация на 90°):

Количество_2 = floor(Длина_листа / Ширина_заготовки) × 
                floor(Ширина_листа / Длина_заготовки)

Выбор лучшего варианта:

Количество = max(Количество_1, Количество_2)

Детальный пример расчета

Исходные данные:

  • Лист: 1000×700 мм
  • Заготовка: 150×200 мм (обратите внимание - не квадратная!)

Расчет варианта 1 (без ротации):

Количество по X:

Количество по X = floor(1000 / 150) = floor(6.67) = 6

Количество по Y:

Количество по Y = floor(700 / 200) = floor(3.5) = 3

Общее количество:

Количество_1 = 6 × 3 = 18 заготовок

Расчет варианта 2 (с ротацией на 90°):

Количество по X (заготовка повернута):

Количество по X = floor(1000 / 200) = floor(5.0) = 5

Количество по Y (заготовка повернута):

Количество по Y = floor(700 / 150) = floor(4.67) = 4

Общее количество:

Количество_2 = 5 × 4 = 20 заготовок

Выбор лучшего варианта:

Количество = max(18, 20) = 20 заготовок

Используем вариант 2 - размещаем заготовки повернутыми на 90°.

Расчет КИМ:

Площадь одной заготовки:

Площадь заготовки = 150 × 200 = 30,000 мм²

Площадь всех заготовок:

Площадь всех заготовок = 20 × 30,000 = 600,000 мм²

Площадь листа:

Площадь листа = 1,000 × 700 = 700,000 мм²

КИМ:

КИМ = (600,000 / 700,000) × 100% = 85.7%

Сравнение:

  • Без ротации: 18 заготовок, КИМ 77.1%
  • С ротацией: 20 заготовок, КИМ 85.7%
  • Улучшение: +2 заготовки, +8.6% КИМ

Псевдокод алгоритма

ФУНКЦИЯ calculate_with_rotation(лист_длина, лист_ширина, заготовка_длина, заготовка_ширина):
    // Вариант 1: без ротации
    количество_x1 = floor(лист_длина / заготовка_длина)
    количество_y1 = floor(лист_ширина / заготовка_ширина)
    количество_1 = количество_x1 × количество_y1
    
    // Вариант 2: с ротацией на 90°
    количество_x2 = floor(лист_длина / заготовка_ширина)
    количество_y2 = floor(лист_ширина / заготовка_длина)
    количество_2 = количество_x2 × количество_y2
    
    // Выбираем лучший вариант
    ЕСЛИ количество_1 > количество_2:
        ВЕРНУТЬ (количество_1, False)  // False = без ротации
    ИНАЧЕ:
        ВЕРНУТЬ (количество_2, True)   // True = с ротацией
КОНЕЦ ФУНКЦИИ

Преимущества алгоритма

  1. Простая реализация - всего на несколько строк сложнее базового алгоритма
  2. Значительное увеличение КИМ - обычно +3-8% по сравнению с базовым алгоритмом
  3. Быстрый расчет - все еще O(1) сложность
  4. Подходит для большинства случаев - когда заготовки прямоугольные

Недостатки алгоритма

  1. Все еще размещение по сетке - не учитывает оптимальное размещение
  2. Не учитывает комбинации - только два варианта (с ротацией и без)
  3. Ограниченный КИМ - обычно 85-90%, редко выше

Когда использовать

Используйте, когда:

  • Заготовки прямоугольные
  • Нужен КИМ 85-90%
  • Важна простота реализации
  • Быстрый расчет критичен

Не используйте, когда:

  • Нужен КИМ 90%+
  • Заготовки сложной формы
  • Много разных размеров заготовок
  • Нужна максимальная оптимизация

Продвинутые алгоритмы nesting: следующий шаг

Когда простые алгоритмы не дают нужного КИМ, нужно переходить к более продвинутым алгоритмам, которые учитывают оптимальное размещение заготовок.

Алгоритм Bottom-Left Fill (BLF)

Принцип работы

Алгоритм: Размещение заготовок снизу вверх, слева направо, с учетом уже размещенных элементов. Заготовки размещаются в самой нижней доступной позиции, а в этой позиции - в самой левой.

Визуализация процесса:

Итерация 1: Первая заготовка
┌─────────────────────────────────────┐
│                                     │
│                                     │
│                                     │
│ [200×150]                          │ ← Размещена внизу слева
└─────────────────────────────────────┘

Итерация 2: Вторая заготовка
┌─────────────────────────────────────┐
│                                     │
│                                     │
│ [200×150]                          │ ← Размещена выше первой
│ [200×150]                          │
└─────────────────────────────────────┘

Итерация 3: Третья заготовка
┌─────────────────────────────────────┐
│                                     │
│ [200×150]                          │
│ [200×150]                          │
│ [200×150]                          │
└─────────────────────────────────────┘

Детальный алгоритм

1. Сортируем заготовки по размеру (от больших к маленьким)
   - Сначала размещаем большие, потом маленькие
   - Это позволяет лучше использовать пространство

2. Для каждой заготовки:
   a. Находим самую нижнюю доступную позицию
      - Ищем самую низкую Y-координату, где можно разместить заготовку
   
   b. В этой позиции находим самую левую позицию
      - Ищем самую левую X-координату в найденной Y-позиции
   
   c. Проверяем, помещается ли заготовка
      - Проверяем, не пересекается ли с уже размещенными заготовками
      - Проверяем, не выходит ли за границы листа
   
   d. Если помещается - размещаем заготовку
      - Сохраняем координаты размещения
      - Обновляем список занятых областей
   
   e. Если не помещается - пробуем следующую позицию
      - Или переходим к следующей заготовке

3. Повторяем для всех заготовок

Пример расчета

Исходные данные:

  • Лист: 1000×700 мм
  • Заготовки: 3 размера

- Большие: 200×150 мм, 5 штук - Средние: 150×100 мм, 8 штук - Маленькие: 100×75 мм, 10 штук

Сортировка заготовок:

Заготовки отсортированы: [большие, средние, маленькие]

Размещение больших заготовок:

Первая заготовка (200×150):

  • Позиция: X=0, Y=0 (нижний левый угол)
  • Размещена: ✅

Вторая заготовка (200×150):

  • Позиция: X=0, Y=150 (выше первой)
  • Размещена: ✅

Продолжаем до размещения всех больших заготовок...

Размещение средних заготовок:

Первая средняя заготовка (150×100):

  • Ищем самую нижнюю позицию
  • Находим: X=200, Y=0 (справа от больших заготовок)
  • Размещена: ✅

Продолжаем...

Размещение маленьких заготовок:

Маленькие заготовки размещаются в оставшихся пространствах...

Результат:

  • Размещено: 5 больших + 8 средних + 10 маленьких = 23 заготовки
  • КИМ: 92.3%

Преимущества алгоритма

  1. Учитывает уже размещенные элементы - не размещает заготовки в занятых местах
  2. Может дать КИМ 88-92% - значительно выше простых алгоритмов
  3. Относительно прост в реализации - сложнее простых алгоритмов, но не слишком
  4. Подходит для разных размеров - может работать с заготовками разных размеров

Недостатки алгоритма

  1. Требует больше вычислений - нужно проверять каждую позицию
  2. Не всегда оптимален - жадный алгоритм, не гарантирует глобальный оптимум
  3. Зависит от порядка - результат зависит от порядка размещения заготовок
  4. Медленнее простых алгоритмов - O(n²) или O(n³) сложность

Когда использовать

Используйте, когда:

  • Заготовки разных размеров
  • Нужен КИМ 88-92%
  • Можно потратить время на расчет
  • Простые алгоритмы не дают нужного результата

Не используйте, когда:

  • Нужен максимально быстрый расчет
  • Заготовки одинакового размера (простой алгоритм с ротацией лучше)
  • Нужен КИМ 93%+ (нужны более сложные алгоритмы)

Алгоритм Best Fit (лучшее размещение)

Принцип работы

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

Критерии оценки позиции

Плотность размещения:

Плотность = Площадь заготовки / Площадь занимаемого пространства

Остаточное пространство:

Остаток = Площадь свободного пространства после размещения

Комбинированный критерий:

Оценка = Плотность × Вес_плотности + (1 / Остаток) × Вес_остатка

Детальный алгоритм

1. Для каждой заготовки:
   a. Генерируем все возможные позиции размещения
      - Все позиции, где заготовка помещается
      - Учитываем ротацию (если применимо)
   
   b. Оцениваем каждую позицию
      - Рассчитываем плотность размещения
      - Рассчитываем остаточное пространство
      - Рассчитываем комбинированную оценку
   
   c. Выбираем позицию с лучшей оценкой
      - Максимальная плотность
      - Минимальный остаток
      - Лучшая комбинированная оценка
   
   d. Размещаем заготовку в выбранной позиции
      - Сохраняем координаты
      - Обновляем список занятых областей

2. Повторяем для всех заготовок

Пример расчета

Исходные данные:

  • Лист: 1000×700 мм
  • Заготовка: 200×150 мм

Генерация возможных позиций:

Позиция 1: X=0, Y=0 (обычное положение)

  • Плотность: 30,000 / 30,000 = 1.0
  • Остаток: 670,000 мм²
  • Оценка: 1.0 × 0.7 + (1 / 670,000) × 0.3 = 0.7 + 0.0000004 = 0.7000004

Позиция 2: X=0, Y=0 (ротация на 90°)

  • Плотность: 30,000 / 30,000 = 1.0
  • Остаток: 670,000 мм²
  • Оценка: 0.7000004

Позиция 3: X=200, Y=0 (обычное положение)

  • Плотность: 30,000 / 30,000 = 1.0
  • Остаток: 640,000 мм² (меньше, так как уже размещена первая заготовка)
  • Оценка: 0.7000005 (лучше, так как остаток меньше)

Выбираем позицию 3 - лучшая оценка.

Преимущества алгоритма

  1. Может дать КИМ 90-93% - один из лучших результатов для прямоугольников
  2. Учитывает все возможные позиции - не пропускает хорошие варианты
  3. Оптимизирует размещение - стремится к максимальной плотности

Недостатки алгоритма

  1. Требует много вычислений - нужно оценить множество позиций
  2. Медленнее простых алгоритмов - O(n³) или выше сложность
  3. Сложнее в реализации - требует сложной логики оценки

Когда использовать

Используйте, когда:

  • Нужен КИМ 90-93%
  • Можно потратить время на расчет
  • Важна максимальная оптимизация
  • Заготовки разных размеров

Не используйте, когда:

  • Нужен очень быстрый расчет
  • Заготовки одинакового размера (простой алгоритм лучше)
  • Ограниченные вычислительные ресурсы

Специализированные алгоритмы: для сложных случаев

Для заготовок сложной формы или когда нужен максимальный КИМ, требуются специализированные алгоритмы.

Алгоритм для нестандартных форм (NFP - No-Fit Polygon)

Принцип работы

NFP (No-Fit Polygon) - это область, где нельзя размещать заготовку относительно уже размещенной, чтобы избежать пересечений.

Визуализация:

Размещенная заготовка A:
┌─────┐
│  A  │
└─────┘

NFP для заготовки B относительно A:
┌─────────────────┐
│   ┌─────┐       │
│   │  A  │       │
│   └─────┘       │
│                 │
│  [NFP область]  │ ← Здесь нельзя размещать B
│                 │
└─────────────────┘

Алгоритм

1. Для каждой пары заготовок (A, B):
   a. Рассчитываем NFP(B относительно A)
      - Область, где B не может быть размещена относительно A
   
   b. Сохраняем NFP для использования

2. Для размещения заготовки:
   a. Находим все уже размещенные заготовки
   
   b. Для каждой размещенной заготовки:
      - Рассчитываем NFP относительно нее
      - Исключаем NFP область из доступных позиций
   
   c. В оставшихся доступных позициях находим лучшую
      - Используем алгоритм Best Fit или Bottom-Left
   
   d. Размещаем заготовку

Сложность

  • Вычислительная сложность: O(n² × m²), где n - количество заготовок, m - количество вершин полигона
  • Требует специальных библиотек - для работы с полигонами
  • Может дать КИМ 92-95% - для сложных форм

Когда использовать

Используйте, когда:

  • Заготовки сложной формы (не прямоугольные)
  • Нужен максимальный КИМ
  • Можно потратить время на расчет
  • Есть доступ к библиотекам для работы с полигонами

Не используйте, когда:

  • Заготовки прямоугольные (простые алгоритмы лучше)
  • Нужен быстрый расчет
  • Нет доступа к специализированным библиотекам

Генетические алгоритмы: эволюционный подход

Принцип работы

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

Как работает

Генерация начальной популяции:

Создаем N случайных решений (размещений заготовок)
Каждое решение - это "особь" в популяции

Оценка решений (фитнес-функция):

Для каждой особи рассчитываем КИМ
КИМ = (Площадь размещенных заготовок / Площадь листа) × 100%
Чем выше КИМ, тем лучше особь

Отбор лучших особей:

Выбираем лучшие особи (с максимальным КИМ)
Обычно выбираем 20-30% лучших

Скрещивание (crossover):

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

Мутация:

Случайно изменяем некоторые размещения
Это позволяет исследовать новые области решения

Повторение:

Повторяем шаги 2-5 до достижения критерия остановки:
- Максимальное количество итераций
- Достижение целевого КИМ
- Отсутствие улучшения в течение N итераций

Пример работы

Итерация 1:

  • Популяция: 100 случайных решений
  • Лучший КИМ: 87.3%
  • Средний КИМ: 82.1%

Итерация 10:

  • Популяция: 100 решений (эволюционировавших)
  • Лучший КИМ: 91.2%
  • Средний КИМ: 88.5%

Итерация 50:

  • Популяция: 100 решений
  • Лучший КИМ: 93.8%
  • Средний КИМ: 91.2%

Результат: КИМ 93.8% (лучшее решение из популяции)

Преимущества

  1. Может найти очень хорошие решения - КИМ 93-96% в некоторых случаях
  2. Не требует точной математики - работает с любыми формами
  3. Может найти неочевидные решения - благодаря мутации

Недостатки

  1. Очень медленно - требует сотни или тысячи итераций
  2. Требует много вычислительных ресурсов - нужно хранить и обрабатывать популяцию
  3. Не гарантирует оптимальность - может не найти глобальный оптимум
  4. Сложно настроить - нужно правильно выбрать параметры (размер популяции, вероятность мутации и т.д.)

Когда использовать

Используйте, когда:

  • Нужен максимальный КИМ (93%+)
  • Можно потратить много времени на расчет
  • Есть вычислительные ресурсы
  • Простые алгоритмы не дают нужного результата

Не используйте, когда:

  • Нужен быстрый расчет
  • Ограниченные вычислительные ресурсы
  • КИМ 90-92% достаточен (простые алгоритмы лучше)

Сравнительная таблица алгоритмов

Для удобства выбора, вот сравнительная таблица всех алгоритмов:

АлгоритмСложностьКИМСкоростьКогда использовать
По сеткеO(1)80-87%Очень быстроОдинаковые заготовки, быстрая оценка
С ротациейO(1)85-90%Очень быстроПрямоугольные заготовки, КИМ 85-90%
Bottom-Left FillO(n²)88-92%СреднеРазные размеры, КИМ 88-92%
Best FitO(n³)90-93%МедленноМаксимальная оптимизация, КИМ 90-93%
NFP (сложные формы)O(n²×m²)92-95%Очень медленноСложные формы, максимальный КИМ
ГенетическийO(популяция×итерации)93-96%Очень медленноМаксимальный КИМ, много времени

Практические рекомендации по выбору алгоритма

Для большинства случаев

Используйте алгоритм с ротацией:

  • Простой в реализации
  • Быстрый расчет
  • КИМ 85-90%
  • Достаточно для большинства задач

Пример: Стандартные коробки одного-двух размеров, регулярное производство.

Для оптимизации

Используйте продвинутые алгоритмы nesting:

  • Bottom-Left Fill или Best Fit
  • КИМ 90-93%
  • Требует больше вычислений, но дает лучший результат

Пример: Разные размеры коробок, оптимизация раскроя для экономии материала.

Для сложных случаев

Используйте специализированные алгоритмы:

  • Для нестандартных форм
  • Для комбинирования разных размеров
  • КИМ 92-95%
  • Требует специальных инструментов

Пример: Сложные формы заготовок, максимальная оптимизация, большие объемы материала.


Инструменты и библиотеки для реализации

Python библиотеки

pyNest2D - специализированная библиотека для nesting

Характеристики:

  • Специализированная библиотека для nesting
  • Поддержка произвольных форм (полигоны)
  • Хорошая производительность
  • Поддержка NFP алгоритмов

Пример использования:

import pynest2d

# Создаем лист
sheet = pynest2d.Sheet(1000, 700)

# Создаем заготовки
items = [
    pynest2d.Item(200, 150),
    pynest2d.Item(200, 150),
    # ... больше заготовок
]

# Оптимизируем размещение
result = pynest2d.nest(items, sheet)
print(f"КИМ: {result.kim}%")

rectpack - для прямоугольников

Характеристики:

  • Для прямоугольных заготовок
  • Простая в использовании
  • Быстрая
  • Поддержка ротации

Пример использования:

import rectpack

# Создаем упаковщик
packer = rectpack.newPacker()

# Добавляем заготовки
packer.add_bin(1000, 700)  # Лист
packer.add_rect(200, 150, rid=1)  # Заготовка 1
packer.add_rect(200, 150, rid=2)  # Заготовка 2
# ... больше заготовок

# Упаковываем
packer.pack()

# Получаем результат
for rect in packer.rect_list():
    print(f"Заготовка {rect[5]} размещена в ({rect[1]}, {rect[2]})")

Онлайн калькуляторы

Используйте наши калькуляторы для быстрого расчета:


Реальные примеры и кейсы

Оптимизация раскроя для стандартных коробок

Задача:

  • Лист: 1000×700 мм
  • Заготовки: 200×150 мм, 100 штук
  • Текущий КИМ: 85.7% (алгоритм по сетке)

Решение:

  • Использовали алгоритм с ротацией
  • КИМ увеличился до 90.0%
  • Экономия материала: 4.3%

Результат:

  • При стоимости материала 100 руб/м²
  • Экономия на 100 листах: 4.3 м² × 100 = 430 руб
  • При производстве 1000 листов: 4,300 руб экономии

Оптимизация для разных размеров

Задача:

  • Лист: 1000×700 мм
  • Заготовки: 3 размера

- Большие: 200×150 мм, 10 штук - Средние: 150×100 мм, 15 штук - Маленькие: 100×75 мм, 20 штук

Решение:

  • Использовали алгоритм Bottom-Left Fill
  • КИМ: 91.5%

Результат:

  • Размещено: 10 + 15 + 20 = 45 заготовок
  • Экономия по сравнению с простым алгоритмом: 5.8%

Максимальная оптимизация для сложных форм

Задача:

  • Лист: 1000×700 мм
  • Заготовки: сложной формы (не прямоугольные), 20 штук
  • Требуется максимальный КИМ

Решение:

  • Использовали алгоритм NFP (No-Fit Polygon)
  • КИМ: 94.2%

Результат:

  • Максимальная оптимизация для сложных форм
  • Экономия материала: 8.5% по сравнению с простым алгоритмом

Итоговые рекомендации

Начните с простого

Для большинства случаев достаточно алгоритма с ротацией. Он прост в реализации, быстр и дает КИМ 85-90%.

Переходите к сложному, когда нужно

Когда простой алгоритм не дает нужного КИМ, переходите к продвинутым алгоритмам. Но не усложняйте без необходимости.

Используйте специализированные инструменты

Для сложных случаев используйте специализированные библиотеки и инструменты. Не изобретайте велосипед.

Измеряйте результаты

Отслеживайте КИМ по каждому заказу. Это поможет понять, какой алгоритм лучше для ваших задач.

Оптимизируйте постепенно

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


Заключение

При правильном выборе алгоритма можно достичь КИМ 90%+ и сэкономить 10-15% на стоимости материала, что при больших объемах дает значительную экономию.

Практические примеры показывают эффективность правильного выбора алгоритма через значительное улучшение показателей. Оптимизация раскроя через выбор подходящего алгоритма, реализацию и измерение результатов обеспечивает эффективность. Инструменты и библиотеки обеспечивают готовые решения для реализации. Типичные препятствия (сложность выбора, ограничения алгоритмов, вычислительные ресурсы) через правильные подходы обеспечивают успех.

Инвестиция времени и ресурсов в правильный выбор и реализацию алгоритма окупается многократно через повышение КИМ и экономию материала.

Дополнительные рекомендации:

  • Работайте с алгоритмистами-оптимизаторами упаковки
  • Изучайте лучшие практики
  • Сотрудничайте с разработчиками алгоритмов
  • Инвестируйте в специализированные инструменты
  • Постоянно улучшайте
  • Создавайте библиотеки алгоритмов для разных случаев
  • Используйте данные для оптимизации подходов
  • Сотрудничайте с командами производства для получения обратной связи

Калькулятор оптимизации раскроя | КИМ оптимизация | Все статьи для инженеров