Нужен эффективный алгоритм подбора

1. ivan8211 28 20.08.24 09:06 Сейчас в теме
Пружины 2-х видов. Имеют 2 параметра: высота в свободном состоянии (мм), прогиб (мм). В один набор собирается комплект из 8 штук каждого вида, при том условии, что пружины в свободном состоянии и по прогибу не должны отличаться более чем на 2 мм.

Изначально есть 2 массива по виду пружин (индекс, параметр1, параметр2) с любым количеством элементов, нужно оптимально собрать 4 набора. Наборы могут быть неполными, то есть нужно максимально эффективно использовать имеющиеся пружины, недостаток закупить, поэтому простой перебор по усредненному модулю дельты параметров видится неэффективным.
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. SlavaKron 20.08.24 09:15 Сейчас в теме
(1) Минимизировать отличия параметров ограничение на различие в параметрах нужно в рамках вида или набора?
3. ivan8211 28 20.08.24 09:23 Сейчас в теме
(2) в рамках вида. Пружины разные, но требование на 2мм одинаковое.
9. user-z99999 70 20.08.24 11:18 Сейчас в теме
(1)
1) Берём первый вид пружин и сортируем всё, что есть (для красоты)
2) для каждой пружины создаем список пружин, которые её подходят, по критериям.
(одна пружина может подходить, например двум другим пружинам, поэтому она будет фигурировать в двух наборах)
3) смотря на пункт 2, отбираем пружины, где эти кучки схожести самые большие.
4) Второй набор пружин. Делаем тоже самое, пункт 1-3

Бегая по пунктам 1-3 мы вычисляем почти готовые или готовые наборы, для каждого вида пружин.

5) Теперь берем за основу наборы Первого вида, и смотрим, что из этого подходи из Второго вида пружин.

Алгоритм можно бесконечно усложнять.
Добавить рейтинг пружин, которые долго лежат на складе, и при сортировке их отбирать в первую очередь.
Можно заниматься сортировкой и перестановкой, если это не будет слишком затратно по ресурсам, подбирая самую удобную комбинацию.
Нужно придумать веса (важность), чтобы понять сейчас лучше, чем было или хуже: собранный комплект и то, что осталось. Критерий, как сильно не хватает пар для оставшихся наборов.
11. ivan8211 28 20.08.24 11:57 Сейчас в теме
(9)
Бегая по пунктам 1-3 мы вычисляем почти готовые или готовые наборы, для каждого вида пружин
Ок, идея понятна, кучки отобрали, но как уйти от полного заполнения очередного набора. Даже если маркировать элемент как уже использованный, я все равно приду к тому, что есть 3 набора полных, а 4 не хватило, хотя при переброске части и частичном наполнении набора будет задействовано больше пружин, т.е. их максимальное использование.
4. ivan8211 28 20.08.24 09:26 Сейчас в теме
По сути можно упростить задачу до применения для одного вида, просто повторить алгоритм для второго и внести в тот же набор. Требования по связи 2 видов нет.
5. SlavaKron 20.08.24 09:33 Сейчас в теме
6. SlavaKron 20.08.24 09:52 Сейчас в теме +2 $m
Я бы сделал такой алгоритм:
Есть пул пружин с параметрами X и Y. Находим "центр" множества точек [X, Y]. Находим ближайшую к центру точку (пружину). Это будет первая пружина первого набора. Далее из оставшегося пула ищем ближайшую точку (пружину) к нашему набору, удовлетворяющую ограничению. И так далее.
После того как подбор в первый набор окончен, переходим ко второму: снова высчитываем "центр" в оставшемся пуле и собираем следующий набор.
7. ivan8211 28 20.08.24 09:57 Сейчас в теме +8 $m
(6)
После того как подбор в первый набор окончен, переходим ко второму: снова высчитываем "центр" в оставшемся пуле и собираем следующий набор.
Примерно так и хотел, но проблема в том что полностью 4 набора на практике не собрать, нет такого количества пружин (именно с подходящими параметрами), наборы собираются частично. Но вы правы, задача очень похожа на кластеризацию по метод K-средних.
8. usershmuser 20.08.24 10:21 Сейчас в теме
(отредактировал)
Как вариант находим среднее между свободным состоянием и прогибом (СС + Пр)/2, либо не среднее, а сумма параметров , сортируем по первому параметру параметру и выбираем по средней.
Если я правильно понял, то свободное состояние это высота (парамет не сильно гуляющий), а прогиб это как далеко от цента пружина может изогнуться (параметр по показателям в количестве не пересекающийся с предыдущим).
10. SlavaKron 20.08.24 11:52 Сейчас в теме
О какой сортировке может идти речь в 2-мерном пространстве?
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот