Московский государственный технический университет им. Н.Э.Баумана

 

 

 

 

 

 

Утверждаю:

 

_____________________

 

"___"_____________2005  г.  

 

 

 

 

 

 

Отчёт по лабораторной работе №1,2

по дисциплине Интеллектуальные системы

"Разработка прототипа ЭС" и

"Разработка базы знаний с правилами вывода"

 

 

 

отчет

(вид документа)

 

 бумага А4

(вид носителя)

 

16

 (количество листов)

 

 

 

ИСПОЛНИТЕЛЬ:

 

 

____________________

 

 

"29"  марта  2006 г.  

 

 

 

 

 

 

 

 

Москва  2006

 

1. Название и цель работы

Название: "Разработка прототипа ЭС" и "Разработка базы знаний с правилами вывода".

Цель: Ознакомиться с подходом к разработке ЭС в части создания основных компонент: базы знаний, машины вывода и диалога (интерфейса) с пользователем.

 

2. Задания

2.1. Выбрать предметную область и задачу, которая может быть решена с помощью ЭС.

2.2. Разбить процесс решения задачи на следующие этапы:

2.2.1. Получение исходных данных (множество P) от пользователя в режиме диалога

2.2.2. Обработка (анализ) полученных данных P для определения атрибутов (множество A) объекта принятия решения O

2.2.3. Принятие решения на основе полученных характеристик A (выбор одного из заранее определенных вариантов решения) и вывод результата пользователю.

2.2.4. Количественные требования к основным показателям:

P >=20 (Количество параметров, извлекаемых от пользователя, должно быть более 19)

A >=10 (Количество атрибутов, которые характеризуют объект выбора или принятия решения O, должно быть более 9)

P > 2*A (количество исходных данных должно быть больше количества необходимых атрибутов для принятия решения больше как минимум в два раза)

Множество A может только частично (не более чем на 30%) входить в множество P.

Количество вопросов должно быть не меньше количества параметров P.

2.2.5. Итоговое принятие решения (выбор) должен производиться на основе хотя бы двух альтернативных вариантов.

2.3. Разработать вопросы к пользователю и граф диалога

2.3.1. Разработать схему разветвленного диалога, содержащего не менее 20 вопросов с двумя или более вариантами ответов.

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

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

2.3.4. Порядок задавания вопросов должен изменяться в зависимости от ответов, т.е. могут быть заданы не все 20 вопросов, а только их часть. Более того, в зависимости от ответов должны задаваться разные группы вопросов.

2.3.5. Все вопросы должны задаваться в распространенной языковой и по возможности вежливой форме.

2.3.6. Не допускается исключение этапа определения значений необходимых для принятия атрибутов за счет использования хорошо построенного диалога. Чтобы этого избежать можно, например, ввести несколько независимых веток вопросов.

2.4. Разработать БД для хранения исходных, промежуточных и результирующих данных.

2.5. Разработать вопросно-ответную компоненту БЗ.

2.6. (лаб. 2) Разработать правила и реализовать машину вывода

2.6.1. Наличие правил, имеющих две (или более) посылки и реализующих их конъюнкцию (или другую форму агрегирования).

2.6.2. Правила должны храниться в отдельной структуре (таблице) БЗ. Описание правил в БЗ должно быть реализовано таким образом, что от пользователя не требуется указание номера вопроса, номера ответа и т.д.

2.7. (лаб. 2) Реализация принятия решения

Должна быть реализована произвольно с использованием стандартного подхода к разработке расчетно-логических систем в рамках тела программы или в виде дополнительного механизма с использование БЗ.


3. Краткое описание предметной области и выбранной задачи

 

В данной лабораторной работе поставлена задача реализовать прототип ЭС по выбору Источника Бесперебойного питания (UPS). За основу взяты несколько аналогичных программных продуктов, являющихся инструментом подбора товаров в некоторых интернет-магазинах.

Путем задавания наводящих вопросов о сфере применения ИБП, целях его приобретения и ограничениях на внешние параметры и цену ИБП выявляются необходимые для выбора параметры. После чего на основе этих параметров мы получаем те или иные атрибуты в соответствии с определенными в базе знаний правилами. А после этого на основе атрибутов с учетом некоторой их приоритетности принимается решение по выбору того или иного объекта, т.е. в нашем случае конкретной модели источника бесперебойного питания.

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

По классу разрабатываемая ЭС относится к ЭС класса интерпретации данных, анализа, статическим, поверхностным и будет являться демонстрационным прототипом.

 

4. Перечень параметров, атрибутов и их допустимых значений

 

В таблице параметров представлены переменные БЗ, значения которых получаются в ходе ответов пользователя на вопросы.

 

Параметры

Допустимые значения

Имя параметра

Описание

1

сфера

Сфера применения ИБП

- дом

- офис

- производство

2

оборудование

Классы оборудования, для которого требуется ИБП

- бытовое

- сетевое

- производственное

3

цель

Цель приобретения ИБП

- отключение

- скачки

- уровень

4

габариты

Внешние размеры ИБП

- малые

- средние

- любые

5

масса

Масса ИБП

- малая

- средняя

- любая

6

температура

Температурные условия эксплуатации

- жесткотемпературные

- нормальные

7

аппаратура

Тип аппаратуры, подключаемой к ИБП

- точная

- профессиональная

- прочая

8

поддержка_ПО

Необходимость программного обеспечения

- true

- false

9

ПО

Программное обеспечение ИБП

- Windows

- Unix

- другое (вводится в последствии)

10

поддержка_сетей

Необходимость поддержания сетей

- true

- false

11

сеть

Поддерживаемые сети

- Ethernet

- FDDI

- другая

12

работа

Длительность работы ИБП при номинальной нагрузке

- долгая

- средняя

- любая

13

особые_условия

Необходимость особых условий эксплуатации

- true

- false

14

защита

Корпусная защита от вибраций

- высокозащищенные

- защищенные

- -

15

чувствительность

Чувствительность подключаемого оборудования к изменению напряжения на входе

- высокая

- средняя

- низкая

16

шумоизоляция

Шумоизоляционные свойства ИБП

- высокошумоизолированные

- шумоизолированные

- -

17

нагрузка

Количество подключаемых устройств данного класса

- 3

- 2

- 1

18

ограничение_цены

Наличие органичения цены ИБП

- true

- false

19

цена

Цена ИБП

(значение вводится)

20

подзарядка

Необходимое время подзарядки батарей

- быстрая

- средняя

- любая

В таблице атрибутов представлены свойства объекта (ИБП), значение которых получаются из параметров путем применения правил.

 

Атрибуты

Допустимые значения

Имя атрибута

Описание

1

тип

Тип ИБП

- off-line

- line-interactive

- on-line

2

мин мощность

Мин. требуемая мощность ИБП [ВА]

250-36000

3

макс габариты

Макс. габариты [см]

- small

- middle

- big

4

макс масса

Макс. масса [кг]

- 10

- 60

- 1000

5

макс время переключения

Макс. время переключения ИБП на питание от батарей [мкс]

- 0

- 3

- 30

6

мин время работы

Мин. время работы ИБП при номинальной нагрузке [мин]

- 5

- 10

- 15

7

ПО и сети

ПО и поддерживаемые сети

Windows, Unix, (вводенное значение) + Ethernet, FDDI, другая

8

макс цена

Макс. Цена [руб]

(введенное значение)

9

условия использования

Условия эксплуатации ИБП

Жесткотемпературные+высокозащищенные+

высокошумоизолированные

10

макс время подзарядки

Макс. время подзарядки батарей [ч]

- 5

- 12

-

5. Перечень вопросов, вариантов ответов и граф диалога

 

Вопрос

Ответ

1

В какой сфере деятельности предполагается использование ИБП?

- Использование в домашних условиях

- В офисах и малых предприятиях

- В крупном производстве или энергетической сфере

2

Для какого оборудования предполагается использование ИБП?

- Бытовые приборы, компьютеры

- Сетевое оборудование, компьютеры-сервера

- Сверхважное оборудование, критичное к изменению напряжения

3

Для какой цели будет использоваться ИБП?

- Длительное отключение электропитания

- Сглаживание скачков напряжения

- Поддержка постоянного уровня напряжения

4

Какой диапазон габаритов ИБП является приемлемым?

- До 50x50x50 (см)

- От 50x50x50 до 100x100x100 (см)

- Габариты не имеют значения

5

Какая масса ИБП является приемлемой?

- Маленькая (до 10 кг)

- Средняя (от 10 кг до 60 кг)

- Не имеет значения

6

Какая необходима подзарядка батарей ИБП?

- Быстрая (для критических условий использования)

- Средняя (для важных, но некритических случаев )

- Не имеет значения

7

Какие будут температурные условия использования ИБП?

- Жесткие высоко- (низко-) температурные условия

- Нормальные условия

8

Какой тип аппаратуры будет использован совместно с ИБП ?

- Сверхчувствительная и точная аппаратура (измерительные приборы, остслеживающие системы)

- Среднестатистическая профессиональная аппаратура (вычислительные системы)

- Прочее стандартное оборудование

9

Поддержка какого программного обеспечения требуется для оборудования, подключенного к ИБП?

- Windows 9x/2000/XP

- Unix/Linux, FreeBSD

- Другое ПО (обязательное)

10

Какие требуются сетевые характеристики?

- Поддержка сетей Ethernet

- Поддержка FDDI, Frame Relay

- Другие/любые сети (поддержка осуществляется дополнительно)

11

Какая требуется длительность работы ИБП от батареи?

- Большая (свыше 30 мин)

- Средняя (от 10 до 30 мин)

- Не имеет значения

12

Какой уровень защиты от внешних воздействий?

- Высокий (для работы в условиях повышенных вибраций)

- Средний (для работы в нормальных, но незащищенных условиях)

- Не имеет значения

13

Требуется ли поддержка программного обеспечения?

- Да

- Нет

14

Какая чувствительность подключаемого оборудования к изменению напряжения?

- Критическая (вычислительная техника)

- Средняя (другие приборы, работающие постоянно в течение большого промежутка времени)

- Низкая (осветительные и другие системы жизнеобеспечения)

15

Какая требуется шумоизоляция?

- Высокая (для жилых помещений)

- Средняя (для рабочих помещений)

- Не имеет значения

16

Требуется ли поддержка вычислительных сетей?

- Да

- Нет

17

Какая цена ИБП является приемлемой?

- Приближенная к минимуму в данной группе ИБП

- Высокая (требуется наиболее качественный ИБП)

- Строгое ценностное ограничение

18

Какая нагрузка предполагается для ИБП (количество различных устройств, подключенных к одному ИБП)?

- Высокая (несколько устройств на 1 ИБП или высокомощное оборудование)

- Средняя (1-2 устройства средней мощности)

- Низкая (1 устройство средней мощности или несколько маломощных)

19

Введите требуемое программное обеспечение:

 

20

Есть ли особые ценностные ограничения?

- Да

- Нет

21

Требуются ли особые условия использования ИБП?

- Да

- Нет

22

Введите максимальную цену ИБП:

 

 

Граф диалога представлен в приложении 1.

 

6. Правила получения атрибутов A из множества исходных параметров P

 

ID

Пар-р 1

Значение пар-ра 1

Операция 1

Пар-р 2

Значение пар-ра 2

Операция 2

Пар-р 3

Значение пар-ра 3

Атрибут

Значение атрибута

1

сфера

дом

OR

сфера

офис

AND

оборудование

бытовое

тип

off-line

2

сфера

офис

OR

сфера

производство

AND

оборудование

производственное

тип

on-line

3

оборудование

сетевое

AND

чувствительность

высокая

 

 

 

тип

line-interactive

4

цель

уровень

AND

чувствительность

высокая

 

 

 

тип

on-line

5

аппаратура

точная

 

 

 

 

 

 

макс время переключения

1

6

аппаратура

профессиональная

AND

цель

скачки

OR

аппаратура

профессиональная

макс время переключения

3

7

масса

любая

AND

сфера

дом

 

 

 

макс масса

100

8

масса

малая

 

 

 

 

 

 

макс масса

10

9

масса

средняя

 

 

 

 

 

 

макс масса

60

10

нагрузка

3

AND

работа

долгая

AND

оборудование

бытовое

мин мощность

3000

11

нагрузка

2

AND

работа

долгая

AND

оборудование

бытовое

мин мощность

2000

12

нагрузка

1

AND

работа

долгая

AND

оборудование

бытовое

мин мощность

1000

13

нагрузка

3

AND

работа

средняя

AND

оборудование

бытовое

мин мощность

1500

14

сфера

дом

 

 

 

 

 

 

мин время работы

5

15

сфера

офис

 

 

 

 

 

 

мин время работы

10

18

ограничение_цены

true

 

 

 

 

 

 

макс цена

цена

19

подзарядка

быстрая

 

 

 

 

 

 

макс время подзарядки

5

20

подзарядка

средняя

 

 

 

 

 

 

макс время подзарядки

12

21

сфера

дом

OR

сфера

офис

AND

чувствительность

низкая

тип

off-line

22

особые_условия

true

 

 

 

 

 

 

условия использования

температура+защита+шумоизоляция

26

габариты

малые

 

 

 

 

 

 

макс габариты

small

27

габариты

средние

 

 

 

 

 

 

макс габариты

middle

28

поддержка_ПО

true

AND

поддержка_сетей

true

 

 

 

ПО и сети

ПО+сеть

29

поддержка_ПО

true

AND

поддержка_сетей

false

 

 

 

ПО и сети

ПО

30

поддержка_ПО

false

AND

поддержка_сетей

true

 

 

 

ПО и сети

сеть

31

сфера

производство

OR

сфера

офис

 

масса

любая

макс масса

1000

32

аппаратура

прочая

 

 

 

 

 

 

макс время переключения

40

33

нагрузка

2

AND

работа

средняя

AND

оборудование

бытовое

мин мощность

1000

34

нагрузка

1

AND

работа

средняя

AND

оборудование

бытовое

мин мощность

500

35

нагрузка

3

AND

работа

любая

AND

оборудование

бытовое

мин мощность

750

36

нагрузка

2

AND

работа

любая

AND

оборудование

бытовое

мин мощность

500

37

нагрузка

1

AND

работа

любая

AND

оборудование

бытовое

мин мощность

250

38

нагрузка

3

AND

работа

долгая

AND

оборудование

производственное

мин мощность

36000

39

нагрузка

2

AND

работа

долгая

AND

оборудование

производственное

мин мощность

24000

40

нагрузка

1

AND

работа

долгая

AND

оборудование

производственное

мин мощность

12000

41

нагрузка

3

AND

работа

средняя

AND

оборудование

производственное

мин мощность

18000

42

нагрузка

2

AND

работа

средняя

AND

оборудование

производственное

мин мощность

12000

43

нагрузка

1

AND

работа

средняя

AND

оборудование

производственное

мин мощность

6000

44

нагрузка

3

AND

работа

любая

AND

оборудование

производственное

мин мощность

9000

45

нагрузка

2

AND

работа

любая

AND

оборудование

производственное

мин мощность

6000

46

нагрузка

1

AND

работа

любая

AND

оборудование

производственное

мин мощность

3000

47

нагрузка

3

AND

работа

долгая

AND

оборудование

сетевое

мин мощность

6000

48

нагрузка

2

AND

работа

долгая

AND

оборудование

сетевое

мин мощность

4000

49

нагрузка

1

AND

работа

долгая

AND

оборудование

сетевое

мин мощность

2000

50

нагрузка

3

AND

работа

средняя

AND

оборудование

сетевое

мин мощность

3000

51

нагрузка

2

AND

работа

средняя

AND

оборудование

сетевое

мин мощность

2000

52

нагрузка

1

AND

работа

средняя

AND

оборудование

сетевое

мин мощность

1000

53

нагрузка

3

AND

работа

любая

AND

оборудование

сетевое

мин мощность

1500

54

нагрузка

2

AND

работа

любая

AND

оборудование

сетевое

мин мощность

1000

55

нагрузка

1

AND

работа

любая

AND

оборудование

сетевое

мин мощность

500

56

сфера

производство

 

 

 

 

 

 

мин время работы

15

 

7. Алгоритм принятия решения (выбора) со схемой

1)      Чтение атрибута «макс цена» из БЗ, определение его значения. Если значение не числовое, то переход к п.3

2)      Выяснение наличия моделей ИБП (из таблицы Models), цена которых не выше полученного значения, если такие модели есть, то пометка всех остальных, как неподходящих, иначе присвоение цене свойства «минимальная».

3)      Чтение атрибута «мин мощность» из БЗ, определение его значения.

4)      Выяснение наличия моделей ИБП (из таблицы Models), мощность которых не ниже полученного значения, если такие модели есть, то пометка всех остальных, как неподходящих, иначе выбор максимальной из предложенных мощностей подходящих моделей.

5)      Чтение поочередно оставшихся атрибутов из БЗ, определение их значений. Выявление наличия подходящих моделей по данному атрибуту, если такие имеются, то пометка остальных , как не подходящих, если таких нет, то выбор из имеющихся подходящих моделей таких, у которых имеется наиболее приближенные к значению атрибута свойства.

6)      Пока атрибуты не закончились – п.5. Иначе – п.7

7)      Выявление подходящих моделей по типу и снова по цене (теперь с разбором «минимальной» и «максимальной» цены).

8)      Вывод  приближенно подходящей модели на экран.

Схема представлена в Приложении 1.

8. Алгоритм работы программы (по 3 частям)

Получение исходных данных (множество P) от пользователя в режиме диалога

1)      Прочтение записи в таблице очередности задавания вопросов (если записи кончились, то перейти к п.8)

2)      Вывод вопроса с указанным там номером на экран

3)      Определение типа вопроса и вывод в зависимости от этого на экран различных функциональных компонент (список, группа радиокнопок, поле ввода)

4)      Поиск в БЗ ответов на данный вопрос и вывод их на экран (для списка)

5)      После выбора варианта или ввода значения пользователем и нажатия кнопки далее осуществляется запись соответствующего значения параметра в таблицу параметров

6)      Пометка вопросов, которые не нужно задавать после данного ответа (если есть), и пометка самого вопроса, как заданного.

7)      Прочтение следующего вопроса, номер которого указан в прочитанном вопросе (если есть) и переход к п.2. Переход к п.1. (если следующий вопрос не указан)

8)      Прочтение первого незаданного вопроса (если есть), кроме вопросов типа ввода значения (они выводятся только при прямом указании на их вывод) и переход к п.2.

9)      Завершение диалога с пользователем (если незаданных вопросов не осталось)

 

Обработка (анализ) полученных данных P для определения атрибутов (множество A) объекта принятия решения O

1)      Чтение непроверенного правила из БЗ (если такого нет, то переход к п.10)

2)      Проверка на наличие пользовательских данных (полученных из полей ввода) – поле  Users. Если пользовательские данные есть, то переход к п.8.

3)      Выявление имен параметров, указанных в правиле, и чтение их значений из таблицы параметров

4)      Получение логических переменных, которые характеризуют операнды правила (если данный параметр имеет а таблице параметров то же значение, что и в правиле, то логическая переменная = «истина», иначе = «ложь»)

5)      Выявление операций, указанных в правиле, и их последовательное (слева направо) применение к логическим переменным, в результате чего получение логического значения выполнения правила

6)      Если логическое значение правила = «истина», то в атрибут, имя которого указывается в правиле, записывается значение указанное в правиле.

7)      Пометка правила, как проверенного и переход к п.1.

8)      Чтение всех имен параметров и запись их значений из таблицы параметров в указанный в правиле атрибут (если параметров больше одного, то значения разделяются знаком «+»)

9)      Пометка правила, как проверенного и переход к п.1.

10)  Завершение проверки правил (все данные полученные от пользователя обработаны)

 

Принятие решения на основе полученных характеристик A (выбор одного из заранее определенных вариантов решения) и вывод результата пользователю.

Алгоритм принятия решения описан в п.7 отчета.

 


9. Структура БЗ (логическая и физическая модель данных в архитектуре реляционных или объектных БД)

 

Таблица Orders

Поле

Описание

Допустимые значения

ID

Ключ

(число)

ID_Q

Номер следующего в очереди вопроса

(ID из таблицы Questions)

 

 

Таблица Questions

Поле

Описание

Допустимые значения

ID

Ключ

(число)

Quest

Текст вопроса

(текст)

Asked

Задан/не задан

- true (вопрос был задан)

- false (вопрос не был задан)

ID_nextQ

Номер следующего вопроса

(ID из таблицы Questions)

Parametr

Изменяемый параметр

(имя параметра из таблицы Result)

Type_Q

Тип вопроса

- 1 (вопрос на выбор варианта ответа)

- 2 (вопрос на Да/Нет)

- 3 (вопрос на ввод значения)

Parametr_int

Числовой тип параметра

- true (параметр-число)

- false (параметр-строка)

 


Таблица Result

Поле

Описание

Допустимые значения

ID

Ключ

(число)

Par_name

Имя параметра

(текст)

Par_val

Значение параметра

(текст)

Par_type

Тип параметра

- 0 (текст/число)

- 1 (логический)

Таблица Answers

Поле

Описание

Допустимые значения

ID

Ключ

(число)

Answer

Текст ответа

(текст)

ID_Q

Номер вопроса, к которому принадлежит ответ

(ID из таблицы Questions)

ID_nextQ

Номер следующего вопроса

(ID из таблицы Questions)

Par_val

Значение изменяемого параметра

(значение параметра)

Not_Ask

Номер вопроса, который не нужно задавать

(ID из таблицы Questions)

Not_Ask_par_name

Имя параметра, за который отвечает вопрос, который не нужно задавать

(имя параметра из таблицы Result)

Not_Ask_par_val

Значение параметра, за который отвечает вопрос, который не нужно задавать

(значение параметра)

Таблица Rules

Поле

Описание

Допустимые значения

ID

Ключ

(число)

In_par1

Имя параметра 1

(имя параметра из таблицы Result)

In_val1

Значение параметра 1

(значение параметра)

Oper1

Операция между 1 и 2 параметрами

- AND

- OR

In_par2

Имя параметра 2

(имя параметра из таблицы Result)

In_val2

Значение параметра 2

(значение параметра)

Oper2

Операция между логическим выражением, полученным с помощью 1-ой операции, и 3 параметром

- AND

- OR

In_par3

Имя параметра 3

(имя параметра из таблицы Result)

In_val3

Значение параметра 3

(значение параметра)

Out_par

Имя атрибута

(имя атрибута из таблицы Attribs)

Out_val

Значение атрибута

(значение атрибута)

 

 

Таблица Attribs

Поле

Описание

Допустимые значения

ID

Ключ

(число)

Attr_name

Имя атрибута

(текст)

Attr_val

Значение атрибута

(текст)

 


Таблица Models

Поле

Описание

Допустимые значения

ID

Ключ

(число)

model

Модель ИБП

(текст)

Type

Тип ИБП

(текст)

Capacity

Мощность ИБП

(число)

Size

Габариты

- small: ([число]х[число]х[число])

- middle: ([число]х[число]х[число])

- big: ([число]х[число]х[число])

Weigth

Вес

(число)

Switch_time

Время переключения

(число)

Work_time

Время работы при номинальной нагрузке

(число)

Charge_time

Время полной зарядки батарей

(число)

Cost

Цена ИБП

- минимальная

- высокая

- (число)

soft

ПО и поддурживаемые сети

(текст)

environment

Эксплуатационные условия

(текст)

firm

Фирма-производитель

(текст)

match

 

- true (подходит по свойствам)

- false (не подходит по свойствам)

 

10. Подробный алгоритм работы программы с БЗ

 

Для работы с БЗ используются SQL запросы (БД – MS Access, запросы вырабатываются приложением, написанным на языке С++).

 

Получение исходных данных (множество P) от пользователя в режиме диалога

1)      Прочтение записи в таблице очередности задавания вопросов (если записи кончились, то перейти к п.8)

SELECT ID_Q FROM Orders WHERE ID = <номер записи в таблице очередности>

Номер записи изменяется путем инкрементирования значения, контроль за наличием записи происходит по полю ID_Q, которое читается в компонент DBText (с помощью длины записанного в этом компоненте текста можно понять имеется ли запись, или они кончились).

2)      Вывод вопроса с указанным там номером на экран (запрос в БЗ вопроса с полученным ID_Q)

SELECT * FROM Questions WHERE ID = <номер вопроса> AND Asked = false

 

3)      Определение типа вопроса и вывод в зависимости от этого на экран различных функциональных компонент (список, группа радиокнопок, поле ввода)

Тип вопроса читается в поле DBText, и по его значению (1,2,3) делаются активными компоненты:

-         DBCtrlGrid (для вариантов ответов)

-         RadioGroup (для Да/Нет)

-         DBEdit (для ввода значения)

 

4)      Поиск в БЗ ответов на данный вопрос и вывод их на экран (для списка)

SELECT * FROM Answers WHERE ID_Q = <номер вопроса>

Варианты ответов выводятся в DBText, расположенные на компоненте DBCtrlGrid.

 

5)      После выбора варианта или ввода значения пользователем и нажатия кнопки далее осуществляется запись соответствующего значения параметра в таблицу параметров

UPDATE Result SET Par_val = <имя параметра> WHERE Par_name = <значение параметра>

Имя параметра читается из DBText, связанного с соответствующим полем вопроса, а значение параметра читается из DBEdit, связанным с соответствующим полем ответа.

 

6)      Пометка вопросов, которые не нужно задавать после данного ответа (если есть), и пометка самого вопроса, как заданного.

UPDATE Questions SET Asked = true WHERE ID= <номер вопроса>

 

7)      Прочтение следующего вопроса, номер которого указан в прочитанном вопросе (если есть) и переход к п.2. Переход к п.1. (если следующий вопрос не указан)

SELECT * FROM Questions WHERE ID = <номер следующего вопроса> AND Asked = false

8)      Прочтение первого незаданного вопроса (если есть), кроме вопросов типа ввода значения (они выводятся только при прямом указании на их вывод) и переход к п.2.

SELECT * FROM Questions WHERE Asked = false AND Type_Q <> 3

 

9)      Завершение диалога с пользователем (если незаданных вопросов не осталось)

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

 

Обработка (анализ) полученных данных P для определения атрибутов (множество A) объекта принятия решения O (функция void Rulezz())

1)      Чтение непроверенного правила из БЗ (если такого нет, то переход к п.10)

SELECT * FROM Rules WHERE Checked = false

 

2)      Проверка на наличие пользовательских данных (полученных из полей ввода) – поле  Users. Если пользовательские данные есть, то переход к п.8.

Проверка осуществляется путем выявления значения, хранящегося в DBCheckBox, связанным с полем Users выбранного по запросу правила.

 

3)      Выявление имен параметров, указанных в правиле, и чтение их значений из таблицы параметров

SELECT * FROM Result WHERE Par_name = <имя параметра>

4)      Получение логических переменных, которые характеризуют операнды правила (если данный параметр имеет а таблице параметров то же значение, что и в правиле, то логическая переменная = «истина», иначе = «ложь»)

Получение p1, p2, p3 на основе сравнения строк: значения параметра полученного из таб параметров и значения параметра, записанного в правиле.

 

5)      Выявление операций, указанных в правиле, и их последовательное (слева направо) применение к логическим переменным, в результате чего получение логического значения выполнения правила

if (!strcmp(Form4->DBText6->Caption.c_str(),"AND")) p12=(p1 && p2);

                  else if (!strcmp(Form4->DBText6->Caption.c_str(),"OR")) p12=(p1 || p2);

                         else p12=p1;

     if (!strcmp(Form4->DBText9->Caption.c_str(),"AND")) p=(p12 && p3);

                  else if (!strcmp(Form4->DBText9->Caption.c_str(),"OR")) p=(p12 || p3);

                         else p=p12;

 


6)      Если логическое значение правила = «истина», то в атрибут, имя которого указывается в правиле, записывается значение указанное в правиле.

UPDATE Attribs SET Attr_val = <имя атрибута> WHERE Attr_name = <значение атрибута>

Имя и значение атрибута читаются из DBText, связанного с правилом, прочитанным по запросу.

 

7)      Пометка правила, как проверенного и переход к п.1.

UPDATE Rules SET Checked = true WHERE ID = <номер проверяемого правила>

8)      Чтение всех имен параметров и запись их значений из таблицы параметров в указанный в правиле атрибут (если параметров больше одного, то значения разделяются знаком «+»)

SELECT * FROM Result WHERE Par_name = <имя параметра>

UPDATE Attribs SET Attr_val = <значение атрибута> WHERE Attr_name = <имя атрибута>

            Значение атрибута получаем из DBEdit, связанного с полем значения параметра, прочитанного по запросу.

 

9)      Пометка правила, как проверенного и переход к п.1.

UPDATE Rules SET Checked = true WHERE ID = <номер проверяемого правила>

 

10)  Завершение проверки правил (все данные полученные от пользователя обработаны)

Все правила обработаны, когда по запросу (п.1)  не находится ни одной записи в БД.

 

Принятие решения на основе полученных характеристик A (выбор одного из заранее определенных вариантов решения) и вывод результата пользователю(функция void Solution()).

1)      Чтение атрибута «макс цена» из БЗ, определение его значения. Если значение не числовое, то переход к п.3

SELECT * FROM Attribs WHERE Attr_name = 'макс цена'

 

2)      Выяснение наличия моделей ИБП (из таблицы Models), цена которых не выше полученного значения, если такие модели есть, то пометка всех остальных, как неподходящих, иначе присвоение цене свойства «минимальная».

SELECT * FROM Models WHERE cost <= <пользовательское значение>

if <по запросу есть найденные записи>

UPDATE Models SET Match = false WHERE cost > < пользовательское значение >

                        else UPDATE Attribs SET Attr_val = 'минимальная' WHERE Attr_name = 'макс цена'

3)      Чтение атрибута «мин мощность» из БЗ, определение его значения.

SELECT * FROM Attribs WHERE Attr_name = ‘мин мощность

4)      Выяснение наличия моделей ИБП (из таблицы Models), мощность которых не ниже полученного значения, если такие модели есть, то пометка всех остальных, как неподходящих, иначе выбор максимальной из предложенных мощностей подходящих моделей.

SELECT * FROM Models WHERE capacity >= <пользовательское значение>

if <по запросу есть найденные записи>

UPDATE Models SET Match = false WHERE capacity < <пользовательское значение>

else UPDATE Models SET Match = false WHERE capacity < (SELECT MAX(capacity) FROM Models WHERE Match = true)

 

5)      Чтение поочередно оставшихся атрибутов из БЗ, определение их значений. Выявление наличия подходящих моделей по данному атрибуту, если такие имеются, то пометка остальных , как не подходящих, если таких нет, то выбор из имеющихся подходящих моделей таких, у которых имеется наиболее приближенные к значению атрибута свойства.

SELECT * FROM Attribs WHERE ID = <номер записи в таблице атрибутов>

SELECT * FROM Models WHERE <атрибут>  <нужная операция > < значение>

if <по запросу есть найденные записи>

UPDATE Models SET Match = false WHERE  <атрибут>  <операция отсеивания> < значение>

else UPDATE Models SET Match = false WHERE  <атрибут>   < (SELECT <MAX/MIN>(<атрибут>) FROM Models WHERE Match = true)

 

6)      Пока атрибуты не закончились – п.5. Иначе – п.7

7)      Выявление подходящих моделей по типу и снова по цене (теперь с разбором «минимальной» и «максимальной» цены).

8)      Вывод  приближенно подходящей модели на экран.

SELECT * FROM Models WHERE Match = true

 

11. Подробная инструкция по работе с БЗ и ЭС

Добавление записей осуществляется в поля таблиц, описанных в п. 9 отчета.

Добавление вопроса

1)      Ввести текст вопроса в поле Quest таблицы Questions

2)      Указать тип вопроса в поле Type_Q таблицы Questions

3)      Выбрать параметр, на который влияет ответ на этот вопрос, в поле Parametr таблицы Questions

4)      При необходимости можно добавить параметр в таблицу параметров Result (задать имя параметра Par_name и если тип логический, то поставить 1 в поле Par_type)

5)      Если тип параметра числовой, то поставить галочку в поле Parametr_int таблицы Questions

6)      При необходимости указать следующий вопрос в поле ID_nextQ таблицы Questions

7)      Добавить ответы на данный вопрос в таблицу Answers, в поле ID_Q указать номер созданного вами вопроса, в поле Anmwer ввести текст ответа, в поле Par_val ввести значение, которое присвоится параметру, за который отвечает вопрос, в случае выбора этого ответа. Можно указать вопрос, который не следует спрашивать (Not_Ask), а также параметр и значение еще одного параметра, на который ответ влияет напрямую (Not_Ask_ par_name и Not_Ask_ par_val)

8)      Можно добавить вопрос в очередь задавания вопросов – таблица Orders (где указать в поле ID_Q номер созданного вопроса)

 

Добавление правила

 

1)      Указать имена параметров, участвующих в правиле, в поле In_Par<№ параметра> таблицы Rules

2)      Указать значения параметров, участвующих в правиле, в поле In_Val<№ параметра> таблицы Rules

3)      Указать атрибут, на который влияет это правило, в поле Out_Attr таблицы Rules

4)       Указать значение атрибута, на который влияет это правило, в поле Out_Val таблицы Rules

5)      Указать операции: Oper1 между 1 и 2 параметрами, Oper2 между полученным логическим выражением и 3 параметром (значения поля оперрации AND  или OR)

6)      Если значение какого-то параметра необходимо перенести в атрибут, то нужно поставить галочку в поле Users, а в поле  Out_Val  указать имя параметра, из которого берется значение (если из нескольких параметров, тогда их имена указываются через знак «+»)


Приложение 1.

 



Hosted by uCoz