Моделирование в объектно-ориентированном программировании стратегий поведения боевых роботов

Страницы работы

Содержание работы

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ 

РОССИЙСКОЙ ФЕДЕРАЦИИ

Государственное образовательное учреждение

высшего профессионального образования

Сибирский государственный индустриальный университет

Кафедра

информационных технологий в металлургии.

Пояснительная записка

к курсовой работе

по теме “Моделирование в Объектно-Ориентированном Программировании стратегий поведения боевых роботов”

Выполнил: ст.гр. ИСП-06

 Тырнов М.К.

Проверил: ст. преподаватель

Климов В. Ю.

Новокузнецк 2007.


Введение.

В современном мире – мире информационных технологий, значимость «интеллектуальных» систем возрастает с каждым днем. Вскоре такие системы станут незаменимыми помощниками в процессе автоматизации промышленности, в офисе или даже дома в повседневности. Естественно основным отличием таких систем от обычных автоматов является их «интеллектуальность» или, иначе говоря, встроенные в них алгоритмы искусственного интеллекта. По этому, именно разработка систем искусственного интеллекта является одной из перспективнейших направлений развития информационных технологий.

Целью данной курсовой работы является реализовать модель поведения боевых роботов. Реализация модели выполнена с помощью объектно-ориентированного программирования (в дальнейшем называемое ООП). Процесс реализации включает в себя две части: реализация среды, в которой происходят процессы жизнедеятельности роботов и реализация стратегий поведения роботов в среде.


Постановка задачи.

Изначально программа будет расставлять на поле (определим его как поле 300х300 метров) модели роботов. Визуально модели представляю с собой небольшого радиуса (1,5х1,5 метра) окружности, причем вокруг каждого робота имеется окружность показывающая его физическую целостность (полная окружность – робот полностью цел, половина – цел наполовину, т.е. на 50%, а при достижении значении его целостности менее чем нулевого значения робот перестает подавать признаки жизнедеятельности).

Дальше согласно своим собственным алгоритмам поведения роботы начинают выполнять следующие действия: передвижение, сканирование, выстрел. Рассмотрим подробнее каждое действие:

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

·  Сканирование происходит следующим способом: робот испускает лучи в определенный сегмент. Лучи могут быть тонкими и толстыми. Изначально робот делит все пространство на 4 четверти (центром которой является сам робот) и посылает лучи в эти четверти (замечу, что длинна луча, не ограничена). Если в одной из четвертей найден противник, то луч делится еще на 4 части и так до достижения луча ширины угла π/32, что вполне достаточно для поля размерами 300х300 метров. Стоит заметить, что сканирование будет изображаться сектором, с краями, указывающими границы поиска, и радиусом, указывающими удаленность найденного противника. Далее запускается механизм выстрела.

·  Выстрел является моделью выстрела лазерного оружия. Свойства подобных установок является узкая поражающая способность (если лазер не задел брони робота то он не нанесет ни какого повреждения в отличии от, например, осколочных гранат или огнеметов), точность и дальность. Выстрел делится на несколько этапов:
1)Отключение прочего оборудования (сканеров и шасси в нашем случае) - для достаточного уровня энергии на лазерных установках.
2) Приготовления лазера в боевую способность - разогревание, занимающие доли или даже секунды.
3) Выстрел наносит повреждения по следующему принципу: если выстрел не задел цель, то он не наносит повреждений; если выстрел попал в робота, то наносит повреждения по принципу, что чем ближе к краю робота попадает выстрел лазера, тем меньше повреждений он наносит.
4) Задержка после выстрела и приведение робота в боевую готовность - способность выполнять другие действия: включать шасси или же сканировать окружение.

Поведения роботов предоставляется двумя стратегиями:

·  Стандартное. Роботы передвигаются по полю в случайные точки ограниченные удаленностью в 150 метров и с вероятностью 1 к 3 производят сканирование при остановке.

·  Окружное. Роботы после появления двигаются к ближайшей стенке и начинают передвигаться в небольшом (ограниченным 25 метрами) удалении от стены от одного края до другого и с вероятностью 1 к 6 производить в этих углах сканирования с последующем выстрелом.


Реализация задачи.

Для решения задачи мы использовали ООП. Первым классом программы является класс TBGClass, предоставляющий собой класс, описывающий поле, на котором производят свои коварные поступки боевые роботы:

TBGClass=Class

     Constructor create(NewTeamCount:integer; NewCanvas:TCanvas; FF:boolean);

     private

       FTeam: array of TRAAIClass; //массив роботов руководствующихся 1 моделью поведения

       STeam: array of TRFAIClass; //массив роботов руководствующихся 2 моделью поведения

       TeamCount: integer; //Размер команд

       Canvas: TCanvas;    //канва поля

     public

       FriendlyFire:Boolean; //возможность перестрелки внутри однотипных роботов

       procedure action;     //действия роботов

       function Scan(x,y,a,b:real; gr:integer):real;  //проверка сканирования

       function Fire(x,y,a:real):boolean;  //проверка выстрелов

     end;

Вторым важнейшим классом является класс-родитель для роботов, в котором заложены основные функции роботов:

TRobotsClass=Class

     Constructor create(newx,newy,NewTeamInd:integer; NewCanvas:TCanvas; NewColor:TColor);

     private

      Speed,DSpeed,MaxSpeed:real;         //скорость

      OldHealth,Health:integer;           //НР (100 standart max)

      tx,ty,xold,yold:real;               //координаты

      SRunway,S,a:real;                   //характеристики движения

      RoboColor:TColor;

      Canvas:TCanvas;                     //Поле на котором рисуецо робот

      TargetA,TargetB,TargetS:real;               //"углы" таргета

      ScanerI,FireI:integer;            // щечик сканирования и тиков за шаг сканирования

      TargetAold,TargetBold,TargetSOld:real;         //старые "углы" таргета для кореектного стирания

     protected

     public

      DeathI:integer;

      busy:boolean;                       //занятость

      Scaning:boolean;

      x,y:real;

      TeamInd:integer;                    //индитификатор тимы

      procedure ShowRobot;                //Отображение робота

      procedure ShowScan(v:integer);      //Отображение роботы

      procedure Fire;                     //Выстрелы

      procedure ShowDeath;                //Отображения смертельных мук роботов

      procedure Damage(Count:integer);    //снять N-ное кол-во НР

      procedure Move;                     //двигаца

      procedure NewMove(newtx, newty:integer);   //двигаца в новое место

                   //тут мог бы быть ваш огонь

      procedure Scaner;

     end;


Ну и конечно два ключевых класса, ради которых все и задумывалось.

Первый предоставляет собой стратегию стандартного поведения:

TRAAIClass=Class(TRobotsClass)

      public

        procedure acto; //процедура с заложенной в нее стратегией поведения

      end;

Второй – окружную (смотри цели работы) стратегию поведения:

TRFAIClass=Class(TRobotsClass)

      public

        procedure acto; //процедура с заложенной в нее стратегией поведения

      end;

Рассмотрим алгоритмы поведения роботов:

Принцип работы логики стандартного поведения:


Принцип работы логики окружного поведения:

Опишем также основные формулы, используемые для следующих действий:

Движение:

Основываясь на следующем утверждением: «пройденный путь равен площади фигуры в осях скорости и времени» - составим уравнение:

SRunway=vmax2/(dv*2)

Зная «тормозной путь» определяем, когда роботу нужно тормазить.

SRem<=SRunway

Где SRem – оставшееся расстояние.

Выстрелы:

Угол g между началом координат (центр координат сам робот) находим по формуле: g=ArcTan(y/x)

От суда угол b отклонения между роботом и лучом, следовательно, равен:
|g-a|

Близость прохождения луча от робота находится по формуле:
r=√((x1-x2)+ (y1-y2))*sin(b)


Графическое оформление.

Как легко заметить интерфейс программы собой предоставляет 3 объекта. Рассмотрим каждый из них

·  Кнопка Reset: сбрасывает поле и всех роботов на начальное положение.

·  Кнопка Exit: выходит из программы

·  Переключатель FF: позволяет или запрещает роботам возможность и желание стрелять по роботам аналогичной расы.


Кроме того, на поле можно заметить следующие объекты:

·  Роботы

·  Сканирующие лучи

·  Лучи выстрелов


Заключение.

В результате проделанной работы удалось:

·  Создать среду проектирования стратегий поведения боевых роботво в среде Delphi 7

·  Спроектировать модель системы роботов и внешнего поля.

·  Реализовать две несколько отличные стратегии поведения боевых роботов и проверить их действенность.

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

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

Похожие материалы

Информация о работе