Атрибуты функции работоспособности в генетических алгоритмах для игры AI

Я создал Gomoku (5 в ряд) AI с использованием альфа-бета-обрезки. Это делает ход на не-глупый уровень. Сначала позвольте мне описать функцию градуировки алгоритма Альфа-Бета. Когда он получает плату в качестве входа, он сначала находит все повторения камней и дает ему оценку в зависимости от ее полезности в качестве угрозы. И он вернет суммирование всех повторений.

Но проблема в том, что я явно решил баллы (всего 4), и они не кажутся лучшими. Поэтому я решил реализовать генетический алгоритм для генерации этих оценок. Каждый из генов будет одним из 4 баллов. Так, например, хромосома жестко кодированных оценок будет: [5, 40000, 100000005000000]

Однако, поскольку я использую генетический алгоритм для создания оценки функции оценки, я не уверен, как мне реализовать функцию генетической пригодности. Поэтому я подумал о следующем:

Вместо использования функции пригодности я просто объединю процесс выбора вместе: если у меня есть 2 хромосомы, A и B, и вам нужно выбрать один, я смоделирую игру, используя как A, так и B-хромосомы в каждом AI и выберите хромосому, которая побеждает.

1. Это жизнеспособная замена функции фитнеса?

2. Из-за характеристик алгоритма Alpha-Beta мне нужно дать максимальную оценку условию выигрыша, которое в большинстве случаев устанавливается в бесконечность. Однако, поскольку я не могу использовать Infinity, я просто использовал абсурдно большое количество. Нужно ли мне также добавлять эту оценку к хромосоме? Или потому, что он незначителен и не меняет значения функции градуировки, оставьте его как константу?

3 голоса | спросил Dashadower 28 22017vEurope/Moscow11bEurope/MoscowTue, 28 Nov 2017 18:15:09 +0300 2017, 18:15:09

1 ответ


3

Отказ от ответственности: у меня нет практического опыта с генетическими алгоритмами, но немного интересен ...

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

  • Единственное исключение может не дать вам хорошего впечатления от силы человека. Если разрешает вычислительная мощность, вы можете провести несколько раундов соревнований, используя swiss pairing . Преимущество системы swiss pairing заключается в том, что вы получаете все более точное ранжирование кандидатов без необходимости соединять всех со всеми.
  • Используя только 4 хромосомы с такими огромными диапазонами, мне кажется, что это потребует либо огромной начальной популяции, либо приведет к относительно небольшим потенциальным значениям. Инстинктивно я ожидаю, что алгоритм, использующий оценки, рассчитанные на основе нескольких более простых хромосом, будет лучше. Например: 4 * 24 хромосомы с каждой группой из 24 хромосом, являющейся двоичным представлением оценки. Или вы можете сделать 4 * 6 хромосом с каждой группой из 6 хромосом, являющейся двоичным представлением числа, а оценка рассчитывается как 2^number. Вероятно, есть сладкое пятно между размером популяции, сложностью генов и разрешением оценки.

Дополнительная информация о швейцарской системе турниров

  • Каждый раунд парных конкурсантов проходит через ряд игр. Это число зависит от вас. Лучшее из трех распространено.
  • Каждый матч может привести к победителю (который получает 3 очка) или ничья (оба получат 1 очко)
  • В последовательных раундах swiss каждый участник сравнивался с кем-то, с кем они никогда не играли, и как можно ближе к своему счету.

Таким образом, это не имеет большого значения, если вы получите несколько ничьих. Если, однако, все, что у вас есть, есть ничьи, у вас есть проблема ...

ответил Kempeth 28 22017vEurope/Moscow11bEurope/MoscowTue, 28 Nov 2017 19:42:07 +0300 2017, 19:42:07

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132