Назначение
Программа предназначена для оптимизации линейного раскроя. Использован алгоритм "плотной укладки", то есть взятое изделие укладывается на самый короткий остаток заготовки, на который она помещается. Если никуда не помещается, берется новая заготовка. Задачей оптимизации является нахождение последовательности изделий, при которой будет использовано меньше заготовок и будет больше сумма квадратов обрезков.
Интерфейс
Файл входных данных - setup.ini, лежащий рядом с исполняемым файлом. Файлы выходных данных - result.txt, resultproduct.txt и resultstick.txt и, лежащие там же. Структура входного файла ясна из примера, используемые теги:
- Outputvariant - структура выходного файла файла. Возможные значения: tab, oknosoft, по умолчанию oknosoft.
В варианте "oknosoft", формируются файлы resultproduct.txt и resultstick.txt с информацией о размещении изделий на заготовках и образовавшейся обрези. В варианте "tab" выводятся пять значений, разделенных символами "tab": длина изделия, номер хлыста, длина хлыста, номер реза и остаток заготовки.
- Algorithm - используемый алгоритм. Возможные значения: random, conservative, genetic, по умолчанию genetic. Random- случайный перебор вариантов, Conservative- экземпляры следующей итерации происходят от одного "родителя", genetic- от двух родителей.
- Variation - изменчивость, параметр алгоритмов "conservative" и "genetic". Чем выше, тем меньше потомство "похоже" на родителей. По умолчанию 1.
- Generations - количество итераций алгоритма, по умолчанию 20000
- Persons - количество "экземпляров" в "популяции", количество решений используемых в одной итерации. В алгоритме "random" просто делается generations*persons итераций с одним экземпляром(решением)
- KnifeWidth - ширина пилы
- StickLength - длина нового хлыста
- Products - длина изделия
- Scraps - длина обрезка, используемого в раскрое
- Wrongsnipmin – минимальная длина «плохого» образка
- Wrongsnipmax – максимальная длина «плохого» обрезка
В результатах оптимизации не будет обрезков с длиной между Wrongsnipmin и Wrongsnipmax. Структура выходного файла описана в теге "outputvariant".
Парный раскрой
Задача парного раскроя решается группировкой данных перед их передачей в программу оптимизации и последующего дублирования результатов раскроя на пары изделий и заготовок
Раскрой большого числа изделий
С одной стороны, для достижения высокого качества оптимизации, на вход программы должно поступать значительное количество разных размеров, чтобы оптимизатору было «что сортировать». С другой стороны, при очень больших партиях, снижается вероятность нахождения максимума при фиксированном числе итераций перебора. Эксперименты показали, что оптимальной является партия в 50 – 100 заготовок (что соответствует такту производства 25-50 изделий при парном раскрое). Если необходимо оптимизировать более 100 заготовок, лучших результатов можно добиться, разделив задачу на N частей и выполнив последовательные оптимизации для каждой части.
Окнософт:cutting - Программа оптимизации линейного раскроя (14,08 KB)
|