Como criar uma boa função de avaliação para um jogo?

Eu escrevo programas para jogar variantes de jogos de tabuleiro às vezes. A estratégia básica é a poda alfa-beta padrão ou buscas similares, às vezes aumentadas pelas abordagens habituais para os endgames ou aberturas. Eu geralmente brinquei com as variantes do xadrez, então quando chega a hora de escolher minha função de avaliação, eu uso uma função básica de avaliação do xadrez.

No entanto, agora estou escrevendo um programa para jogar um novo jogo de tabuleiro. Como faço para escolher uma função de avaliação boa ou mesmo decente?

Os principais desafios são que as mesmas peças estão sempre no tabuleiro, então uma função material usual não mudará com base na posição, e o jogo foi jogado menos de mil vezes, então os humanos não necessariamente jogam o suficiente bem ainda para dar uma visão. (PS. Eu considerei uma abordagem MoGo, mas jogos aleatórios provavelmente não terminam.)

Detalhes do jogo: O jogo é jogado em uma mesa de 10 por 10 com seis peças fixas por lado. As peças têm certas regras de movimento e interagem de certas maneiras, mas nenhuma peça é capturada. O objetivo do jogo é ter o suficiente de suas peças em certos quadrados especiais no tabuleiro. O objetivo do programa de computador é fornecer um jogador que seja competitivo ou melhor que os jogadores humanos atuais.

questionAnswers(8)

yourAnswerToTheQuestion