Искусственный интеллект. В дополнение к основной цели работы выделяем следующие задачи
Скачать 1.7 Mb.
|
2.3.3 Защита своих войск Написать идеальный алгоритм бронирования кораблей для самозащиты невозможно. Всегда будет вероятность, при которой, симулируя исход для планеты, окажется, что планета всё-таки переходит к противнику. В случае, когда из симуляции следует, что в обозримом будущем планета перейдёт к противнику, то в таком случае необходимо взять все свои ближайшие планеты и отсортировав их по мере удаления от неё. После отправить с каждой по мере возможности столько кораблей, сколько нужно, что бы в конце планеты осталась у прежнего игрока. 2.3.4 Атака Когда все необходимые корабли забронированы для самообороны, и все флоты высланы на подмогу своим планетам, тогда все оставшиеся свободные корабли можно использовать для атаки. Краеугольным камнем атаки является правильный выбор цели. Для этого необходимо написать оценочную функцию, которая будет оценивать полезность атаки не своих планет для каждой своей планеты. Таким образом, у каждой своей планеты образуется список планет, отсортированный по этому коэффициенту, из которых каждая по одной рассматривается в качестве цели. В случае, если количество кораблей, которое будет на планете цели к моменту прилёта флотилии будет меньшим, чем есть на данной (для которой ищется цель), то можно отправить флотилию для её захвата. Например: Планета противника находиться на расстоянии 5 шагов с 12-ью кораблями и приростом в 3 планеты. Таким образом, для того, что бы её захватить необходимо, выслать 12 + (5*3) + 1 = 28 кораблей. Если на планете игрока нет такого количества, то в качестве цели рассматривается следующая не своя планета. Важно понимать, что отправлять флотилию для атаки можно только будучи уверенном в её захвате, иначе игрок просто потеряет корабли, ничего не получив в замен. Оценочную функцию можно занять из экономики, на основе которой появилась наука «Теория Игр». Все не свои планеты можно представить в виде фондов или недвижимости, в общем, всего того, что приносит деньги и является целью для инвестиций. Корабли при этом представляют собой деньги. В момент отсылки кораблей деньги тратятся. Находясь в полёте денег уже нет. Долетев до цели планета, меняет владельца - происходит инвестирование средств. Через какое-то время (зависит от роста планеты) на планете возникнет сумма, которую мы изначально потратили. Это называется окупаемостью инвестиций. В случае игры она измеряется в ходах(т.е.за сколько ходов этот вклад самоокупиться) (см. формулу 1).
Таким образом, не всегда самые близкие и самые слабые планеты становятся более желаемой целью, как показано на рисунке 11. Рис. 11- Планета с коэффициентом = 15 является более приоритетной целью (Здесь Gr - это скорость роста (англ. GrowthRate) Эту функцию оценки нельзя использовать в чистом виде, т.к. могут возникнуть ситуации, когда планета с самым низким коэффициентом находится ближе к противнику, чем к вам. В таком случае такая атака может провалиться. Причиной тому хитрость под названием «перехват». А пока можно просто ввести, как правило, что атаковать планеты, которые ближе к противнику, чем к игроку - нельзя. Особенно это касается первых ходов, когда планеты с хорошим коэффициентом находятся как на одной, так и на другой «сторонах поля». Так же нежелательны любые длинные перелёты кораблей, т.к. это ведёт к потери контроля над ситуацией, и за время полёта флотилии противник успеет сгруппироваться и защититься. Для этого в оценочную функцию можно внести зависимость, от расстояния. Например, умножение расстояния на некий коэффициент больше нуля, таким образом, заставляя увеличивать результат функции по мере увеличения расстояния. |