Изменить порядок данных в матрице, сопоставляя несколько условий - PullRequest
0 голосов
/ 20 марта 2019

У меня есть список из 1000 предметов, у каждого предмета есть своя категория, цвет и оценка (чем выше, тем лучше), я хочу

- выберите 16 предметов из всех, чтобы сформировать матрицу 4х4 (предпочтительнее выбрать предмет с более высоким баллом)
- 2 предмета из той же категории (и цвета) не должны находиться рядом или друг над другом
- Каждый предмет в каждой строке относится к разной категории

pd.DataFrame({'item': np.arange(1000), 'category': np.random.randint(0,10, size=1000),
         'color':np.random.randint(0,20, size=1000), 'score': np.random.random(size=1000)})

Я пытался сгенерировать 4х4 жестоко, заполняя ячейки одну за другой после проверки категории и цвета. Интересно, есть ли более разумный способ сделать это, или какой-то алгоритм может помочь с этим.

Чтобы сделать вещи более сложными, есть цвета, которые не сочетаются друг с другом, и есть категории, которые не сочетаются вместе ... Буду признателен, если есть какие-либо предложения о том, как решить эту проблему!

Спасибо

...