Мне было интересно, есть ли какие-нибудь известные решения для алгоритма создания расписания.В моем проекте речь идет конкретно о равномерном распределении списка символов между различными раундами / зонами.
Применяются следующие правила:
- Создайте как можно больше раундов, но не болеечем X раундов.
- Если возможно, каждая учетная запись должна приостанавливать раунд после раунда.
- Если возможно, в каждой зоне должен быть хотя бы один символ на раунд.
- Каждая учетная запись с одним персонажем может участвовать только в одной зоне за раунд.
Вот пример:
+-----------+-------------+--------+
| Account | Character | Zone |
+-----------+-------------+--------+
| AccountA0 | CharacterA1 | Zone01 |
| | CharacterA2 | Zone01 |
| | CharacterA3 | Zone03 |
+-----------+-------------+--------+
| AccountB0 | CharacterB1 | Zone01 |
| | CharacterB2 | Zone02 |
| | CharacterB3 | Zone03 |
+-----------+-------------+--------+
| AccountC0 | CharacterC1 | Zone03 |
| | CharacterC2 | Zone03 |
| | CharacterC3 | Zone03 |
+-----------+-------------+--------+
| AccountD0 | CharacterD1 | Zone02 |
| | CharacterD2 | Zone02 |
| | CharacterD3 | Zone01 |
+-----------+-------------+--------+
| AccountE0 | CharacterE1 | Zone01 |
| | CharacterE2 | Zone02 |
| | CharacterE3 | Zone03 |
+-----------+-------------+--------+
| AccountF0 | CharacterF1 | Zone01 |
| | CharacterF2 | Zone02 |
| | CharacterF3 | Zone03 |
+-----------+-------------+--------+
Для вышеупомянутых персонажей будет возможно следующее расписаниес максимум 6 раундами:
+---------+-------------+-------------+-------------+
| Round | Zone01 | Zone02 | Zone03 |
+---------+-------------+-------------+-------------+
| Round01 | CharacterA1 | CharacterB2 | CharacterC1 |
+---------+-------------+-------------+-------------+
| Round02 | CharacterD3 | CharacterE2 | CharacterF3 |
+---------+-------------+-------------+-------------+
| Round03 | CharacterA2 | CharacterD1 | CharacterB3 |
+---------+-------------+-------------+-------------+
| Round04 | CharacterE1 | CharacterF2 | CharacterC2 |
+---------+-------------+-------------+-------------+
| Round05 | CharacterB1 | CharacterD2 | CharacterA3 |
+---------+-------------+-------------+-------------+
| Round06 | CharacterF1 | | CharacterC3 |
| | | | CharacterE3 |
+---------+-------------+-------------+-------------+
Является ли генетический алгоритм лучше всего подходит для этого проекта?