Реализация программы системы навигации ИМР в Visual C++

Реализация системы навигации робота способами Visual C++ имеет некоторые особенности. Во-первых: пролог-программа, базирующаяся исключительно на базе данных в С++, что требует реализации специальных способов преподнесения. Во-вторых: разработку С++ программ будет невозможно представить без реализации системы выполнения рабочих планов.

Конечно, решение заданий по разработке планов, исключительно зависит от начального состояния системы. Каждый объект мира ИМР должен быть однозначно описан в базе данных программы (рис. 2.3)

Начальное расположение объектов в системе планирования

Рисунок 2.3 - Начальное расположение объектов в системе планирования

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

- перемещаться к дверям или коробкам;

- перемещаться в конкретную комнату;

- открывать или закрывать двери;

- загружаться коробкой или освобождаться от неё.

Опишем основные моменты разработки планов робота в ограниченном пространстве.

1. Для описания начального, текущего и конечного состояния системы планирования объявим класс CRoboPlan.

Пример 4.1 - Главный класс системы разработки планов робота

class CRobotPlan

{public: char *relname,*agent,*sobj1,*sobj2;

CRobotPlan *next;

CRobotPlan();

CRobotPlan(char *,char *,char *,char *,CRobotPlan *);

CRobotPlan(char *,char *,char *,CRobotPlan *);

void print();

CRobotPlan *dataformer();

CRobotPlan *addfact(char *,char *,char *,char *);

CRobotPlan *delfact(char *,char *,char *,char *);

CRobotPlan *delfact(char *,char *,int,char *);

CRobotPlan * delfactall(char *rel, char *n);

int dbtest(char*,char*,char*);

int dbtest(char*,char*,char*,char*);

int dbtest(char*,int,char*,char*);

int dbtest(char*,int,char*,int);

CRobotPlan *findfact(char *,char *);

CRobotPlan *findfact(char *,char *,char *);

CRobotPlan *findfact(char *,char *,char *,char *);

CRobotPlan *findfact(char *,int,char *,char *);

CRobotPlan *findfact(char *,int,char *,int);

CRobotPlan *findfact(char *,char *,char *,int);

CRobotPlan* Revers(CRobotPlan *);

void deciser();

char *find_action();

void support_action(char*);

void old_cleaner(char*);

void new_adder(char*);

};

Как видно класс состоит с трех переменных членов и ряда функций. Поля *relname, *agent, *sobj1 и *sobj2 означают: имя отношения, что входит в состав базы данных; программный субъект, который выполняет действия; два объекта на которые направлено действие.

2. В программе генерации планов робота, факты про состояние объектов системы подаются связным списком и инициализируются функцией dataforme().

3. Для решения заданий системы реализуем функцию решения - deciser(), что структурирует последовательность принятия решений:

void CRobotPlan::deciser()

{if(!evil->dbtest(relname,agent,sobj1,sobj2))

{char *action=find_action();

if (action){ support_action(action);

old_cleaner(action);

new_adder(action);

}}}

Решение начинается с проверки наличия в базе данных целевого факта. Дальше при помощи функции find_action(), находится способ действия робота, что удовлетворяет поставленной цели задания.

Если, например, перед системой возникает задание, в программе создается объект типа CRobotPlan, для которого возникает функция - решение например:

goal=new CRobotPlan(“is_in”,”robot”,”room1”,NULL); // tested

goal->deciser();

В данном случае задается целевой факт нахождения робота в комнате «room1».

4. Установление начальной цели системы планирования легко реализовать при помощи специального диалогового окна с комбинированными списками (рис. 2.4).

Вид диалогового окна формирования цели робота

Рисунок 2.4 - Вид диалогового окна формирования цели робота

При помощи комбинированных списков «Агент» (содержит значение «робот», «коробка1», «коробка2»), действие («перейти к», «толкать до», «открыть», «закрыть») и «Объект действия» (все двери, комнаты и коробки) можно сформировать задания робота. Нажатие кнопки «Подтвердить» означает окончание выбора проверки корректности задания и запуск системы планирования. Перечисление действий, что в результате, запланирует система принятия решений - выводится списком в правой часте диалогового окна.

Нажатие кнопки «Показать» - запускает функции графического отображения разработанного плана действий робота.

При цитировании материалов в рефератах, курсовых, дипломных работах правильно указывайте источник цитирования, для удобства можете скопировать из поля ниже:

Поделиться материалом