У меня проблема с поиском алгоритма для сортировки набора данных людей. Я стараюсь объяснить как можно подробнее:Сортировка людей в группы на основе голосов
История начинается с опроса. Куча людей, скажем, 600 может выбирать между 20-25 проектами. Они делают # 1-пожелание, # 2-пожелание и # 3-пожелание, где # 1 - самый разыскиваемый проект, который они хотят принять, и желать 3 «не идеального, но наиболее приемлемого-выбрать».
Эти проекты ограничены по количеству участников. В каждом проекте может участвовать около 30 человек (в зависимости от количества людей и количества проектов).
Алгоритм ставит людей в разные проекты и должен найти наилучшую комбинацию.
Проблема заключается в том, что вы не можете просто поместить всех людей с их желанием № 1 в конкретный проект и передать все остальное с номером 1 желаемого X, там есть номер 2, потому что это не будет самым «самая счастливая» ситуация для всех.
Возможно, вы можете думать о том, что я имею в виду, когда вы представляете, что для всех, кто получает свой номер 1, вы получаете 100 очков, поскольку каждый, кто получает свой номер 2, желает 60 очков, номер 3 желает 30 очков и кто не попадает в одно из его пожеланий - 0 очков. И вы хотите получить как можно больше очков.
Надеюсь, вы получите мою проблему. Это для школьного проекта. Есть ли что-то, что могло мне помочь? Есть ли у вас какие-либо идеи? Я был бы благодарен за каждый троп!
Сердечные приветы
WOW! Это потрясающе! Я понятия не имею о Python или networkx, но я надеюсь, что смогу справиться с этим, должно быть не так сложно. Еще один вопрос. Могу ли я также установить минимальное количество человек для проекта? – Jannik
Уверен, вы просто задали спрос на проект, например.для Project1 должен быть минимум 10 добавить G.add_node ('Project1', demand = 10) и уменьшить спрос на dest до 10 для соответствия. –