50867

Система Expert COMPonent for the Pascal-oriented tool

Лабораторная работа

Информатика, кибернетика и программирование

Целью данной работы является изучение инструментальной системы для построения экспертных приложений COMP-P, разработка набора правил в этой системе и создание исполняемого модуля «Программист» в Borland Delphi. Как заявляет разработчик ситема COMP-P Иванов Ю.К. Система COMP-P[ascal] (Expert COMPonent for the Pascal-oriented tool)

Русский

2014-02-03

778.5 KB

3 чел.

Лабораторная работа №4

Целью данной работы является изучение инструментальной системы для построения экспертных приложений COMP-P, разработка набора правил в этой системе и создание исполняемого модуля «Программист» в Borland Delphi. Как заявляет разработчик ситема COMP-P Иванов Ю.К. Система COMP-P[ascal] (Expert COMPonent for the Pascal-oriented tool) поддерживает продукционное представление знаний и различные методы аргументации логического вывода. Ее открытая архитектура позволяет встраивать средства использования знаний в прикладные программы и системы, обеспечивая тем самым внутреннюю возможность принятия решений.

Особенности продукционного языка через интерфейс к функциям языка Object Pascal позволяют разработчику самому строить интегрированные системы обработки знаний и данных c совершенным интерфейсом, используя все возможности мощных визуальных сред разработки Borland (Inprise) DELPHI ® версии 5 и выше.

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

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

1 Разработка и компиляция наборов правил «Программист» 

Создание проекта «Программист» в системе COMP-P предполагает создание набора правил, на основании которых производится логический вывод. Система включает 2 переменных, значение которых будет выбираться пользователем из предложенних вариантов и переменную цель, значение корой должна определить программа, после выполнения набора правил.

Основная форма среды разработки представлена на рисунке 1

 

Рисунок 1 –  Основная форма программы CP3.EXE, закладка Правила

В среде разработки версии 3 представлены следующие закладки:

  •  Правила;
  •  Переменные;
  •  Цель, инициализация, вывод;
  •  Pascal блоки;
  •  Pascal модуль;
  •  Текст набора правил;
  •  Диаграмма зависимостей.

1.1 Правила

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

Содержимое предложений любого правила можно видеть, установив курсор мыши на требуемое правило в списке в левом окне.

Наш проект содержит набор из 9 правил. Мы задавили имя правила и условия его выполнения. (см. рисунок 1)

ПРАВИЛО: R1

ЕСЛИ: zad='простая' & level='новичок'

ТО: otsenka='хорошо';

ПАСКАЛЬ:[otsenka]=otsenka;  

1.2 Переменные

Страница Переменные предназначена для редактирования или просмотра списка и свойств переменных (в порядке их добавления в проект или нахождения в наборе правил).

Рисунок 2 – Закладка «Переменные» проекта

Наш проект содержит переменную-цель «Оценка» и 2 переменных «Задача» и «Уровень программирования», значение которых выбирает пользователь из предложенного списка

Переменная: otsenka   

Метка: Оценка (отлично/хорошо/плохо)

Тип: СТР

Количество: 3

Переменная: zad   

Метка: Задача (простая/средняя/сложная)

Тип: СТР

Количество: 3

Переменная: level

Метка: Уровень программирования (новичок/пользователь/ программист)

Тип: СТР

Количество: 3

1.3 Цель, инициализация, вывод

 

Рисунок 3 –  Закладка «Цель, инициализация, вывод» проекта

Цель: Otsenka. Имя переменной цели является обязательным параметром и должно соответствовать имени одной из переменных, введенных в списке переменных, или встречающихся в тексте набора правил.

ИНИЦИАЛИЗАЦИЯ: 

zad=ПАСКАЛЬ:[zad;];

level=ПАСКАЛЬ:[level;];

ВЫВОД: ПАСКАЛЬ:[if esSetReasonMode=1 then CMPR;]

1.4 Pascal блоки 

На странице Pascal блоки представлены окна для просмотра, ввода и редактирования блоков Pascal, которые позволяют вносить информацию в соответствующие разделы модуля Pascal, который формируется компилятором для организации запуска и взаимодействия со средой Delphi/Kylix.

Рисунок 4 – Закладка «Pascal блоки» проекта

Блок P_USES – текст предложения uses раздела interface. Подключаем модули windows, cp3_iesm, SysUtils

Блок P_INT – текст объявлений, вносимых в раздел interface. Объявляем переменные var zad, level, otsenka: String 

Блок P_IMP – текст объявлений, процедур и функций, вносимых в раздел implementation.

Блок P_INI – текст операторов, вносимых в раздел initialization. level:=''; zad:=''; otsenka:=''

Блок P_FIN – текст операторов, вносимых в раздел finalization.

Блок P_DEC – текст объявлений, которые требуется внести в процедуру cmp_f1, в которую формируются все прочие конструкции Pascal, встреченные в тексте набора правил.

1.5 Текст набора правил

Закладка Текст набора правил представляет текст набора правил или загруженного в среду разработки, или сформированного в результате работы компилятора среды разработки из проекта.

/********** Набор правил. Создан 21.05.2010 14:32:57 **********/

Цель: otsenka

//-------------------Pascal блоки--------------------

P_USES:[windows, cp3_iesm, SysUtils;];

P_INT:[var zad, level, otsenka: String;];

P_INI:[level:=''; zad:=''; otsenka:='';];

//-----------Раздел описания переменных--------------

Переменная: otsenka   /* 1 */

Метка: Оценка (отлично/хорошо/плохо)

Тип: СТР

/* Размер: 30 */

Количество: 3

Переменная: zad   /* 2 */

Метка: Задача (простая/средняя/сложная)

Тип: СТР

/* Размер: 30 */

Количество: 3

Переменная: level   /* 3 */

Метка: Уровень программирования

(новичок/пользователь/программист)

Тип: СТР

/* Размер: 30 */

Количество: 3

//--------------Раздел инициализации-----------------

Инициализация: zad=ПАСКАЛЬ:[zad;];

level=ПАСКАЛЬ:[level;];

//-----------------Раздел правил--------------------

Правило: R1  /* 1 */

Если: zad='простая' & level='новичок'

 То: otsenka='хорошо';

ПАСКАЛЬ:[otsenka]=otsenka;

Правило: R2  /* 2 */

Если: zad='простая' & level='пользователь'

То: otsenka='отлично';

ПАСКАЛЬ:[otsenka]=otsenka;

Правило: R3  /* 3 */

Если: zad='простая' & level='программист'

То: otsenka='отлично';

ПАСКАЛЬ:[otsenka]=otsenka;

Правило: R4  /* 4 */

Если: zad='средняя' & level='новичок'

То: otsenka='плохо';

ПАСКАЛЬ:[otsenka]=otsenka;

Правило: R5  /* 5 */

Если: zad='средняя' & level='пользователь'

 То: otsenka='хорошо';

ПАСКАЛЬ:[otsenka]=otsenka;

Правило: R6  /* 6 */

Если: zad='средняя' & level='программист'

 То: otsenka='отлично';

ПАСКАЛЬ:[otsenka]=otsenka;

Правило: R7  /* 7 */

Если: zad='сложная' & level='новичок'

То: otsenka='плохо';

ПАСКАЛЬ:[otsenka]=otsenka;

Правило: R8  /* 8 */

 Если: zad='сложная' & level='пользователь'

То: otsenka='хорошо';

ПАСКАЛЬ:[otsenka]=otsenka;

Правило: R9  /* 9 */

Если: zad='сложная' & level='программист'

То: otsenka='отлично';

ПАСКАЛЬ:[otsenka]=otsenka;

//----------------Раздел вывода-------------------

Вывод: ПАСКАЛЬ:[if esSetReasonMode=1 then CMPR;]

КОНЕЦ:

Рисунок 5 – Текст набора правил

Pascal модуль

Здесь представлен текст модуля Pascal, сформированного компилятором из всех встреченных конструкций Pascal и конструкций, необходимых для запуска механизма логического вывода.

Текст, представленный в данном окне не подлежит редактированию напрямую, а может быть скорректирован только в соответствующих процедурных предложениях конструкций набора правил.

Рисунок 6 – Закладка «Pascal модуль» проекта

1.7 Диаграмма зависимостей 

Диаграмма функционально полностью соответствует утилите построения диаграммы зависимостей. Строится только для текущего откомпилированного проекта.

Рисунок 7 –Диаграмма зависимостей

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

1.8 Компиляция набора правил

 Набор правил можно компилировать после сохранения отредактированного набора правил или после сохранения отредактированного проекта.

В результате успешной компиляции создаются следующие файлы:

  •  файл откомпилированного набора правил в виде файла откомпилированного ресурса с именем исходного набора и расширением ".RES". Файл ресурса будет включен в проект создаваемого приложения через сгенерированный модуль;
  •  файл исходного текста модуля вызова механизма логического вывода создаваемого приложения на языке Паскаль с именем исходного набора и расширением ".PAS".

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


2 Создание исполняемого модуля «Программист» в  Borland Delphi

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

Диаграмма процесса компиляции и получения исполняемого модуля системы представлена на рисунке

Рисунок 8 – Последовательность получения готового продукта

Для построения готового продукта следует включить в проект:

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

2) Библиотеки, содержащие функции механизма логического вывода и специальные функции работы со значениями переменных и трассировки логического вывода.

3) Все требуемые вам для построения интерфейса и обработки данных модули и ресурсы. В исходном тексте на языке Паскаль хранятся все конструкции из предложений ПАСКАЛЬ:[...] исходного набора правил.

Создаем новый проект в среде Delphi. Подключаем к проекту сгенерированный модуль zadanie.pas. В список используемых библиотек следует включить библиотеку cp3_ie.dcu.  Создаем форму Программист, помещаем на нее следующие объекты –   группы переключателей (GroupBox, RadioGroup, CheckBox), кнопку, вызывающую выполнение программы (Button), надписи для вывода результата  (Label 3).

Рисунок 9 – Форма «Программист»

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

Добавляем параметры управления процессом исполнения

Параметр управления трассировкой логического вывода

esSetTrassMode: integer;

esSetTrassMode=1 - вывод трассировки в экранное окно.

EsSetTrassMode=2 - вывод трассировки в файл.

EsSetTrassMode=3 - вывод трассировки в экранное окно и файл.

Значение по умолчанию 0.

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

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

При этом появляется слово «Пауза» в заголовке окна и в тексте послепоследней выведенной на данный момент строки.При повторном двойном щелчке вывод возобновится.Данный режим особенно полезен в процессе отладки при зацикливании консультаций.

Рисунок 10 – Трассировка логического выыода

Параметр управления механизмом аргументации

Объявление:

esSetChainMode: integer;

esSetChainMode=1 - прямая цепочка вывода.

EsSetChainMode=2 - обратная цепочка вывода.

EsSetChainMode=3 - смешанная цепочка вывода.

Параметр управления, задающий режим формирования цепочки объяснений

Объявление:

esSetReasonMode: integer;

esSetReasonMode=0 - файл с данными активизированных правил не формируется.

esSetReasonMode=1 - файл с данными активизированных правил формируется.

Значение по умолчанию 0.

Задание соответствующего режима позволяет формировать или нет файл с данными активизированных в процессе консультации правил. Файл с данными правил формируется с именем, соответствующим исполняемому модулю, но с расширением .REA. Если в процессе консультации не активизировалось ни одно правило, то файл будет пустой.

Рисунок 11 – окно активизации правил

В результате текст модуля выглядит следующим образом:

unit Index;

interface

uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

 Dialogs, StdCtrls, cp3_iesm, zadanie, ExtCtrls;

type

 TForm1 = class(TForm)

   GroupBox1: TGroupBox;

   RadioButton1: TRadioButton;

   RadioButton2: TRadioButton;

   RadioButton3: TRadioButton;

   GroupBox2: TGroupBox;

   RadioButton4: TRadioButton;

   RadioButton5: TRadioButton;

   RadioButton6: TRadioButton;

   Button1: TButton;

   Label1: TLabel;

   Label2: TLabel;

   RadioGroup1: TRadioGroup;

   CheckBox1: TCheckBox;

   CheckBox2: TCheckBox;

   CheckBox3: TCheckBox;

   procedure Button1Click(Sender: TObject);

 private

   { Private declarations }

 public

   { Public declarations }

 end;

var

 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

begin

if RadioButton1.Checked then

  zad:='простая';

if RadioButton2.Checked then

  zad:='средняя';

if RadioButton3.Checked then

  zad:='сложная';

if RadioButton4.Checked then

  level:='новичок';

if RadioButton5.Checked then

  level:='пользователь';

if RadioButton6.Checked then

  level:='программист';

if CheckBox1.Checked then esSetReasonMode:=1

   else esSetReasonMode:=0;

if CheckBox2.Checked then esSetTrassMode:=1

   else esSetTrassMode:=0;

if CheckBox3.Checked then

       esSetTrassMode:=esSetTrassMode+2;

case  RadioGroup1.ItemIndex of

   0: esSetChainMode:=2; // обратная аргументация

   1: esSetChainMode:=1; // прямая аргументация

   2: esSetChainMode:=3; // смешанная аргументация

end;

_zadanie;

Label2.Caption:=otsenka;

end;

end.

Рисунок 12 – Исполняемая программа «Программист»


Заключение

Таким образом, в ходе данной курсовой работы, была изучина система COMP-P[ascal] (Expert COMPonent for the Pascal-oriented tool), поддерживающая продукционное представление знаний и различные методы аргументации логического вывода.

Основными функциями системы COMP-P являются:

  •  решение задач в режиме интерактивной консультации с возможностью интерактивной отладки баз знаний (установка режима трассировки);
  •  интеграция на уровне возможностей среды Delphi/Kylix различных программных продуктов и информационного обеспечения в единый программно-методический комплекс (эффективное сочетание традиционного программного обеспечения и интеллектуального компонента);
  •  решение задач с использованием баз знаний в не интерактивном режиме в составе прикладной программной системы.

Автор системы Иванов Ю.К.

В системе COMP-P , был создан проект «Программист», включающий в себя набор правил, список переменных и их описание, раздел цели, инициализации, вывода, Pascal блоки, после компиляции автоматичеки был создан текст набора правил, Pascal модуль и диаграмма зависимостей. Этот проект был подключен к проекту в среде разработки Borland Delphi.

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


Список использованных источников

1. Иванов Ю. К. Инструментальная система для построения экспертных приложений в Borland Delphi/Kylix COMP-Pascal версия 3 Руководство пользователя

2. Гаврилова, Т.А., Хорошевский, В.Ф. Базы знаний интеллектуальных систем / Т.А. Гаврилова, В.Ф. Хорошевский. – СПб.: Питер, 2001. – 384 с.

2. Попов Э.В. Экспертные системы: Решение неформализованных задач в диалоге с ЭВМ /  Э.В. Попов – М.: Наука. 1987. – 288 с.

3. Хейес-Рот Ф. Построение экспертных систем / Ф. Хейес-Рот, Д. Уотерман, Д.  Ленат. – М.: Мир, 1987. – 447с.

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


 

А также другие работы, которые могут Вас заинтересовать

44195. Системні науки та кібернетика. Методичні рекомендації 4.62 MB
  Правильне виявлення, постановка та чітке формулювання проблеми сприятиме усвідомленню реальних можливостей її вирішення, великою мірою визначає стратегію дослідження. Сформулювати проблему – означає показати вміння відокремити головне від другорядного, виявити те, що вже відомо, але не має свого вирішення.
44196. Выпускная квалификационная работа требования и методические рекомендации 367.5 KB
  Выполнение дипломной работы является одним из основных видов самостоятельной работы студентов на заключительном этапе обучения направленной на расширение и закрепление теоретических знаний формирование навыков решения творческих задач в ходе самостоятельного научного исследования или проектирования по определенной теме. Целью дипломной работы является определение степени готовности студента к самостоятельному решению профессиональных задач проверка научнотеоретической и практической подготовки выпускаемых специалистов и присвоение им...
44197. Особенности совместной деятельности младшего школьного возраста в зависимости от уровня диалогической речи 282.5 KB
  В психологии развития исследования совместной мыслительной деятельности проводились преимущественно на детях младшего возраста. Остаются открытыми и мало исследованными вопросы, связанные с изучением специфики развития совместной мыслительной деятельности в младшем школьном возрасте: особенности коммуникации и диалогов, взаимодействия и кооперации
44198. СТРУКТУРА, ПРАВИЛА ПОДГОТОВКИ И ОФОРМЛЕНИЯ РЕЗУЛЬТАТОВ САМОСТОЯТЕЛЬНОЙ УЧЕБНОЙ И НАУЧНО-ИССЛЕДОВАТЕЛЬСКОЙ РАБОТЫ СТУДЕНТОВ 231 KB
  Курсовая работа проект Курсовые работы проекты являются составной частью учебного процесса одной из самостоятельных форм деятельности студента. Курсовые работы выполняемые студентами II III и IV курсов дневного и заочного отделений на кафедре документоведения и библиотековедения занимают определенное место в системе профессиональной подготовки специалистов высшей квалификации. Общий характер курсовых работ: Специальность Библиотечноинформационная деятельность На 2 курсе дневного и заочного отделения студенты выполняют...
44200. Разработка методических рекомендаций к проведению деловой игры 373.5 KB
  Для решения поставленных задач использован комплекс методов исследования: теоретический (анализ психолого-педагогической и учебно-методической литературы) и эмпирические (личностно-ориентированный подход, при помощи которого создаётся основа для признания приоритета личности учащихся в образовательном процессе, и позволяет строить содержание образования с учётом его индивидуальных интересов и способностей; аналогия, моделирование)
44201. Разработка модели формирования себестоимости на продукцию фирмы ООО «РемСтройТрест» 664 KB
  Себестоимость продукции является важнейшим показателем экономической эффективности ее производства. Анализ себестоимости продукции работ и услуг имеет большое значение в системе управления затратами. Он позволяет изучить тенденции изменения ее уровня установить отклонение фактических затрат от нормативных стандартных и их причины выявить резервы снижения себестоимости продукции и дать оценку работы предприятия по использованию возможностей...
44202. Специфика работы в сети Internet 45.43 KB
  Современный человек вряд ли представляет свою профессиональную деятельность без применения ресурсов, доступных при помощи Internet. Интернет – это совокупность государственных, региональных, корпоративных и других компьютерных сетей, а также отдельных компьютеров, объединенных между собой разнообразными каналами передачи данных и унификацией применяемых технологий, таким образом, по своей структуре это полностью децентрализованная сеть.
44203. Стальной каркас промышленного здания 1.19 MB
  При определении горизонтальных размеров учитываются унифицированные привязки колонн ак к разбивочным осям, требования прочности и жесткости, предъявляемые к колоннам, а так же эксплуатационные требования.