Играя в AI, как найти хорошую функцию оценки на доске?

Я работаю над искусственным интеллектом, чтобы играть в довольно простую игру, используя минимаксные и генетические алгоритмы, чтобы найти весы для оценки состояний доски.

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

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

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

Для каждой строки делим кусочно-скоринговое выражение, разделенное на количество вражеских фигур в ряду, и выражение, основанное на количестве союзников. Следовательно, наличие 1 фигуры в пустом ряду может стоить больше, чем 1 фигура в ряду, заполненная врагами, таким образом блокируя их, и обратное будет справедливо, если иметь 3 фигуры подряд, которые уже заблокированы.

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

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

Спасибо за любую помощь. Я понятия не имею, как поступить.

0 ответов