Главная страница

Искусственный интеллект. В дополнение к основной цели работы выделяем следующие задачи


Скачать 1.7 Mb.
НазваниеВ дополнение к основной цели работы выделяем следующие задачи
АнкорИскусственный интеллект
Дата19.03.2020
Размер1.7 Mb.
Формат файлаdocx
Имя файлаKursovaya_po_II.docx
ТипРеферат
#112466
страница5 из 7
1   2   3   4   5   6   7

2.3.2 Самооборона

Самооборону можно считать, пожалуй, самым важным этапом всей стратегии. От того как хорошо и безошибочно реализован этот модуль алгоритма зависит результативность всего бота. Побеждает тот, у которого суммарный прирост кораблей на всех планетах больше. Поэтому потеря любой своей планеты ведёт к изменению этого отношения, а значит этого нельзя допустить ни в коем случае.

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

Для удобства была написана специальная функция, которая занимается симуляцией таких случаев. В результате она выдаёт информацию о том, на каких ходах и как будет меняться состояние этой планеты (количество кораблей, принадлежность) по мере прилёта флотилий. Из этой информации можно сделать определённый и важный вывод - сколько кораблей необходимо забронировать на самооборону, что бы, когда прилетит последняя флотилия планета, осталась у игрока.

На рисунке 9 упрощенно объясняется, как работает алгоритм симуляции.

Рис. 9 - График работы симуляции прибывающих кораблей

На верхней шкале, показано будущее планеты с изначально 25-ью кораблями и подлетающими 4 флотилиями (чёрточка на отрезке), 3 из которых чужие (со знаком минус) и одна своя (со знаком плюс). На нижней шкале между чёрточками показано, сколько планета успевает набрать (со знаком плюс) между прилётами кораблей; верхние цифры показывают, сколько кораблей было к моменту прилёта флотилии; снизу показано, сколько кораблей осталось после вычитания (или сложение) с прилетевшей флотилией.

Прирост у планеты составляет 5 кораблей, следовательно, к прилёту первой флотилии на планете уже будет 40 кораблей. Корабли противника вычитаются, и на планете остаётся 10 кораблей (под шкалой) и так далее.

Для принятия решения о том, сколько кораблей необходимо забронировать для защиты надо найти минимальное количество кораблей, какое будет в будущем у планеты. В данном случае это число 3. Следовательно, что бы к этому моменту планета осталась наша (пусть даже без кораблей) сейчас на ней должно остаться 25- 3 = 22 корабля, а остальными уже можно пользоваться.

Что бы максимально обезопасить себя от захвата планеты можно посмотреть на ближайшие планеты противника и предположить, что они на следующем ходу выпустят все, что у них есть по направлению к данной планете. Потенциальной угрозой можно считать все планеты противника, что находятся ближе, чем первая ближайшая своя планета. Это показано на рисунке 10.





Рис. 10 - Учёт потенциальной угрозы со стороны ближайших планет противника

На рисунке видно, что потенциальной угрозой можно считать две нижних планеты, верхняя же планета противника (тёмная) не является угрозой, т.к. на подмогу центральной успеет прийти своя же планета (сверху светло-серая).

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

Теперь должно быть понятно, почему использование особой логике на первом шагу не обязательно. В случае первого шага данный алгоритм самозащиты увидит стоящую рядом планету противника и рассчитает, сколько ему можно пустить на расширение так, что бы, в случае если все 100 кораблей полетят на него, он бы смог отбиться.
1   2   3   4   5   6   7


написать администратору сайта