Есть игра, которую я программировал на java. Игра простая (см. Рисунок ниже). Всего 4 птицы и 1 личинка. Это игра для двоих (AI против человека).
- Личинка может двигаться по диагонали вперед И по диагонали назад.
- Птицы могут двигаться ТОЛЬКО по диагонали вперед
- Личинка побеждает, если сможет добраться до линии 1 (забор).
- Личинка также побеждает, если у птиц не осталось ходов.
- Птицы НЕ МОГУТ «съесть» личинку.
- Птицы побеждают, если у личинки НЕ осталось хода (не может двигаться вообще).
Когда игра начинается, начинается Личинка, затем может двигаться ОДНА птица (любая), затем Личинка и т. Д.
Я реализовал MiniMax (альфа-бета-обрезка) и использую следующую функцию Assessment () (эвристическая функция).
Дадим следующие числа каждому квадрату на доске.
Следовательно, наша функция оценки будет
h (n) = значение положения личинки - значение положения птицы 1 - значение положения птицы 2 - значение положения птицы 3 - значение положения птицы 4
Личинка попытается МАКСИМИЗИРОВАТЬ эвристическое значение, тогда как Птицы попытаются МИНИМИЗИРОВАТЬ его.
Пример:
Однако это простая и наивная эвристика. Он не действует разумно. Я новичок в искусственном интеллекте и хотел бы знать, что я могу сделать, чтобы УЛУЧШИТЬ эту эвристическую функцию?
Что было бы хорошей / информированной эвристикой?