Технология проектирования и разработки ЭС

ЛАБОРАТОРНАЯ РАБОТА 2 РАЗРАБОТКА СЛОЖНОЙ ЭКСПЕРТНОЙ СИСТЕМЫ   Цель работы: самостоятельное программирование пробной экспертной системы(ЭС).   1.ТЕОРЕТИЧЕСКИЙ МАТЕРИАЛ  

Классификация систем, основанных на знаниях

Экспертные системы можно классифицировать по

1) по решаемой задаче;

2) по связи с реальным временем;

3) по типу ЭВМ;

4) по степени интеграции.

Рассмотрим кратко типы ЭС по решаемой задаче.

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

Примеры.

· обнаружение и идентификация различных типов океанских судов по результатам аэрокосмической съемки – SIAP;

· определение основных свойств личности по результатам психодиагностического тестирования – АВТАНТЕСТ и МИКРОЛЮШЕР.

2. Диагностика. Под диагностикой понимается процесс соотнесения объекта с некоторым классом объектов и/или обнаружение неисправности в некоторой системе.

Примеры.

· диагностика и терапия сужения коронарных сосудов – ANGY;

· диагностика ошибок в аппаратуре и математическом обеспечении ЭВМ – CRIB и другие.

3. Проектирование. Проектирование состоит в подготовке спецификаций на создание объектов с заранее определенными свойствами. Под спецификацией понимается весь набор необходимых документов – чертеж, пояснительная записка и так далее. Для организации эффективного проектирования необходимо формировать не только сами проектные решения, но и мотивы их принятия. В задачах проектирования тесным образом связываются два основных процесса, выполняемых в рамках ЭС: процесс вывода решения и процесс его объяснения.

Примеры.

· проектирование конфигурации ЭВМ VAX;

· синтез электрических цепей – SYN и другие.

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

Примеры.

· предсказание погоды – WILLARD;

· оценки будущего урожая – PLANT;

· прогнозы в экономике – ECON и другие.

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

Примеры.

· планирование поведения робота – STRIPS;

· планирование промышленных заказов – ISIS;

· планирование эксперимента – MOLGEN и другие.

6. Обучение. Под обучением понимается использование компьютера для изучения какой-то дисциплины или предмета.

Примеры.

· обучение языку ЛИСП в системе «Учитель ЛИСП»;

· обучение языку Паскаль – PROUST и другие.

 

Опишем кратко типы ЭС по связи с реальным временем.

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

Пример. Диагностика неисправностей в автомобиле.

2. Квазидинамические ЭС интерпретируют ситуацию, которая меняется с некоторым фиксированным интервалом времени

Пример. Микробиологические ЭС, в которых снимаются лабораторные измерения один раз в 4 – 5 часов, и анализируются динамика полученных показателей по отношению к предыдущим.

3. Динамические ЭС работают в сопряжении с датчиками объектов в режиме реального времени с непрерывной и интерпретацией поступающих данных.

Примеры.

· управление гибкими производственными комплексами;

· мониторинг в реанимации;

· программный инструментарий для разработки динамических систем.

 

Классифицируем ЭС по типу ЭВМ.

1. ЭС для уникальных стратегически важных задач на суперЭВМ (Эльбрус, CRAY, CONVEX и других);

2. ЭС на ЭВМ средней производительности (типа ЕС ЭВМ, mainframe);

3. ЭС на символьных процессорах и рабочих станциях (SUN, Silicon Graphics, APOLLO);

4. ЭС на персональных компьютерах (IBM PC, MAC II и т. п.).

Перечислим типы ЭС по степени интеграции с другими программами.

1. Автономные ЭС работают непосредственно в режиме консультаций с пользователем для специфически «экспертных» задач, для решения которых не требуется привлекать традиционные методы обработки данных.

2. Гибридные ЭС представляют собой программный комплекс, агрегирующий стандартные пакеты прикладных программ и средства манипулирования знаниями.

 

Коллектив разработчиков

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

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

Пользователь является в некотором роде заказчиком системы.

Эксперт – важная фигура в коллективе. Его подготовка определяет уровень компетенции базы знаний.

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

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

 

Технология проектирования и разработки ЭС

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

Процесс проектирования промышленной ЭС можно разделить на шесть более или менее независимых этапов: 1) выбор проблемы; 2) разработка прототипа ЭС; 3) доработка до промышленной ЭС; 4) оценка ЭС; 5) стыковка ЭС; 6) поддержка ЭС.

Этап выбора проблемы включает следующие стадии.

1. Определение проблемной области и задачи.

2. Нахождение эксперта и назначение коллектива разработчиков.

3. Определение предварительного похода к решению проблемы.

4. Анализ расходов и прибылей от разработки.

5. Подготовка подробного плана разработки.

Прототип является усеченной версией ЭС, спроектированной для проверки правильности кодирования фактов, связей и стратегий рассуждений эксперта. Объем прототипа – несколько десятков правил, фреймов или примеров.

Этап разработки прототипа состоит из следующих стадий.

1. Идентификация проблемы.

2. Получение знаний.

3. Структурирование знаний.

4. Формализация.

5. Реализация прототипа.

6. Тестирование.

Под идентификацией проблемы понимается знакомство и обучение коллектива разработчиков, а также создание неформальной постановки проблемы (продолжительность 1 – 2 недели).

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

Этап структурирования знаний выявляет структуру полученных знаний о предметной области, т. е. определяются: терминология, список основных понятий и их атрибутов, отношения между понятиями, структура входной и выходной информации, стратегия принятия решений, ограничения стратегий (средняя продолжительность 2 – 4 недели).

На стадии формализации строится формализованное представление концепций предметной области на основе выбранного языка представления знаний. Традиционно на этом этапе используются: логические методы (исчисление предикатов первого порядка), продукционные модели, семантические сети, фреймы, объектно-ориентированные языки.

Формализация знаний – разработка базы знаний на языке представления знаний (средняя продолжительность 1 – 2 месяца).

На этапе реализации создается прототип ЭС, включающий базу знаний и остальные блоки. Для создания прототипа можно использовать следующие способы:

· программирование на языках высокого уровня типа Паскаль, Си ++;

· программирование на специализированных языках для систем искусственного интеллекта ЛИСП, ПРОЛОГ и др.;

· использование инструментальных средств разработки ЭС;

·  использование «пустых» ЭС или «оболочек» типа GURU, ЭКСПЕРТ, ФИАКР.

 

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

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

Тестирование – выявление ошибок в подходе и реализации прототипа, выработка рекомендаций по доводке системы до промышленного варианта (средняя продолжительность 1 – 2 недели).

При разработке промышленной или коммерческой ЭС можно выделить дополнительные этапы: демонстрационный прототип→действующий прототип→промышленная система→коммерческая система.

Демонстрационный прототип – ЭС решает часть задач, демонстрируя жизнеспособность подхода (несколько десятков правил или понятий).

Действующий прототип – ЭС надежно решает все задачи на реальных примерах, но для сложной задачи требует много времени и памяти.

Промышленная система – ЭС обеспечивает высокое качество решений при минимизации требуемого времени и памяти.

Коммерческая система – промышленная система, пригодная к продаже, т. е. хорошо документирована и снабжена сервисом.

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

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

Поддержка ЭС заключается в обеспечении ее постоянной работоспособности путем повышения быстродействия и переносимости в зависимости от изменений проблемной области.

 

 

2. ВОПРОСЫ ДЛЯ ИЗУЧЕНИЯ ПРИ ВЫПОЛНЕНИИ ЛАБОРАТОРНОЙ РАБОТЫ

1. Классификация экспертных систем.

2. Экспертные системы по решаемой задаче.

3. Экспертные системы по связи с реальным временем.

4. Экспертные системы по типу ЭВМ.

5. Экспертные системы по степени интеграции.

6. Интерпретация данных в ЭС.

7. Диагностика в ЭС.

8. Проектирование в ЭС.

9. Прогнозирование в ЭС.

10. Планирование в ЭС.

11. Обучение в ЭС.

12. Статические ЭС.

13. Квазидинамические ЭС.

14. Динамические ЭС.

15. Коллектив разработчиков ЭС.

16. Пользователь ЭС.

17. Роль эксперта в ЭС.

18. Программист ЭС.

19. Инженер по знаниям ЭС.

20. Этапы процесса проектирования промышленной ЭС:

21. Стадии этапа выбора проблемы.

22. Прототип ЭС.

23. Стадии этапа разработки прототипа ЭС.

24. Идентификацией проблемы при создании ЭС.

25. Стадия получения знаний при разработке ЭС.

26. Этап структурирования знаний в процессе создания ЭС.

27. Стадия формализации при создании ЭС.

28. Этап реализации прототипа ЭС.

29. Тестирование ЭС.

30. Демонстрационный прототип ЭС.

31. Действующий прототип ЭС.

32. Промышленная ЭС.

33. Коммерческая экспертная система.

34. Поддержка ЭС.

 

3.Контрольные вопросы

1. Что такое транспьютерная технология?

2. Что такое персептрон?

3. Назовите области применения экспертных систем.

4. Что такое нейронная сеть?

5. Опишите продукционный способ представления знаний, его достоинства и недостатки.

6. Дайте краткую характеристику стратегий управления выводом в продукционных системах.

7. Сформулируйте принципы построения набора правил в продукционной экспертной системе.

8. Назовите этапы развития систем искусственного интеллекта.

9. Назовите особенности экспертных систем.

10. Для каких задач целесообразно применять ЭС? Приведите пример такой задачи

11. Назовите основные типы систем искусственного интеллекта?

12. Какие составляющие могут входить в продукцию?

13. Назовите инструментальные средства построения экспертной системы, дайте их краткую характеристику.

14. Какие механизмы вывода решений используются в продукционных моделях представления знаний?

15.  Приведите классификацию экспертных систем по типам решаемых задач.

16. Разъясните понятие искусственного интеллекта.

17. Как представляются знания в экспертной системе?

18. Что понимается под данными в продукционной модели знаний?

19. Почему продукционная модель знаний используется в промышленных экспертных системах?

20. Что такое знания на машинных носителях информации?

 

 

4. ЭТАПЫ ВЫПОЛНЕНИЯ ЛАБОРАТОРНОЙ РАБОТЫ

 

1. Изучите по литературе и конспекту лекций разделы, изложенные в п.2.

2. Изучите настоящие методические указания.

3. Ответьте на все контрольные вопросы.

4. Ознакомьтесь с индивидуальным заданием.

5. В соответствии с заданием напишите программу, реализующую небольшую ЭС. Практически любой из заданных вариантов может быть реализован небольшим набором правил.

6. Оформите отчет.

 

5. ПЛАН ОТЧЕТА.

1. Цель работы.

2. Содержание индивидуального задания.

3. Интерфейсы ЭС.

4. Текст программы.

5. Набор правил в виде продукций.

6. Дерево прямого вывода для выбранных исходных данных.

7. Дерево обратного вывода для других исходных данных.

Индивидуальные задания

Вариант 1

 GOAL: ways INITIAL:

Clear

release variable

e.lstr=250

output "Добрый день, Господа!"

output "Вы, путешествуя на своем лимузинчике,остановились передохнуть "

output "А когда набрались сил, то обнаружили,что лимузин не заводится"

output "Мы дадим Вам совет по устранению причин неисправностей" output "Но для этого Вы должны предоставить нам всю информацию"

output "Итак,поехали

fires=true

input fires logic with "Есть ли искра в блоке зажигания?"

 DO: clear output reasons Test ways

Case 0: output "Заправьте горючим машину"; break Case 1: output "Отсоедините трубку и продуйте ее";

output "Затем, установите ее на место, попробуйте"; output "завести снова" Case 2: output "Зачистите клеммы шкуркой и попытайтесь"; output "завести машину

вновь"
Case 3: output "Если есть возможность, то замените аккумулятор.";
output "В противном случае вам придется";
output "заводить машину вручную"
Case 4: output "Отправляейтесь в автошколу"
Case 5: output "Попробуйте обратиться в автосервис"
EndTest
RULE: Rl
IF:       fires

THEN: output

input petrol logic with "Поступает ли бензин в карбюратор?" REASON: Если есть искра, то нужен еще и бензин.

COMMENT: Поступает ли бензин в карбюратор.

RULE: R2

 IF:      not fires

THEN: output

input acommulate logic with "Окислены клемы аккумулятора?"

REASON: Если нет искры, то скорее всего окислились клеммы.

COMMENT: Окислился ли аккумулятор.

RULE: R3

IF: not petrol

THEN: output "Есть ли бензин в баке?" input ptrltank logic

REASON: Если бензин не поступает в карбюратор,то он кончился" COMMENT: Нет бензина в баке

лимузина"

RULE:R4

IF: not ptrltank

THEN: reasons="Koнчился бензин в баке" ways=0

REASON: Если нет бензина , то надо заправиться.

COMMENT: Пустой бак.

RULE:R5

IF: ptrltank

THEN: reasons="3acopилacь трубка бензонасоса" ways=1

REASON: Если бензин в баке есть ,а в карбюраторе его нет, то надо прочистить трубки.

COMMENT: Засорились каналы подачи бензина RULE:R6

IF: acommulate

THEN: reasons=" Плохой контакт цепи зажигания с аккумулятором" ways=2

REASON: Если окислены контакты то их надо зачистить.

COMMENT: Плохой контакт аккумулятора с проводкой.

RULE:R7

IF: not acommulate

THEN: output "Аккумулятор выработал свой ресурс?" input lowenergy logic

REASON: Если нет искры и контакт в порядке, то скорее всего

 Ваш аккумулятор пришел в негодность. COMMENT: Ресурс аккумулятора.

RULE:R8

IF: lowenergy

THEN: reasons="Baш аккумулятор стал непригодным." ways=3

REASON: Если сел аккумулятор, то его надо менять, либо заводить машину ~ручкой~.

COMMENT: Сел аккумулятор.

RULE:R9

IF: not lowenergy

THEN: output "Умеете ли вообще водить машину" input kolum logic

REASON: Если вы не умеете водить машину ,то сначала научитесь.

COMMENT: Не умеешь водить.

RULE: R10

IF: not kolum

THEN: reasons="MHe жаль.Но вы не умеете водить машину. ways=4

REASON: Надо научиться

COMMENT: He умеешь водить

RULE: R12 IF: kolum THEN: output

output "Заведена ли машина "

input lowenergy logic with "He завел машину?"

output

output "Проверьте бензин"

input petrol logic with "Нет бензина?"

output

output "Проверьте клемы"

input accommulate logic with "Окислены клемы?" REASON: Может нет бензина. СОММЕNT: Поступает ли бензин.

VAR: fires

LABEL: Наличие искры в блоке зажигания

VAR: ways

FIND: reasons="Причина появления неполадок неизвестна" ways=5

LABEL: Способ устранения неполадок.

END:

В данном варианте предусмотреть изменения, учитывающие ситуации:

 а)      автомобиль заводится, но не едет;

 б)      автомобиль заводится, едет, но не туда, куда его направляет водитель.

Вариант 2

GOAL: ways

INITIAL: clear release variable

e.lstr=250                      /* максимальная длина строки */

output " После окраски поверхности водными красками могут*/

output" проявиться дефекты."

output " мы постараемся дать вам совет по их устранинию и "

output " причинам появления."

output " но для этого вы должны предоставить мне всю "

output " информацию."

output "                           итак начнем..."

defects=true

output " появились ли дефекты на окрашенной поверхности ?"

input defects logic

DO: clear output reasons output

output " Вот что вам следует сделать в данной ситуации " output Test ways

Case 0: output "Пойдите отдохните, у вас все в порядке."

       Case 1: output "Попробуйте обратиться к более опытному";

        output "специалисту."

       Case 2: output "Очистить поверхность от слоя краски со";

                     output "шпаклевкой. Промыть 5%-м раствором";

                    output "кальцевой соды, нейтрализовать поверхность";

                    output "5%-м раствором соляной кислоты"; output "и вновь окрасить"

      Case 3: output "Вырубить штукатурку на участке пятна,"; output "вновь оштукатурить и окрасить."

Case 4: output "Попробуйте обратиться к более опытному специалисту."

Case 5: output"";

output "Удалить старый набел, и промыть 3%-м";

output "раствором соляной кислоты и если пятна";

output "не велики, отгрунтовать меднокупоросной";

output "грунтовкой без мела, а при больших";

      output "размерах щелочным или канифольным лаком."

     Case 6: output "Промыть поверхность и окрасить из "

     Case 7: output "Попробуйте обратиться к более опытному специалисту"

 

 EndTest

RULE: Rl IF: defects THEN: output

input circle logic with " эти дефекты-пятна?" REASON-.если есть дефекты,то скорее всего это пятна. COMMENT: являются ли дефекты пятнами.

 RULE: R2 IF: not defects THEN:

reasons="Bce сделали правильно."

ways=0 REASON: если нет дефектов то ничего делать не нужно.

 comment: нетдефектов-отдыхай.

RULE: R3 IF: not circle THEN: output

input lines logic with "эти дефекты-полосы?"

REASON:eсли дефекты не пятна, то скорее всего это полосы.

comment:являются ли дефекты полосами.

 RULE: R4 IF: circle THEN: output

input fatcrcl logic with "это жирные пятна?"

REASON: если дефекты-пятна ,то скорее всего это жирные пятна.

соmment: являются ли пятна жирными.

 RULE: R5 IF: fatcrcl THEN: output

output"окрашенная поверхность является"

output"штукатуркой? "

input sfcshtkr logic

output REASON: если пятна жирные то важно знать какая поверхность окраш. comment:на штукатурке жирные пятна.

 RULE: R6 IF: not sfcshtkr THEN: output

       output "окрашенная поверхность является "

       output" железобетонной?"

input sfcsteel logic

 

REASON:eсли жирные пятна то важно знать как поверхность окраш. COMMENT: на железобетоне жирные пятна.

 

 RULE: R7 IF: not sfcsteel THEN: output

reasons=" причина появления этих пятен мне неизвестна"

ways=l REASON:eсли жирные пятна появились на какой-то другой поверхности,то ничего

путного посоветовать вам я не могу COMMENT: жирные пятна на незарезервированной поверхности

RULE: R8

IF: sfcsteel

THEN: reasons="Ha железобетоне следы масел от смазки" ways=2

REASON: если жирные пятна на железобетоне ,то эта проблема вполне разрешима.

COMMENT: способ устранения жирных пятен на железобетоне.

RULE: r9

IF: sfcshtkr

THEN: reasons="Ha штукатурке остались пятна невысыхающих масел" ways=3

REASON: если жирные пятна на штукатурке,то эта проблема вполне разрешима.

COMMENT: способ устранения жирных пятен на штукатурке.

 RULE: rlO IF: not fatcrcl THEN: output

output"это желтые ржавые пятна?"

input rsvcrcl logic REASON: если дефекты не жирные пятна, то скорее всего это ржавые пятна. СОММЕNT:являются ли пятна ржавыми.

RULE:rll

IF: rsvcrcl

THEN: reasons="причина появления этих пятен мне не известна" ways=4

REASON:eсли появились какие-то другие пятна,то ничего путного посоветовать вам я не могу.

COMMENT: какие-то незарезервированные пятна на поверхности.

RULE: rl2

IF: rsvcrcl

THEN: reasons="происходит просачивание смолистых веществ че- reasons=rreasons+"pe3

штукатурку и краску"

ways=5 REASON:если жирные пятна на штукатурке , то эта проблема вполне разрешима. COMMENT: способ устранения жирных пятен на штукатурке.

RULE: rl3 IF: lines THEN:

reasons="Плoxo растушеван колер"

ways=6 REASON: если полосы на окрашенной поверхности , то эта проблема вполне разрешима. COMMENT: способ устранения полос.

RULE: rl4 IF: not lines

THEN: reasons="причина дефектов мне не известна" ways=7

REASON: если появились какие-то другие дефекты то ничего путного я вам посоветовать не могу.

COMMENT:какие-то незарезервированные дефекты на поверхности.

VAR: defects

label: наличие дефектов на окрашенной поверхности.

END:

В данном варианте необходимо предусмотреть изменения учитывающие ситуации:

 а)      появление пузырей на окрашенной поверхности;

 б)      отслаивание краски после высыхания.

Вариант 3

GOAL: d

INITIAL: clear release variable e.lstr=250

output " ДЕНЬ ДОБРЫЙ." output" Мы

постараемся дать "

output " вам совет, как из имеющихся продуктов сделать нечто " output " съедобное. Но для этого вы

должны предоставить мне " output " всю информацию."

output" И так, начнем..."

meatexst="Y"

output " Скажите,вы нашли в холодильнике мясо (Y/N) ?"

input meatexst str using "a"

DO: clear

output " Вот что мне кажется приемлемым в данной ситуации." output Test d

    Case 0: output "Лучше отправляйтесь в ресторан, ибо", output "без мяса нормального

обеда не получится"

Case 1: output "Лучше всего возьмите этот      кусок мяса,";

output "отбейте, нашпигуйте. Затем возьмите сковородку";

output "и жарьте на медленном огне."

Case 2: output "Варите украинский борщ."

Case 3: output "Мяса очень мало, чтобы приготовить первое";

                         output "или второе, но может быть его хватит"; output "на мясной салат"

       Case 4: output "Свалите все в одну кучу, затем мелко"; output "покрошите, если сам

повезет, то все"; output "будут довольны"

       Case 5: output "Ничего не могу посоветовать"

EndTest

RULE: Rl

IF: (meatexst<> "Y" or meatexst<> "y")

THEN: output" Извините,вы вегетарианец (Y/N) ?" input v str using "a"

RULE: R2

IF: (meatexst<> "Y" or meatexst<> "y") and (v<>"y" or v<>"Y")

THEN: d=0

RULE: R3

IF: v="y" or v="Y"

THEN: output

output "Ну,раз вы вегетарианец,то ,наверное овощей "

output "у вас навалом (Y/N) ?"

input vag str using "a"

RULE: R4

 IF: meatexst="y" or meatexst="Y" THEN: output

output "Сколько грамм мяса вы имеете ?"

input hm num using "nnnn"

output

output "На сколько персон задуман ваш обед ?"

input hf num using "n"

RULE: R5

IF: meatexsto"Y" or meatexst<>"y''

THEN: output

output "Извините,а вы вегетарианец (Y/N) ?" input v str using "a" RULE: R6 IF: hm/hf>300 THEN: d=l RULE: R7

 IF: (hm/hf>80) and (hm/hf<=300) THEN: eme=true RULE: R8 IF: erne THEN: output "  Мясо - это залог успеха ."

output " Имеется ли в вашем распоряжении капуста (Y/N) ?"

input ks str using "a"

input sv str using "a" with " свекла (Y/N) ?"

input po str using "a" with " картофель (Y/N) ?" RULE: R9

IF: (ks="y" or ks="Y") and (sv="y" or sv="Y") and (po="y" or po="Y") THEN: d=2 RULE: R10 IF: hm/hf<=80 THEN: eme=false RULE: Rll IF: not erne THEN: d=3 RULE: R12 IF: vag="Y" or vag="y" THEN: d=4 VAR:D FIND: d=5 LABEL:  Как поступить если нужно приготовить обед.

VAR: MEATEXST

LABEL: Наличие мяса в вашем холодильнике.

VAR: EME

LABEL: Достаточно ли мяса для одного из первых блюд.

VAR:HM

LABEL: Примерный вес куска мяса.

VAR:HF

LABEL: Количество персон,приглашенных на обед.

VAR: KS

LABEL: Есть ли в доме капуста.

VAR: SV

LABEL: Есть ли в доме свекла.

VAR: PO

LABEL: Есть ли в доме картофель.

VAR: V

LABEL: Являетесь ли вы вегетарианцем.

END:

В данном варианте необходимо предусмотреть изменения, учитывающие ситуации:

 а) наличие в холодильнике сыра;

 б) наличие в холодильнике мяса.

Вариант 4

GOAL: whattodo

INITIAL: clear release variable e.lstr=250

output "Добрый день."

output "У вас сегодня экзамен, а вы проснулись слишком поздно..." output "Вам,

естественно,надо успеть на него, но как?" output "Мы постараемся дать вам совет, как, исходя

из сложившейся" output "ситуации, Вам следует поступить.Но для этого Вы должны" output

"представить мне всю информацию.И так, начнем..." output

lating="Y"

output "Скажите, Вы действительно опаздываете (Y/N)?"

input lating str using "a"

output "Какую оценку Вы хотите получить?"

input mar num using "n"

DO: clear

output "Вот что мне кажется приемлемым в данной ситуации." output

Test whattodo

Case 0: output "Берите такси до института. В такой";

output "ситуации деньги

значения не имеют."

Case 1: output "На очень важный экзамен не стоит слишком"; output "спешить. Вам

простят ваше опоздание. Так";  

                   output "что спокойно поезжайте на

общественном" ;

        output "транспорте."

       Case 2: output "Все еще будет хорошо. Вам стоит взять";

                     output "такси на часть пути, до какого-нибудь" ;

        output "метро или автобусной остановки"

Case 3: output "Все в порядке. Желаю вам ни пуха ни пера";

Case 4: output "Наверное, вы хорошо учитесь. Так что може-"

        output "те не спешить на экзамен."

       Case 5: output "Я не знаю, что вам посоветовать."

                 EndTest

RULE: Rl

IF: mainexam and biglate

THEN: whattodo=0

RULE: R2

IF: not mainexam

THEN: whattodo=l

RULE: R3

IF: not biglate and mainexam

THEN:

RULE: R4

IF: onlyge4

THEN: mainexam=false

RULE: R5

IF: veroyatn >= 90

THEN: mainexam=false

RULE: R6

 

IF: (veroyatn <90) and not onlyge4

THEN: mainexam=true

RULE: R7

IF: lating<>"Y"

THEN: whattodo=3

RULE: R8

IF: howcommon<onwalk+bymetro+bybus+l 5

THEN: biglate=true

RULE: R9

IF: howcommon >= onwalk+bymetro+bybus+15

THEN: biglate=false

VAR: whattodo

FIND: whattodo=4

LABEL: совет как действовать в данной ситуации.

VAR: mainexam

LABEL: предстоящий экзамен - важный.

VAR: biglate

LABEL: текущее опоздание - значительное.

VAR: lating

LABEL: Вы реально опаздываете.

VAR: howcommon

FIND: output

output "Сколько минут Вам добираться до института"

output "общественным транспортом?"

input howcommon num using "nnn" LABEL: время пути до института. VAR: onwalk FIND: output

output "Сколько минут Вам приходится идти пешком?"

input onwalk num using "nn" LABEL: Время вашего передвижения. VAR: bymetro FIND: output

output "Сколько минут вам приходится проводить в метро?"

input bymetro num using "nnn" LABEL: Время проезда в метрополитене. VAR: bybus FIND: output

output"Сколько времени вам приходится проводить в автобусе?"

input bybus num using "nnn" LABEL: Время проезда в автобусе,тролейбусе,трамвае. VAR: onlyge4 FIND: output

output''Ha предстоящем экзамене не ставят меньше 4?"

input onlyge4 logic LABEL: На предстоящем экзамене не ставят меньше 4. VAR: veroyatn FIND: output

       output " Какова объективная вероятность получения вами" "желаемой оценки?" veroyatn num using "nn" LABEL: Объективная вероятность получения вами желаемой оценки

В данном варианте необходимо предусмотреть изменения, учитывающие ситуации:

а) свое плохое самочувствие (болезнь);

  б) возможность позвонить экзаменатору в аудиторию, где проходит экзамен (предупредить).

 

Вариант 5

GOAL: youhouse INITIAL: clear release variable        e.lstr=250

output "Добрый день."

output "Мы постараемся дать вам совет с помощью, которого"

output "вы сможете определить, хватит ли вам стройматери-"

output "алов на постройку дома."

output "Итак, начнем..."

sqrlaud=0

output "Сколько соток земли находится в вашем владении?"

input sqrlaud num using "nn"

clear

output "Вот что мне кажется приемлемым в данной ситуации."

Test youhouse

Case 0: output "Для вашего участка такая площадь" output "этажа не подходит."

Case 1: output "Вам не хватает кровельного материала" output "для того что бы накрыть свой дом." output "Вам нужно еще подкупить его, либо" output "пересмотреть проект."

Case 2: output "Вы имеете почти все необходимое" output "и если вы приложите достаточно" output "усилий, то у вас будет свой домик."

Case 3: output "Такие дома строить не надо. Не дразните" output "соседей, ведь они простые смертные." output "Поджечь могут..."

EndTest RULE: Rl IF: sqrland<10 THEN:        enoughland=false

 

RULE: R2

IF: sqrland>=10

THEN: enoughland=true

RULE: R3

IF: enoughland

THEN: output "сколько этажей в доме будет ?" input howflors num using "nn"

       output "какова площадь одного этажа (кв. м.) ?"

       input howsqr num using "nn"

RULE: R4

IF: howsqr>sqrland*5

THEN: rightsqr=false

RULE: R5

IF: howsqr<=sqrland*5

THEN: rightsqr=true

RULE: R6

IF: not rightsqr

THEN: youhouse=0

RULE: R7

IF: howflors<=2

THEN: rightflors=true

RULE: R8

IF: howflors>2

TEEN: rightflors=false

 

RULE: R9

IF: rightflors and rightsqr

THEN: output

output "сколько тыс. шт. кирпича вы приготовили для "

output "строительства ?"

input howbloks num using "nn"

RULE: R10

IF: howbloks<howbloks*howsqr*3

THEN: enoughbloks=false

RULE: Rl1

IF: howbloks>=howbloks*howsqr*3

THEN: enoughbloks=true

RULE: R12

IF: not enoughtbloks

THEN: enoughbloks=true

RULE: R13 IF: enoughbloks

THEN: output "Сколько кв. м. шифера или другого" output "кровельного материала вы имеете?"

       input howshifer num using "nn"

RULE: R14

IF: howshifer>=howsqr* 1.2

THEN: enoughshifers=true

RULE:R15

IF: howshifers<howsqr* 1.2

THEN: enoughshifers=false

RULE: R16

IF: not enoughshifers

THEN: youhouse=l

RULE: R17

IF: enoughshifers and enoughbloks and enoughland THEN: youhouse=2

RULE:R18

IF: not rightfors

THEN: youhouse=3

VAR: SQRLAND

LABEL: площадь вашего участка

VAR: ENOUGHLAND

LABEL: достаточно ли площади вашего участка

VAR: HOWSOR

LABEL: площадь одного этажа в доме

VAR: HOWFLORS

LABEL: количество этажей в доме

VAR: RIGHTSQR

LABEL: соответствие площади этажа площади дома

 

VAR: RIGHTFLORS

LABEL: возможность постройки дома с такой этажностью

VAR: HOWSHIFERS

LABEL: количество кровельного материала (кв. м.)

VAR: ENOUGHSHIFERS

LABEL: достаточно ли кровельного материала

END: В данном варианте предлагается предусмотреть изменения учитывающие ситуации:

 а)      возможность заказать строительство дома строительной организации;

 б)      необходимость постройки гаража.

 

Вариант 6

GOAL: ways

INITIAL: clear release variable e.lstr=250

output "Паяльник неисправен,"

output "попробуем его исправить, итак"

output

temperat=true

output "паяльник недостаточно разогрелся"

input temperat logic

DO: clear output reasons output "Делать  надо следущее" output ways

RULE: Rl

 IF:    temperat

THEN: output

output "После включения паяльник нагрелся ?"

input lowtemp logic REASON: если недостаточно нагрелся до какой температуры ? COMMENT:нагрелся ли паяльник хоть немного

RULE: R2

 IF:    not temperat

THEN: output

output "После включения паяльник перегрелся ?"

input hightemp logic REASON: если перегрелся ,то это межвитковое замыкание COMMENT:перегрелся ли паяльник

RULE: R3

 IF:    not lowtemp or hightemp

THEN: output

output "В порядке ли напряжение в сети ?"

input power logic REASON: если паяльник не нагрелся вообще или перегрелся, то скорее всего

 неисправна сеть COMMENT: напряжение в сети

RULE: R4

 IF:    lowtemp

THEN: output

output "He слышно ли потрескивания в паяльнике или соед. шнуре ?"

input noice logic REASON: если паяльник недостаточно нагрелся то скорее всего разрыв в цепи питания или

нагревательного элемента COMMENT:слышен ли треск ?

RULE: R5

 IF:     not hightemp and not temperat

THEN: reasons="Паяльник нагрелся нормально" ways="идите спать"

COMMENT: Нет дефектов

RULE: R6

 IF:    not power

THEN: output

reasons="Паяльник не причем"

ways="POWER ON"

REASON: Если нет напряжения, сделайте чтобы оно было COMMENT:Нет напряжения в сети

RULE: R7

 IF:    power and not lowtemp

THEN: output

output "В порядке ли шнур питания ?"

input cabel logic

REASON: Если напряжение в порядке, то виноват шнур COMMENT:В порядке ли шнур питания

RULE: R8

 IF:    power and hightemp

THEN: reasons="Произошло замыкание" ways="Перемотать витки

 или отдать в ремонт"                                                          

REASON: Если сетевое напряжение в порядке, то произошло межвитковое замыкание COMMENT:KopoTKoe замыкание

RULE: R9

 IF:    noice

THEN: cabel=false

REASON: Если слышен треск, то не в порядке шнур питания

COMMENT:Слышен треск

RULE: R10

IF:     not noice

THEN: reasons="Источник питания не подходит" ways="Пoдключитe прибор к

 источнику питания" REASON: COMMENT: Несоответствует источник питания

 RULE: R11

 IF:    not cabel

THEN: reasons="'Износился шнур питания или вилка" ways="Заменить шнур

 питания или вилка" COMMENT: Износился шнур питания

 RULE: R12
 IF:    cabel


THEN: reason=" Причина неполадок мне неизвестна" ways="Обратитесь к более опытному специалисту"

VAR: temperat

LABEL: Паяльник разогрелся недостаточно

VAR: ways

FIND: reasons="Причина поломок неизвестна" ways="Обратитесь к

специалисту"

LABEL: СПОСОБ УСТРАНЕНИЯ НЕПОЛАДОК END:

В данном варианте предусмотреть изменения, учитывающие ситуации:

 а)      поломку жала паяльника;

 б)      очень длительное нагревание паяльника.

Вариант7 GOAL: computer

INITIAL: clear release varible e.lstr=250 output"Добрый день!" output"Представьте мне всю информацию" Power true output"Загорелся ли индикатор питания?" input Power logic

DO:

clear

output" Вот что я вам скажу "

output                                                                                        

Test computer

Case 0: output"Проверьте напряжение в сети"; output" или почините блок

 питания и"; output"попробуйте еще раз." Case 1: output"'Проверьте напряжение в сети."; output"Включите дисплей и попробуйте еще

 раз." Case 2: output"Вам следует вставить в дисковод системную"; output"дискету и перезагрузить

компьютер."

Case 3: output"Вам лучше вызвать мастера." Case 4: output"Проверьте содержимое файлов" output"autoexec.bat и config.sys и"

output" если там все в порядке, перезапишите ОС" EndTest

 RULE: RI IF: Power THEN: output

output"Ну хоть питание в порядке, и то хорошо!"

output"Исправен и правильно ли подключен дисплей?"

input disp logic

REASON: Если в порядке питание, то в порядке ли дисплей? COMMENT: Для того что бы что-то увидеть, необходимо уст­ройство отображения информации.

RULE: R2

IF: not Power

THEN: output computer=0


REASON: Если нет питания, то необходимо его обеспечить. COMMENT: Необходимо нормальное питание.

RULE: R3

IF: not displ

THEN: output computer=l

REASON: He работает дисплей. Необходимо чтобы он работал.

COMMENT:Без работающего дисплея - не жить.

RULE: R4

IF: displ

THEN: output"Есть ли у вашего компьютера жесткий диск?" input harddisk logic

REASON: Если питание в порядке, то надо знать, подключен ли жесткий диск.

COMMENT: Подключен ли жесткий диск.

RULE: R5

IF: harddisk

THEN: output "Происходит обращение к диску (индикатор горит)?" input HDtest logic

REASON: Если установлен "винчестер", то проверим подключение.

COMMENT: Если "винт" на месте, то замечает ли его система.

RULE: R6

IF: not harddisk

THEN: output"Установлены ли на вашей машине дисководы ?" input diskete logic

REASON: Если нет "винта", то дисководы на машине установлены?

COMMENT: Есть ли дисководы.

RULE: R7

IF: not HDtest

output" Установлены ли на вашей машине дисководы"
output"гибких дисков (I или более)?"                                     

THEN: input diskete logic

REASON: Установлены ли дисководы на машине?

COMMENT: Есть ли дисководы.

RULE: R8

IF: HDtest

THEN: output"Выдается ли сообщение об ошибке чтения" output""винчестера"?"

input HDerror logic

REASON: Без ошибок ли проходит операция тестирования. COMMENT: Наличие ошибок тестирования диска.

RULE: R9

IF: HDerror

THEN: output"Установлены ли на вашей машине дисководы" output"гибких дисков (1

или более)?"

input diskete logic COMMENT: Есть ли дисководы

RULE: R10

IF: diskete

THEN: computer=2

REASON: Если "винт" не в порядке, то следует использовать гибкий диск для загрузки системы.

COMMENT: Следует использовать гибкий диск для загрузки системы.

RULE:R11


IF: not diskete

THEN: computer=3

REASON: Если не работают (отсутствуют) диск и дисководы, то не стоит пытаться

перезагрузить машину.

COMMENT: He работают диск и дисководы, следовательно, не стоит пытаться перезагрузить машину.

RULE: R12

IF: not HDerror

THEN: computer=4

REASON: Если нет ошибки чтения "винчестера", то все еще можно исправить, лишь бы

дисковод гибких дисков

 был исправен. COMMENT: Нет ошибки чтения "винта".

VAR: Power

LABEL: Срабатывание световой индикации при включении компьютера.

END:

 В данном варианте предлагается предусмотреть изменения, учитывающие ситуции: а) неисправность клавиатуры компьютера; в) неисправность манипулятора типа "мышь".

Вариант 8

GOAL: ways

INITAL: clear release varialle e.lstr=25O output

"Добрый день"

output "Для получения совета, необходимо" output "ответить на все вопросы."

gunsdef=true

output "При работе пистолета появились дефекты (Y/N)?" input gunsdef sr using "a"

DO: clear

output "Вот что я вам скажу!" output

Test ways

Case 0: output"У вас все в порядке."

Case 1: output"3acopeHa сетка резервуара,"; output"или недостаточный уровень краски"; output"B баке."; output"Прочистите сетку, либо добавьте"; output"краску в бак."

Case 2: output"У вас либо слабое давление на краску,"; output"либо слишком густая краска,"; output"либо неплотно прижат воздухопровод."; output"Отрегулируйте давление, либо разбавьте"; output"KpacKy растворителем, либо"; output"закрепите воздухопровод." Case 3: output"Мало воздуха или загрязнено"; output"отверстие сопла" Case 4: output"Загрязнен кончик иглы,"; output"либо сработалось сальниковое";

output" уплотнение иглы, либо недостаточная"; output"подача краски." Case 5: output"Сработалась игла сопла, либо"; output"игла не закрывает отверстие

 сопла."; output"Необходимо протереть или сменить иглу." Case 6: output"Причина этих неполадок мне не известна."; output"Попробуйте обратиться

 в мастерскую." EndTest

RULE: Rl

IF: gunsdef="Y" or gunsdef="y"

THEN: output "Что-то неладно со струей краски (Y/N)?" input drops str using "a"

REASON: Если есть дефекты, то скорее всего они связаны со струей краски.


COMMENT: Связаны ли дефекты со струей.

RULE: R2

IF: gunsdef<>"Y" and gunsdef<>"y"

THEN: output ways=0

REASON: Если нет дефектов, то ничего делать не нужно. COMMENT: Нет дефектов -

отдыхай.

RULE: R3

IF: notkrask="Y" or notkrask="y"

THEN: ways=l

REASON: Если совсем не поступает краска в краскопульт, то эта проблема вполне

разрешима.

COMMENT: Способ устранения неполадок, связанных с непоступлением краски в пистолет.

RULE: R4

IF: drops="Y" drops="y"

THEN: output

output "Слабый распыл струи?"

input lowfluct str using "a"

REASON: Если дефекты связаны со струей, то скорее всего это слабый распыл. COMMENT: Слабый ли распыл струи.

RULE: R5

IF: (drops="Y" or drops="y") and lowluct<>"Y" and lowfluct<>"y"

THEN: output

output" Слишком разбросанная струя, сильное"

output" туманообразование?"

 input highfluct str using "a"                                                     

REASON: Если дефекты связанные со струей и струя не слабая, то скорее всего слишком

 сильный распыл. COMMENT: Сильный ли распыл струи.

RULE: R6

IF: (drops="Y" or drops="y") and

 (harddrops="Y" or harddrops="y") THEN: ways=2 REASON: Если струя краски подается резкими толчками, то эта проблема вполне

разрешима.

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

RULE: R7

IF: (drops="Y" or drops="y") and

 (lowfluct="Y" lowfluct="y") THEN: ways=3

REASON: Если струя краски имеет слабый распыл, то это проблема вполне разрешима. COMMENT: Способ устранения неполадок, связанных со слабым распылом струи краскопульта.

RULE: R8

IF: (drops="Y" or drops="y") and

 (higfluct="Y"orhifluct="у") THEN: ways=4 REASON: Если струя краски имеет сильный распыл, то эта проблема вполне разрешима.


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

RULE: R9

IF: not (drops="Y" or drops="y") and (badklap="Y" or badklap="y") THEN: ways=5 REASON: Если неполадки состоят в протечке краски при закрытом клапане, то эта

проблема вполне разрешима.

COMMENT: Способ устранения неполадок, связанных с протеканием краски при закрытом клапане.

VAR: gunsdef

LABLE: Наличие дефектов пистолета - краскопульта.

VAR: notkrask

FIND: output "Краска совсем не подается в пистолет (Y/N)?" input notkrask str using "a"

LABEL: Подача краски в пистолет.

VAR: harddrops

FIND: output "Наблюдаются резкие толчки и пульсация" output "струи (Y/N)?"

input harddrops str using "a" LABEL: Струя пульсирует и бывают резкие толчки.

VAR: BADLAP

FIND: output "Краска проходит при закрытом клапане (Y/N)?" input dabklap str using "a"

LABEL: Негоден клапан пистолета.

VAR: ways

FIND: ways=6

LABEL: Способ устранения неполадок.

END:

В данном варианте предлагается предусмотреть изменения, учитывающие ситуацию:

 Наличие дефекта в пистолете, не связанного со струей (не нажимается кнопка приведения пистолета в действие, или краска вытекает из пистолета через какие-то щели, но не через сопло).

 

Вариант 9

GOAL: howrest

INITIAL: clear ulease variable e.lstr=250

output "Добрый день.";

output "Мы постараемся дать вам совет,"; output "как при вашем финансовом

положении"; output "отпуск."

finance=0

output "Какую сумму вы могли бы потратить?" input finance num

DO: clear

output "Вот что приемлено в данной ситуации:" Test howrest Case 0: output "Вы можете приобрести каждому";

output "по путевке в санаторий на побережье"; output "какой-либо реки, озера или водохранилища." Case 1: output "Вы можете приобрести каждому";

output "по путевке на побережье черного моря."


Case 2: output "Вы можете приобрести каждому по"; output "путевке на

Канарские острова"; output "или двухнедельный круиз." Case 3: output "Вам стоит подумать об отдыхе в лесу или"; output "горах, для такого

отдыха у вас"; output "средств достаточно." Case 4: output "Следует подумать либо о сокращении"; output "числа отдыхающих за

ваш счет,"; output "либо об увеличении суммы на отдых."

Case 5: output "На такую сумму можно отдохнуть"; output "только дома или на даче." Case 6: output "В таком финансовом положении вам";

output "стоит остаться дома и, возможно, разок-";

output "другой сходить в кафе "мороженое"." EndTest

RULE: Rl

IF: (finance/acount)>=5000 and (finance/acount)<9000

THEN: howrest=0

RULE: R2

IF: (finance/acount)>=9000 and (finance/acount)<90000

THEN: howrest=l

RULE: R3

IF: (finance/acount)>=90000

THEN: howrest=2

RULE: R4

IF: (finance/acount)<5000 and (finance/acount)>=3000

THEN: howrest=3

RULE: R5

IF: finance>3000

THEN: output

output "А сколько человек будут отдыхать за ваш счет?"

input acount num ising "nn"

RULE: R6

IF: (finance/acount)<3000

THEN: howrest=4

RULE: R7

IF: (finance/acount)<=3000 and finance> 1000

THEN: output "Простите за бестактный вопрос, вы" output "женаты (замужем) (Y/N)?" input wife str using "a"

RULE: R8

IF: (wife="Y") or (wife="y")

THEN: output "Вы проведете отпуск вместе ? (Y/N)" input withwife str using "a"

RULE: R9

IF: (withwife="Y") or (withwife="y")

THEN: howrest="На такую сумму на двоих можно отдохнуть" howrest=howrest+''только сидя дома или на даче."

RULE: R10

IF: finance<=1000

THEN: howrest=5


 RULE: Rll

IF: wife<>"Y" or wife<>"y" or withwife<>"Y" or withwife<>"y"

THEN: output "Вы хотели бы выбраться на природу? (Y/N)" input townout str using "a"

RULE: R12

IF: townout="Y" or townout="y"

THEN: output "Вам нравится отдых в лесу? (Y/N)" input forest str using "a"

RULE: R13

IF: (townout="Y" or townout="y") and forest<>"Y" and forest<>"y"

THEN: output"Вам нравится отдых в горах? (Y/N)" input mountain str using "a"

RULE: R14

IF: (townout="Y" or townout="y") and mountain<>"Y" and mountain<>"y"

THEN: howrest=6

RULE: R15

IF: forest="Y" or forestry"

THEN: howrest=7

RULE: R16

IF: mountain="Y" or mountain="y"

THEN: howrset=8

RULE: R17

IF: townout<>"y" or townout<>"Y"

THEN: howrest=9

VAR: finance

LABEL: Сумма, которую вы готовы потратить на отдых.                         

END:

В данном варианте предлагается предусмотреть изменения, учитывающие:

 а)      возможность подзаработать за некоторое время отпуска и потратить заработанное на отпуск.

 б)      возможность одолжить деньги на проведение отпуска.


Дата добавления: 2018-09-22; просмотров: 272; Мы поможем в написании вашей работы!

Поделиться с друзьями:




Мы поможем в написании ваших работ!