50859

Построения экспертных приложений COMP-P, разработка набора правил в этой системе и создание исполняемого модуля «Программист» в Borland Delphi

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

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

Целью данной работы является изучение инструментальной системы для построения экспертных приложений COMP-P, разработка набора правил в этой системе и создание исполняемого модуля «Программист» в Borland Delphi. Порядок выполнения работы. Для создания исполняемого модуля «Программист» в Borland Delphi Вам необходимо 3 файла.

Русский

2014-01-31

775.5 KB

14 чел.

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

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

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

Для создания исполняемого модуля «Программист» в Borland Delphi Вам необходимо 3 файла.

1) Библиотека cp3_iesm.dcu с механизмом логического вывода для Delphi (Находится в папке LIB в каталоге системы COMP-P. При несоответствии версии компилятор требует файл cp3_iesm.pas).

2) Pascal модуль zadanie.pas связи переменных вашего проекта с базой знаний (генеририруется системой COMP-P при компиляции Вашего проекта).

3) Файл ресурса с расширением .RES. Генеририруется зарегистрированной системой COMP-P при компиляции Вашего проекта. Если Ваша версия COMP-P не зарегистрирована, то воспользуйтесь файлом zadanie.res для описанного ниже примера.

При компиляции zadanie.pas возможны сообщения об шибках в связи с использованием типа данных PAnsichar. В этом случае необходимо перейти от пар

 тип Pansichar / функция CMP_UT_STR

к парам

тип String / функция CMP_UT_STR .

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

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

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

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

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

1.1 Переменные

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

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

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

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

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

Тип: СТР

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

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

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

Тип: СТР

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

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

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

Тип: СТР

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

1.2 Правила

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

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

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

ПРАВИЛО: R1

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

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

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

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

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 критерия – сложность задачи  и уровень программирования. Есть возможность выбора логического вывода (прямой, обратной или смешанной аргументации) и  вывода на экран или в файл данных об  активизированных правилах и трассировки.

 


 

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

55958. КУЛЬТУРА УСНОГО ДІЛОВОГО СПІЛКУВАННЯ 186 KB
  Інтерв’ю Візитна картка та її використання Орфоепія і культура усного мовлення Участь у дебатах Мистецтво публічного виступу Без спілкування люди не могли б жити в суспільстві працювати й передавати свій досвід і знання іншим.
55959. Сенсорне виховання дітей раннього віку «Ігровий майданчик» 76.5 KB
  Хід гризаняття Вихователь ставить на стіл будиночок теремок за яким розташовується 23 мотрійки і говорить малюкам що в будиночку живуть мотрійки. У третій частині заняття діти розглядають предмети витягнуті з іграшок наприклад серветки. Гразаняття Дві мотрійки Складання мотрійки з одним вкладишем Мета: розвивати навички виконувати прості дії з предметами відкривати та закривати мотрійки вкладати і виймати предмети; збагачувати сенсорний досвід під час знайомства з розміром.
55960. Його величність - серце 51 KB
  Мета: Продовжити знайомство учнів з серцевосудинною системою людини. Вивчивши серцевий цикл встановити причину інтенсивної роботи серця. На уроці ми переглянемо біологічний журнал Його величність серце.
55961. Органи кровообігу. Серце, його будова 140 KB
  Застосовувати знання для: кровоносні судини; органи кровообігу на малюнках; особливості будови серцевого м’яза; профілактики серцево-судинних хвороб. Кожна хребетна тварина яка має кров має серце. Прислухайся у грудях серце стука Вистукує один і той же ритм...
55962. The Ecological Problems of our Settlement 34 KB
  Good afternoon, everybody! I am glad to see you at our ecological party which is called "A Boomerang". I am sure that everybody who has come here is indifferent to everything that is around us, and understands that the Earth is our home. Today we will discuss and try to solve the environmental problems of our settlement.
55963. Пори року. Техніка - модульне орігамі 2.31 MB
  Вона складається із старого клубка ниток обмотаного грофованим папером білого кольору. Обличчя намальоване фломастерами, волосся і корона з двостороннього кольорового паперу.
55964. Подорож до країни Математики 40 KB
  Діти сьогодні ми з вами можемо потрапити до країни Математики. Добрий день діти Пишу вам з чарівної країни Математики. Розчаклувати жителів країни Математики можуть тільки розумні уважні й кмітливі діти. До зустрічі Королева Математики...
55965. Читання оповідання В. Сухомлинського «Петрик, собака і кошеня» 37 KB
  Продовжувати знайомити дітей з творчістю В. Сухомлинського. Повторити твори, що читали раніше. Ознайомити з оповіданням В. Сухомлинського «Петрик, собака і кошеня». Вчити дітей уважно слухати твір, відповідати на запитання відповідно до змісту.