Эй, я пытаюсь выяснить, как я могу ограничить свои комбинации объектов.
Моя проблема: Я хочу собрать x команд с наибольшим «точечным» результатом из 432 игроков, максимальный размер команды 7 игроков. Каждый игрок имеет атрибут «позиция», каждая команда должна иметь каждую позицию один раз и максимум 3 раза. Также у игрока есть атрибут «ценность». Каждая команда не может стоить больше 70. Каждый игрок может быть только один раз в команде.
Пример данных:
{ name: 'James Harden', position: 'PG', weight: 15.9, points: 62.63 },
{ name: 'Russell Westbrook', position: 'PG', weight: 14.9, points: 56.12 },
{ name: 'LeBron James', position: 'SF', weight: 15.9, points: 55.67 },
{ name: 'Bradley Beal', position: 'SG', weight: 14.8, points: 52.69 },
{ name: 'Anthony Davis', position: 'PF', weight: 14.6, points: 52.16 },
{ name: 'Damian Lillard', position: 'PG', weight: 13.5, points: 49.34 },
{ name: 'Nikola Vucevic', position: 'C', weight: 12.9, points: 47.97 },
{ name: 'Domantas Sabonis', position: 'PF', weight: 12.8, points: 47.6 }
Моя попытка: Ну, я пытался использовать метод комбинации из ruby:
b = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30]
print b.combination(7).to_a
, который занимает 52 минуты для моего ноутбука, поэтому решите все комбинации. поэтому я ищу способ сделать это быстрее и применить больше опций, как упомянуто выше, чтобы ограничить результат команд.
Позже, если я найду решение, я хочу встроить эту штуку в приложение rails с изображением игроки и тд. Надеюсь, кто-то может дать мне подсказку или сделал что-то подобное, чтобы дать советы.
Также, как бы я мог контролировать использование большего количества ядер ЦП для ускорения процесса?