Раскрытие информации: Да, это моя домашняя работа.
У меня следующая проблема: у меня 50 мужчин, 50 женщин и 50 собак. Каждый из них имеет список своих фаворитов каждого из других. Например, у женщины номер 6 есть список из 50 ее любимых мужчин, отсортированный от наименее любимых до самых любимых, и список ее 50 любимых собак, отсортированный от наименее любимых до самых любимых. У мужчин есть списки для женщин и собак, а у собак есть списки для женщин и мужчин.
Мне нужно найти наилучшую пару, чтобы женщины, мужчины и собаки были максимально счастливы. Мне нужно сделать это с помощью генетических алгоритмов.
Допустим, у меня есть совпадения A и B (где я сопоставляю все 150 сущностей с 50 семьями, поэтому каждая женщина/мужчина/собака появляется только один раз).
Как совместить А и Б? Каждый кроссовер, о котором я мог подумать, приводит меня к следующей проблеме: кто-то появится дважды, а кто-то не появится вообще.
Например, если я случайным образом выберу X
между 1 и 50 и возьму первые X семей из A и 50-x вторых семей из B, вероятность того, что новое совпадение является законным, и все появятся только один раз, равна примерно 0.
Как мне подойти к такой проблеме?
Любая подсказка будет полезна.