Курс : "Интеллектуальные системы "

advertisement
Курс : "Интеллектуальные системы "
Разработал доцент каф. математического обеспечения
компьютерных систем Крапивный Ю.Н.
Лабораторная работа № 2: разработка модельного ИППП.
Цель работы: проектирование и реализация модельного ИППП, обеспечивающего
автоматический синтез цепочки программных модулей для решения поставленной задачи
в рамках предметной области (ПО) пакета.
ИППП должен состоять из следующих компонентов:
 Рабочая память (РП) – список всех атрибутов (объектов) ПО (объект TRPObject).
 Функциональное наполнение пакета (ФН) – библиотека программных модулей.
 Системное наполнение пакета (СН)- набор процедур, функций, интерфейсов для
организации работы с ФН.
ЗАМЕЧАНИЕ. Все примеры приведены на языке программирования DELPHI (Object
Pascal).
Модель предметной области (МПО) ИППП. Формально описание МПО выполнено в
виде текстового файла, содержащего два блока:
 блок описания параметров МПО
 блок описания функциональных модулей
Строка с элементом описания параметров имеет следующую структуру:
номер параметра : идентификатор : название
Строка с элементом описания функциональных модулей имеет следующую структуру:
интерфейс модуля : название (назначение) модуля
Пример содержимого файла описания МПО:
#1
2 : b : сторона b треугольника
4 : Hc : Высота на сторону c треугольника
5 : S : площадь треугольника
#2
S=F11(Hc,b) : Вычисление площади треугольника
Взаимодействие ФН и СН осуществляется с использованием следующих объектов:
TModuleInterface
- описание интерфейса модуля
TRPObject
- атрибут ПО (элемент рабочей памяти)
Рабочая память (РП). РП организована в виде глобального статического массива RP
объектов типа TRPObject. Размер массива – 50 элементов. Реальное наполнение
массива осуществляется в соответствии с содержимым текстового файла, описывающего
МПО.
Каждый элемент массива RP - это объект типа TRPObject:
Type
TRPObject=object
Ident
: ShortString;
// атрибут ПО (элемент рабочей памяти)
// условный идентификатор атрибута в рамках МПО
1
Name
Value
IsCalc
end;
: ShortString;
: real;
: boolean;
// реальное название атрибута ПО
// значение атрибута ПО
// признак: вычислен или нет
Каждому атрибуту МПО ставится в соответствие его порядковый номер в массиве RP,
соответствующий его реальному расположению в массиве. Таким образом, Ident
параметра и его порядковый номер образуют взаимно однозначное соответствие.
Порядковый номер используется для программного доступа к значениям параметров при
исполнении модулей и при установке и чтении значений параметров.
Функциональное наполнение пакета (ФН). ФН реализуется в виде набора процедур
без параметров, реализующих разрешения отношений МПО.
Описание интерфейсов модулей ФН в СН реализуется через статический массив MI
объектов типа TModuleInterface. Реальное наполнение массива осуществляется в
соответствии с содержимым текстового файла, описывающего МПО. Вычисления в
процедурах выполняются над глобальными переменными – элементами массива MI.
Каждый элемент массива MI – это объект типа TModuleInterface:
Type
TModuleInterface=object
ModuleIdent
: ShortString;
ModuleName
: ShortString;
ModuleParam
: ShortString;
end;
// описание интерфейса модуля
// условный идентификатор модуля
// смысловое название модуля
// номера входных и выходных параметров
Каждому модулю (процедуре) условно ставится в соответствие его уникальный
идентификатор ModuleIdent , который может совпадать с именем модуля в программной
реализации ИППП. Для исполнения модулей необходимо создать единую процедуру:
Procedure ExecModule(ModuleIdent:string);
которая по имени модуля ModuleIdent вызывает соответствующий ему программный
модуль. Это может быть сделано, например, так:
….
IF ModuleIdent="F11" THEN F11;
Таким образом, программная реализация ИППП должна содержать два массива,
заполняемых динамически:
Var MI : array [1..50] of TModuleInterface;
Var RP : array [1..50] of TRPObject;
- массив описаний интерфейсов модулей
(массив элементов типа TModuleInterface);
- массив элементов рабочей памяти пакета
(массив элементов типа TRPObject)
Поле ModuleParam объекта TModuleInterface содержит номера входных и выходных
параметров модуля в формате:
выходной параметр = <имя модуля ModuleIdent>(список входных параметров через
запятую)
Например: S=F11(Hc,b) – означает, что модуль использует параметры (атрибуты) с Identзначениями Hc и ba, вычисляет параметр S.
2
Все функциональные модули ИППП реализуются в ИППП как процедуры без параметров,
которые выполняют операции над РП (глобальными переменными) - элементами массива
RP. Например,
Procedure F11; // соответствует модулю S=F11(Hc,b)
begin
MI[5].Value :=0.5*MI[2].Value*MI[4].Value; // соответствует S:=0.5*Hc*b
MI[5].isCalc :=True;
end;
где 5,2 и 4 – номера параметров S,b и Hc соответственно в массиве RP.
Системное наполнение пакета (СН)- набор процедур, функций, интерфейсов для
организации работы с ФН. СН реализуется в виде отдельного проекта – МОНИТОРА
(например, проекта Delphi). Проектом должна поддерживаться работа с текстовым
файлом описания МПО заданной структуры (см. выше).
СН должно обеспечить:
 Выбор файла с текстовым описанием настройки на МПО ИППП, его загрузка и
формирование массивов MI и RP.
 Обнаружение ошибок в описании МПО – например, наличие такого ModuleIdent,
которому нет соответствия в реальном ФН ИППП.
 Визуализацию элементов МПО: показать имена и текущие значения атрибутов ПО,
показать имена, параметры всех модулей ФН.
 Начальное задание пользователем значений отдельных атрибутов МПО ИППП.
 Выбор атрибута МПО ИППП, подлежащего вычислению.
 Формирование и выполнение цепочки программных модулей, вычисляющих
заданный атрибут МПО (использовать идею алгоритма паросочетаний).
 Инициализацию РП (сброс всех значений атрибутов).
Варианты заданий
№ Предметная область
1
Параллелограмм
2
Ромб
3
Окружность вписанная в треугольник
4
Окружность вписанная в ромб
5
Треугольная пирамида
6
Шар вписанный в треугольную пирамиду
7
Трапеция
8
Окружность описанная вокруг треугольника
9
Окружность описанная вокруг трапеции
10 Четырёхугольная пирамида
11 Фар вписанный в 4-х угольную пирамиду
12 Конус
13 Шар вписанный в конус
14 Шестиугольная пирамида
3
15 Шар вписанный в шестиугольную пирамиду
4
Download