Оптимизация режущего материала
Всем привет,
Я имею дело с проблемой резки запасов с изюминкой.
У меня есть куски, чтобы разрезать луч фиксированной длины, но у кусков есть угловые разрезы, со многими углами.
_____________ ____________ _____________ ¦ \ / \ / / ¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¯¯¯¯¯¯¯¯¯¯¯¯¯ ________________________________________ ¦ \ \ / ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Я использую первую подгонку, которая прекрасно работает.
Я уже вращаю части, чтобы вложить углы.
Теперь я занимаюсь проблемой переупорядочения частей, чтобы свести к минимуму потери между частями. Может иметь до 50 штук в одном пучке, но обычно 10-20 штук.
Что я уже пробовал:
Пока ничего не пробовал, просто начал думать о проблеме.
Как бы вы поступили дальше ? Каким будет ваш алгоритм ?
[Обновление]
Я работал над этой проблемой все время.
Так что моя проблема находится на уровне генерации столбцов. Поскольку я использую эвристику FFD, у меня есть частичные столбцы, и мне нужно знать, могу ли я добавить еще один фрагмент в столбец.
Трудность заключается в том, что положение и ориентация каждой части имеет значение.
Мой подход пока более геометрический:
- Я считаю, что каждый кусок-это цепь.
- Я получаю 2 цепи с самым большим углом и заменяю их новой большей цепью, поставив 2 самых больших угла спина к спине. Полученную цепочку кладут обратно в пул цепей.
Я повторяю это до тех пор, пока в пуле не останется 1 последняя цепочка.
Все еще есть случаи, которые работают не так, как ожидалось, но выглядят многообещающе.
0x01AA
На первый взгляд и в случае, если вы можете рассчитать меру качества, я бы предложил "метод спуска симплекса", он же "метод амебы". Может быть, это поможет: Метод нельдера–меда - Википедия[^]
Это очень помогло мне решить нелинейные/переопределенные системы.
Patrice T
Я посмотрю.
Поскольку я просто прошу идеи, вы можете сделать это решением.
0x01AA
Это далеко от решения, это только предположение. И пока нет ответа, надеюсь, вы получите еще несколько полезных советов ;)
Patrice T
ОК
0x01AA
Я только что прочитал французскую версию в wiki; она очень короткая, лучше следовать английской версии. И последнее, но не менее важное: немецкая версия, с моей точки зрения, является лучшим (наиболее интуитивно объясненным) выбором :(