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

4 чел.

Лабораторная работа №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.


 

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

66446. Вексель - вид ценной бумаги, как объект гражданских прав 336 KB
  Когда впервые появился вексель достоверно установить невозможно. Ученые высказывают различные точки зрения о времени и месте появления первых векселей. Одни предполагают, что вексельные операции были известны древним римлянам и древним грекам, другие отстаивают точку зрения, что вексель появился в Италии во второй половине 12 века.
66448. Аудит страховых организаций и особенности его проведения 383.5 KB
  Слово аудит в разных переводах означает «он слышит» или «слушающий». В классическом понимании аудит означает независимый внешний финансовый контроль, осуществляемый независимыми дипломированными аудиторами, не работающими на данном предприятии.
66449. Современные тенденции налогообложения физических лиц в ООО «Структура» 57.57 KB
  Налогообложения физических лиц представляет собой плату конкретного физического лица за определенные услуги, которые предоставляются ему каким-то территориальным обществом, на территории которого данное лицо имеет свой налоговый адрес или же расположено физическое лицо, удерживаемое налог на доходы физических лиц согласно с Законом о налоге на доходы.
66450. Проект мероприятий по повышению финансовых результатов деятельности коммерческого банка 738 KB
  Прибыль как конечный финансовый результат деятельности банка Анализ продуктов банка услуг Мероприятие по повышению репутации банка Эффективность работы банка определяется рентабельностью проводимых им операций и его способностью максимизировать прибыль при соблюдении необходимого уровня рисков.
66451. Разработка эффективных направлений рекламной кампании торгового предприятия ООО «Техносила» 180.5 KB
  Реклама внутренне присущий элемент рынка один из важнейших инструментов его развития. Реклама в России очень быстро стала необходимой частью практически всех сторон жизни общества. Реклама стала частью сложного комплекса интегрированных маркетинговых коммуникаций.
66452. Исследование и разработка мероприятий по совершенствованию управления прибылью предприятия ООО «Радуга» 298 KB
  Прибыль – это денежное выражение основной части денежных накоплений, создаваемых предприятиями любой формы собственности. Как экономическая категория она характеризует финансовый результат предпринимательской деятельности предприятия.
66453. Разработка и оценка эффективности бизнес-плана проекта для привлечения кредита 302.5 KB
  Актуальность исследования обусловлена тем, что на сегодняшний день вести предпринимательскую деятельность практически невозможно без привлечения кредитов. Получение кредита - очень важный и ответственный шаг для предприятия. Важность получения кредита заключается в том, что при разумном его использовании предприятие...
66454. Анализ опыта побуждения персонала к труду как фактора хозяйственной деятельности предприятия на примере административно-управленческого персонала ЗАО «Престиж» 202 KB
  Актуальность темы данной выпускной квалификационной работы обусловлена тем что фактически во всей литературе по менеджменту информация о методах мотивации и стимулирования персонала является достаточно устоявшейся и легко вписывается в схему: содержательные теории мотивации пирамида...