Алгоритм оптимизации конфигурации машины для изготовления этикеток
Привет всем!
В настоящее время я столкнулся с проблемой: оптимизируем конфигурации наших машин для изготовления этикеток и будем признательны за любую помощь или идеи. Вот краткий обзор ситуации:
Справочная информация:
У нас есть машины для изготовления этикеток шириной 20 см.
По ширине этикетки мы можем определить количество доступных слотов. Например, если ширина этикетки 2,5 см, то у нас есть 8 слотов (20 см / 2,5 см).
Заказы от клиентов включают в себя разные типы этикеток в разном количестве.
Наша цель — свести к минимуму избыточное производство этикеток или минимизировать количество используемых машин.
Обычно мы делим заказ на 3 машины, в каждой машине по 8 штук. слотов (всего 24 слота), но иногда можно обойтись 2 или даже 1 автоматом, если заказ не сложный.
За каждый ход автомат производит этикетки, помещенные в его слоты. Нам нужно установить, сколько раз машина должна повернуться и какие метки разместить в слотах, чтобы соответствовать требованиям заказа.
Пример порядка:< /p>
Вот пример заказа от клиента и то, как я вручную настраивал машины:
Тип этикетки: 2829
Необходимая сумма : 1148
Тип этикетки: 3031
Необходимая сумма: 4816
Тип этикетки: 3131
Необходимая сумма: 2405
Тип этикетки: 3229
Необходимая сумма: 2405
Тип этикетки: 3231
Необходимая сумма: 7228
Тип этикетки: 3233
Необходимая сумма: 2405
Тип этикетки : 3331
Необходимая сумма: 2405
Тип этикетки: 3429
Необходимая сумма: 2405
Тип этикетки: 3431
Необходимая сумма: 7228
Тип этикетки: 3433
Необходимая сумма: 2405Тип этикетки: 3631
Необходимая сумма: 4816
Тип этикетки: 3633
Необходимая сумма: 4816< /p>
Тип ярлыка: 3833
Необходимая сумма: 2405
Моя конфигурация:
Первая машина (8 слотов, 2,5 см каждый, 2405 оборотов):
Формирование слотов: 3031, 3031, 3131, 3229, 3233, 3331, 3429, 3433
Вторая машина (8 слотов, 2,5 см каждый, 2405 оборотов):
Сформация слотов: 3431, 3431, 3431, 3631, 3631, 3633, 3633, 3833
Третий автомат (8 слотов, 2,5см каждый, 1148 оборотов):
Формирование слотов: 2829, 3231, 3231, 3231, 3231, 3231, 3231, 3231
Мы допустимо наличие дефицита этикеток на %0,1/%0,2 для определенного типа этикеток, а также допустимо превышение общего количества произведенных этикеток на %5/%10.
Мы можем разместить один и тот же тип метки в слотах несколько раз, но все слоты должны быть заполнены.
В этом примере конфигурации
Анализ избытка/дефицита:
Всего заказано: 46 816
Всего произведено: 47664
Избыток: 848 этикеток
Другой простой пример: если бы у нас был заказ клиента на 1000 этикеток XL емкостью 500 л. Этикетки, 250 этикеток XS и 1000 этикеток M, с этикетками шириной 2,5 см, мы могли бы сделать следующую конфигурацию слотов:
Используйте 1 машину, имейте 8 слотов: [XL], [L], [L], [XS], [XS], [XS], [XS], [M] и заставим машинку повернуть 1000 раз, чтобы в сумме у нас было необходимое количество всех этикеток.< /p>
Проблема:
Мне нужна формула или алгоритм, позволяющие найти наилучшую возможную конфигурацию для наших машин для изготовления этикеток. . Цель состоит в том, чтобы свести к минимуму производство лишних этикеток или минимизировать количество используемых машин. В этой формуле в качестве переменных будут указаны слоты, доступные для каждой машины (я могу легко это рассчитать), а также типы этикеток и необходимое их количество. Было бы здорово иметь также переменную для установки максимального % дефицита для конкретного заказа и максимального % превышения для общего количества произведенных этикеток. Использование нескольких машин обходится дорого, поэтому мы бы предпочли использовать, например, 2 машины вместо 3, даже если это приведет к увеличению количества избыточных этикеток в процентах. Когда оно превышает 10%, мы предпочитаем добавить еще одну машину, так что это наш предел. Моя цель — создать в конце файл Excel, в котором, когда я ввожу порядок и слоты, он дает мне лучшие конфигурации, но сейчас мне очень поможет простая формула или алгоритм. Буду очень признателен за любые рекомендации или предложения о том, как решить эту проблему!
Я пытался создать скрипт Python, но моей лучшей попыткой было просто грубо форсировать вычисления, а это, по оценкам, займет 2+ триллионов лет на порядок, так что тут не повезло. Пробовал ChatGPT и Gemini, но они не были стабильными и не смогли помочь.
Подробнее здесь: https://stackoverflow.com/questions/788 ... -up-with-a