Я хотел бы написать генетический алгоритм, который учится играть в игру, похожую на тетрис.
Сама игра относительно проста; Я написал полное поведение ниже.
Игра:
- Сетка, 12x16.
- Вы должны очистить блоки от сетки.
- Ряд новых блоков добавляется каждые 5 тиков вниз, толкая блоки вверх.
- Вы можете очистить кластеры только одного блока типа.
- Количество типов блоков увеличивается с продолжением игры.
- Вы можете очистить только кластеры из 3 или выше.
- Для каждого очищенного кластера * BLOB_SCORE добавляется
(CLUSTER_SIZE - 3)^2
.
- После того, как кластер был удален из сетки, блоки выше скользят вниз, чтобы заполнить промежутки, и если после этого есть горизонтальные промежутки (в нижнем ряду), левая сторона промежутка перемещается, чтобы заполнить его.
- Цель этой игры - выжить как можно дольше. Время измеряется в тиках или количестве ходов, которые вы сделали.
- Ваша оценка (или Фитнес) определяется по
(TIME_ALIVE * BLOCK_SCORE)
- Игра заканчивается, когда блок достигает вершины сетки.
Оценка этой игры включает в себя как долговечность, так и эффективность. Чем больше кластеров, которые вы очищаете, тем выше пригодность.
Сейчас я закодировал несколько ГА, но они основывались на местных соревнованиях, таких как цели сбора и тому подобное, против других людей.
Моя проблема в том, что я не знаю, как подойти к этой проблеме. Каждый отдельный индивидуум этого нового GA должен иметь только текущую сетку для работы в качестве ввода. (По крайней мере, я думаю, что это будет необходимо)
Как я могу начать кодировать GA для этого? Я не могу на всю жизнь решить это.
.
Спасибо всем,
Стеффан 'Ruirize' Джеймс