Алгоритм создания расписания - PullRequest
1 голос
/ 08 июня 2019

Мне было интересно, есть ли какие-нибудь известные решения для алгоритма создания расписания.В моем проекте речь идет конкретно о равномерном распределении списка символов между различными раундами / зонами.

Применяются следующие правила:

  • Создайте как можно больше раундов, но не болеечем 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 |
+---------+-------------+-------------+-------------+

Является ли генетический алгоритм лучше всего подходит для этого проекта?

1 Ответ

0 голосов
/ 08 июня 2019

Я думаю, что большинство таких задач планирования можно смоделировать как проблемы удовлетворения ограничений, и существует множество консистентных библиотек программирования , доступных для эффективного поиска решения.

...