Главная страница
Навигация по странице:

  • 2.3.6 Хитрость и тактические приёмы

  • СПИСОК ЛИТЕРАТУРЫ

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


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

    2.3.5 Перегруппировка

    Как и инвесторы не любят, когда их деньги лежат и “не работают”, так и игрок должен заботиться о том, что бы все генерируемые корабли приносили свой вклад в победу. В частности может возникнуть ситуация, когда рядом с данной планетой нет ни одной нейтральной планеты или планеты противника. В таком случае все свободные корабли должны быть переправлены ближе к «линии фронта», которая часто образуется в игре между достаточно развитыми ботами.

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

    Но для упрощения задачи можно найти такой путь более простым способом. Он схематично изображён на рисунке 12.



    Рис. 12- Выбор потенциального звена при перегруппировки сил по направлению к атакующему

    Алгоритм заключается в следующем. Берутся все планеты игрока и сортируются по расстоянию до атакующего. По одному проверяется угол между планетой, кандидатом и атакующем. Если угол больше или равен 120o, значит это и есть искомое звено, куда надо отправить свободные корабли. Данный угол был получен опытным путём. Объяснить такой выбор можно тем, что это достаточно тупой угол, и при нём не создаётся слишком длинных маршрутов. Таким образом, каждая планета отвечает только за правильную доставку до следующего звена.

    2.3.6 Хитрость и тактические приёмы

    В игре ВП возможно применять так же и некоторые хитрости и тактические приёмы.

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

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

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

    Важно отметить, что от каждой придуманной тактики и хитрости должна быть продумана и реализована эффективная защита.
    2.4 Внутреннее строение бота

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


    Рис. 13- Упрощённая архитектура классов наследования бота
    На рисунке видно, что класс с самим ботом MyBotу наследуется от класса Bot, который является подобием интерфейса (в Python нету понятия интерфейса как такового). Bot наследуется напрямую от класса PlanetWars, хранящего состояние игры и все необходимые API для работы с ним: методы восприятие среды и воздействие на неё. В частности, в PlanetWars хранится список планет и список флотилий. Сам PlanetWars наследуется от класса Debbugable, который отвечает за обеспечение условного журналирования и вывода на экран отладочных данных. Пример исходного кода приведён в листинге (рис.13).

    Пример исходного кода приведён в листинге 2.1.



    • defsim_arrivals(self, distances, p):




    • ”””Simulate end state of the game for given planet.


    3


    • distances: List of tuples of objects are going to this planet.




    • p: planetforsimulation




    • ”””




    • history = []




    • prev_distance = 0




    • history.append((p.owner, p.num_ships, 0))


    10 for dist_group in distances:




    1. diff_distance = dist_group[0][1] - prev_distance




    1. ifp.owner != 0:




    1. p.num_ships += p.growth_rate * diff_distance #next group came




    1. prev_distance = dist_group[0][1]


    15


    1. participants = {p.owner:p.num_ships}




    1. for obj in dist_group:




    1. if not obj[0] in participants:




    19

    participants[obj[0]] = obj[2]




    1. else:




    21

    participants[obj[0]] += obj[2]

    22







    1. winner = (0, 0)




    1. second = (0, 0)




    1. for k, v in participants.items():




    1. if v >second[1]:




    27

    if v >winner[1]:

    28

    second = winner

    29

    winner = (k, v)

    30

    else:

    31

    second = (k, v)

    32







    1. ifwinner[1] >second[1]:




    1. p.num_ships = winner[1] - second[1]




    1. p.owner = winner[0]




    1. else:




    1. p.num_ships = 0




    1. history.append((p.owner, p.num_ships, dist_group[0][1]))




    1. returnhistory



    Рис. 13 Метод симулирующий прибытия флотилий

    В листинге приведён метод, который на вход принимает список объектов, имеющих время прибытие, количество кораблей и принадлежность. В этом списке могут быть как флотилии, так и планеты противника представляющие потенциальную угрозу. На строке 10 эти объекты итерируются, где каждый проходит ряд изменений и вычислений, идентичных тем, что производит игровой движок, когда во время применения решений игроков считает итоге прилётов флотилий на планеты. А именно: строки 12-14 инкрементирует рост планеты, 16-21 разбивает по группам всех участников локального боя (какой игрок сколько кораблей привносит), 23-31 рассчитывают победителя и проигравшего (тот, кому достанется планета), 33-37 вычитает корабли и меняет владельца планеты, 38 добавляет результат от прилёта флотилий в результативный список.

    На данный момент реализованы все основные механизмы игры.

    ЗАКЛЮЧЕНИЕ

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

    Искусственный интеллект в видеоиграх представляет из себя симуляцию поведения как дружественных, так и враждебных персонажей (в том числе и животных). Вряд ли по своим «навыкам» игровой искусственный интеллект способен потягаться с настоящими игроками. Но это ему и не нужно. Главная его задача создать интересные ситуации, а не заставить игрока страдать и проклинать себя за то, что он купил ту или иную игру. 

    Тема искусственного интеллекта будоражит умы многих начинающих программистов, разработчиков и любителей компьютерных игр. ИИ кажется многим чем-то удивительно сложным, интересным, таинственным. Действительно, ведь технологии ИИ заставляют персонажей игр действовать разумно. Однако в ИИ нет ничего таинственного. За десятилетия развития этой области знаний было разработано огромное количество алгоритмов, применимых в самых разных областях деятельности. И компьютерные игры – лишь сравнительно небольшое поле для технологий искусственного интеллекта.

    Очень сложно найти компьютерную игру, которая обходится без ИИ. Классический пример «умных» игр – это программы для игры в шашки, шахматы и прочие настольные игры. Каждая игра, в которой компьютер играет против пользователя, оснащена ИИ.

    Полученные знания помогли нам в написании практического задания. Изученный материал позволил более чётко представить себе все возможные направления при написании ИИ в играх.
    СПИСОК ЛИТЕРАТУРЫ


    1.  Барашенков В.С. Искусственный разум. // Человек. - 2014. - №4. - С.64-70.

    2. Гамма Э., Хелм Р., Джонсон Р., Влиссидес Дж. Приемы объектноориентированного проектирования. Паттерны проектирования. - СПб: Питер, 2018. - 368 с.

    3. Девятков В.В. Системы искусственного интеллекта / Гл. ред. И.Б. Фёдоров. - М.: Изд-во МГТУ им. Н.Э. Баумана, 2014. - 352 с.

    4. Джордж Л.Ф. Искусственный интеллект: стратегии и методы решения сложных проблем, 4-е издание. Пер. с англ. - М.: Вильямс, 20016. - 432 с.

    5. Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. Алгоритмы. Построение и анализ. Пер. с англ. - М.: Вильямс, 2012. - 1296 с.

    6. Масленникова О.Е., Попова И.В. Основы искусственного интеллекта.- Магнитогорск, 2015. - 282 с.

    7.  Непомнящий Н.Н. Сто великих загадок 20 века. - М.: Вече, 2017. - 470 с.

    8. Петрунин Ю.Ю., Рязанов М.А., Савельев А.В. Философия искусственного интеллекта в концепциях нейронаук. - М.: МАКС Пресс, 2015. – 156 с.

    9. Питер Джексон Введение в экспертные системы. - М.: Вильямс, 2014. – 624 с.

    10. Рассел С., Норвиг П. Искусственный интеллект: современный подход/ Пер. с англ. и ред. К.А. Птицына. - 2-е изд. - М.: Вильямс, 2016. -1408 с.

    11.  Софдж Э. Можно ли доверять роботам?: Зависимость от машин. // Популярная механика, 2014. - №5. - С. 5-6.

    12. Смолин Д.В. Введение в искусственный интеллект: конспект лекций. [Электронный ресурс] - Электрон.дан. - М.: Физматлит, 2007. - 264 с. - Режим доступа: http://e.lanbook.com/book/2325

    13. Ясницкий Л.Н. Искусственный интеллект. Элективный курс: учебное пособие. [Электронный ресурс] - Электрон.дан. — М.: Издательство "Лаборатория знаний", 2012. - 197 с. - Режим доступа: http://e.lanbook.com/book/8775

    14. S.J. RussellandP. Norvig. Artificialintelligence: amodernapproach. Prenticehall, 2015.

    15. J.R. Searle. Minds, brains, and programs. Behavioral and brain sciences, 3(03):417–424, 2014.





    1   2   3   4   5   6   7


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