Требования к совместимости с веб-браузерами
Данный метод производит проход в глубину, и идет от корневого узла, до конечного листа. В узлах находится вопросы, метод выводит вопрос и в зависимости от ответа пользователя производиться переход к следующему узлу, и так происходит до тех пор, пока не дойдет до листа, в котором хранится вывод. Также существует метод why (почему) это обратный рекурсивный метод, который идет от узла или листа… Читать ещё >
Требования к совместимости с веб-браузерами (реферат, курсовая, диплом, контрольная)
Образовательные модули должны быть совместимы как минимум с наиболее распространенными на сегодняшний день веб-браузерами:
- * Mozilla Firefox 3.6 и выше;
- * Microsoft Internet Explorer 8 и выше;
- * Google Chrome 10 и выше;
- * Apple Safari 5 и выше.
Далее в документе под термином «браузер» понимается любой из названных браузеров.
При использовании плагинов веб-браузеров для воспроизведения образовательного контента необходимо удостовериться, что плагины для данного контента существуют в открытом доступе для указанных браузеров и функционируют под операционными системами.
Содержимое ИОМ должно воспроизводиться единообразно при использовании различных сочетаний браузеров и операционных систем.
ПРИЛОЖЕНИЕ
Лабораторная работа № 1
Создание интерфейса ЭС.
Цель работы: построить интерфейс для вывода и ввода необходимой для работы ЭС информации (вывод вопросов ЭС к пользователю, ввод в систему ответов пользователя, вывод решений ЭС); организовать работу решателя с данными, вводимыми с интерфейса; создать компьютерную программу, реализующую диалог пользователя с экспертной системой и работу решателя на основе ответов пользователя.
1.1. Краткие общие сведения по созданию Интерфейса пользователя Для реализации Интерфейса пользователя необходимо организовать диалог пользователя с ЭС. Возможен выбор ответа на экране монитора из списка предложенных ответов с использованием графического оконного интерфейса и «мышки» или ввод ответа с клавиатуры («да-нет», цифры 1, 2, …, L), которым соответствует один из альтернативных ответов.
Единственное, но очень важное требование к интерфейсу пользователя — взаимодействие с ЭС должно быть удобным для пользователя.
При выборе ответа на вопрос ЭС или после принятого ЭС решения пользователю бывают нужны разъяснения. Для поддержки и помощи пользователю в таких случаях в Интерфейсе необходимо предусмотреть кнопку «?Помощь». Нажав на неё, пользователь сможет получить развернутое объяснение от Блока объяснений, что имеет в виду ЭС, поставив именно этот вопрос, или как было принято экспертной системой данное решение (детали построения Блока объяснений приведены в Лабораторной N3).
Помимо кнопки «? Помощь», при построении интерфейса экспертной системы необходимо предусмотреть ещё две кнопки: кнопку «Выход" — выход из программы ЭС, и кнопку «Начать сначала«- повторить работу с ЭС.
Эти кнопки нужны для того, чтобы пользователь мог корректно завершить работу с ЭС или, если необходимо, мог повторить цикл работы с экспертной системой, не запуская программу заново.
1.2 Организация диалога пользователя с ЭС Для того чтобы наша экспертная система могла взаимодействовать с пользователем в интерактивном режиме, одной таблицы управления переходами мало, поскольку требуется еще информация о реакциях экспертной системы на ответы пользователя. Реакция же может быть двоякой: ответ (решение) системы или очередной вопрос пользователю. Поэтому для взаимодействия пользователя с ЭС построим Таблицу 2 «Вопросы-Ответы».
В соответствии с этой таблицей и в зависимости от состояния, в котором находится наша экспертная система, на экран монитора будут выводиться вопросы к пользователю или ответы экспертной системы.
Таблица 2. Вопросы-Ответы.
Вопрос: Рассчитываете ли Вы потратить большую сумму денег на покупку фотоаппарата? | ||
Ответ: Нет, я ограничен (а) в бюджете. Вопрос: Что для Вас важнее? | ||
Ответ: Да, я не ограничен (а) в средствах. Вопрос: Умеете ли Вы обращаться с профессиональными фотоаппаратами? | ||
Ответ: Нет, не умею. => Вам подойдут полупрофессиональные фотоаппараты. Вопросов больше нет. | ||
Ответ: Да, есть опыт. Вопрос: Какой у Вас опыт работы с профессиональным фотоаппаратом? | ||
Ответ: Меньше года. => Вам подойдут китовые фотоаппараты. Вопросов больше нет. | ||
Ответ: Больше года. Вопрос: Где Вы предпочитаете фотографировать? | ||
Ответ: В помещении. Вопрос: В студии? | ||
Ответ: На улице, на природе. Вопрос: Что Вам больше нравиться фотографировать? | ||
Ответ: Нет, я не планирую фотографировать в студии. =>Вам подойдут фотоаппараты с внешней вспышкой. Вопросов больше нет. | ||
Ответ: Да, я планирую фотографировать в студии. Вопрос: Вы будите пользоваться специальной аппаратурой? | ||
Ответ: Портреты => Вам подойдут такие фотоаппараты фирмы Canon и Nikon с объективами Canon EF 100 mm f/2, 8, Nikon 50 mm f/1.4G AF-S. Вопросов больше нет. | ||
Ответ: Пейзажи. => Вам подойдут фотоаппараты фирмы Сanon и Nikon с объективами Canon EF-S 10−22 f/3.5−4.5 USM, Nikon Af 80−200mm f/2.8 D. Вопросов больше нет. | ||
Ответ: Люблю все фотографировать. => Вам подойдут фотоаппараты фирмы Сanon и Nikon с объективами CANON EF 28−135 mm f/3.5−5.6, Nikkor 16−85mm f/3.5−5.6G ED. Вопросов больше нет. | ||
Ответ: Нет, только фотоаппаратом. => Вам подойдут такие фотоаппараты как Nikon D90, Canon D500. Вопросов больше нет. | ||
Ответ: Да, хочу максимально задействовать всю технику. => Вам подойдут такие фотоаппараты как Nikon D70, Canon 5D. Вопросов больше нет. | ||
Ответ: Качество изображений. => Вам подойдут фотоаппараты мыльницы с отличным качеством снимков, стоимостью выше 7−8 тыс. руб. Вопросов больше нет. | ||
Ответ: Стоимость. => Вам подойдут обычные фотоаппараты мыльницы. Вопросов больше нет. | ||
Ответ: Наличие видеосъемки. => Вам подойдут такие фотоаппараты, как Nikon Coolpix S3100 Red и проч. Вопросов больше нет. | ||
1.3. Реализация работы решателя в соответствии с ответами пользователя Для того чтобы реализовать работу решателя в соответствии с ответами пользователя, необходимо организовать взаимодействие Таблицы 1 «Управление переходами состояний» и Таблицы 2 «Вопросы-ответы».
Для работы экспертной системы нам в каждый момент потребуется знать, в каком состоянии находится система.
Создадим управляющую ячейку (Таблица 3), в которую будем заносить номер текущего состояния системы. Эта ячейка поможет нам реализовать работу Решателя в соответствии с ответами пользователя.
Таблица 3. Текущее состояние.
Текущее состояние. | |
В начальном состоянии Экспертной системы значение в ячейке равно нулю. Ясно, что должно происходить дальше.
· Из Таблицы 2 «Вопросы и ответы» на экран ЭВМ выводится ВОПРОС, соответствующий текущему состоянию системы.
Пользователь вводит ОТВЕТ (с клавиатуры или мышкой), который сравнивается со всеми возможными для текущего состояния ответами в Таблице 1 «Управление переходами состояний» (сравнивают с ответами, находящимися в столбце «ответ пользователя»).
Выбирают ту строку Таблицы 1, которой соответствует ответ, выбранный пользователем, и в управляющую ячейку (Таблица 3) вносят новое значение «текущего состояния», которое находится в найденной строке в столбце «конечное состояние».
Затем проверяется запись в ячейке «конец поиска». Если поиск не закончен (в ячейке «конец поиска» записан ноль), то цикл «вопрос ЭС — ответ пользователя» продолжается с пункта, обозначенного стрелкой а.
Если в ячейке «конец поиска» записана единица («1» = да, конец поиска), то Экспертная Система выдает на экран РЕШЕНИЕ, соответствующее «текущему состоянию» из Таблицы 2 «Вопросы- Ответы», переходит к Блоку объяснений (об этом будет сказано дальше) и останавливается.
- 1.4. Порядок проведения Лабораторной работы № 2
- 1. Студент выбирает любой способ организации диалога с пользователем (графический оконный интерфейс и «мышку» для выбора возможных ответов, вв3од ответа с клавиатуры в соответствии с одним из возможных альтернативных ответов, и т. д.).
- 2. Предусматривает в интерфейсе кнопку «? Помощь» для поддержки пользователя при выборе им ответа на запрос ЭС и объяснения принятых ЭС решений, а также кнопку «Выход» для выхода из программы, и кнопку «Начать сначала» для повторения цикла работы с ЭС.
- 3. Студент строит Таблицу 2 «Вопросы-Ответы» и Таблицу 3 «текущее состояние» системы.
- 4. Создает программу, которая организует вывод на интерфейс вопросов и ответов из Таблицы 2 «Вопросы-Ответы».
- 5. Создает программу, обеспечивающую цикл перехода системы в новое состояние в зависимости от ответа пользователя, и выдачу нового вопроса пользователю или ответа ЭС в зависимости от текущего состояния системы (реализация взаимодействия Таблицы 1, Таблицы 2 и Таблицы 3).
- 6. Отлаживает программу, реализующую интерфейс пользователя и взаимодействие пользователя с ЭС.
- 7. Показывает и вместе с преподавателем уточняет интерфейс пользователя.
- 1.5. Контрольные вопросы к Лабораторной работе № 1
- 1. Как можно организовать интерфейс пользователя?
- 2. Что необходимо учесть при построении интерфейса?
- 3. Каким требованиям должен удовлетворять интерфейс пользователя?
- 4. Как организовать работу Экспертной системы, чтобы учесть ответы пользователя на вопросы ЭС?
- 5. Что значит «удобный» интерфейс пользователя?
Приложение к лабораторной работе № 1.
Пример кода:
public class BinaryTree {.
private BinaryTree parent;
private BinaryTree yes;
private BinaryTree no;
private String question;
private String answer;
private boolean isEnd;
public BinaryTree (BinaryTree parent) {.
this.parent = parent;
}.
public BinaryTree setQuestion (String question) {.
this.question = question;
return this;
}.
public String getQuestion () {.
return question;
}.
public BinaryTree getParent () {.
return parent;
}.
public BinaryTree setAnswer (String answer) {.
this.answer = answer;
setEnd ();
return this;
}.
public String getAnswer () {.
return answer;
}.
public BinaryTree getYes () {.
if (isEnd) return null;
if (yes == null) {.
yes = new BinaryTree (this);
}.
return yes;
}.
public BinaryTree getNo () {.
if (isEnd) return null;
if (no == null) {.
no = new BinaryTree (this);
}.
return no;
}.
public boolean isEnd () {.
return isEnd;
}.
private void setEnd () {.
this.isEnd = true;
}.
public void setNo (BinaryTree no) {.
this.no = no;
}.
public void setYes (BinaryTree yes) {.
this.yes = yes;
}.
}.
Ядро экспертной системы, находиться в классе ExpertSysyem, в которой реализована рекурсивная функция обхода бинарного дерева:
public static void start (BinaryTree db).
throws IOException {.
if (db.isEnd ()) {.
System.out.println (db.getAnswer ());
System.out.println («Объяснить почему ЭС пришла к такому выводу?»);
if (readBoolean ()) {.
stack.clear ();
why (db);
for (String el: stack) {.
System.out.println (el);
}.
}.
return;
}.
System.out.println (db.getQuestion ());
if (readBoolean ()) start (db.getYes ());
else start (db.getNo ());
}.
Данный метод производит проход в глубину, и идет от корневого узла, до конечного листа. В узлах находится вопросы, метод выводит вопрос и в зависимости от ответа пользователя производиться переход к следующему узлу, и так происходит до тех пор, пока не дойдет до листа, в котором хранится вывод. Также существует метод why (почему) это обратный рекурсивный метод, который идет от узла или листа, к корню дерева, и выводит на экран то, как ЭС, работала с пользователем. База знаний статическая, времени на реализацию динамической БД не было, но при желании вы можете добавить класс отвечающий за загрузку/выгрузку ЭС, и добавление новых правил и выводов в ее структуру. База знаний представлена следующим образом:
BinaryTree db = new BinaryTree (null);
db.setQuestion («Работает ПК?»);
db.getYes ().setAnswer («Вам не нужны услуги экспертной системы»);
db.getNo ().setQuestion («ПК включается?»);
db.getNo ().getNo ().setQuestion («Свет есть?»);
db.getNo ().getNo ().getYes ().setAnswer («Поломался блок питания»);
db.getNo ().getNo ().getNo ().setAnswer («Включите свет»);
db.getNo ().getYes ().setQuestion («Изображение есть на мониторе?»);
db.getNo ().getYes ().getNo ().setQuestion («Монитор подключен к сети?»);
db.getNo ().getYes ().getNo ().getNo ().setAnswer («Подключите монитор»);
db.getNo ().getYes ().getNo ().getYes ().
.setQuestion («Индикатор горит на мониторе»);
db.getNo ().getYes ().getNo ().getYes ().getNo ().
.setAnswer («Не работает монитор»);
db.getNo ().getYes ().getNo ().getYes ().getYes ().
.setAnswer («Не работает видеокарта»);
db.getNo ().getYes ().getYes ().setQuestion («Писк есть?»);
db.getNo ().getYes ().getYes ().getYes ().
.setAnswer («Используйте руководство по пискам BIOS»);
db.getNo ().getYes ().getYes ().getNo ().setQuestion («Загружаеться ОС?»);
db.getNo ().getYes ().getYes ().getNo ().getNo ().
.setQuestion («Есть сообщения об ошибках?»);
db.getNo ().getYes ().getYes ().getNo ().getNo ().getYes ().
.setAnswer («Следуйте сообщениям об ошибках»);
db.getNo ().getYes ().getYes ().getNo ().getNo ().getNo ().
.setAnswer («Не знаю»);
db.getNo ().getYes ().getYes ().getNo ().getYes ().
.setQuestion («При входе в ОС есть звук?»);
db.getNo ().getYes ().getYes ().getNo ().getYes ().getYes ().
.setQuestion («Система загрузилась без ошибок»);
db.getNo ().getYes ().getYes ().getNo ().getYes ().getYes ().getYes ().
.setAnswer («Следуйте рекомендациям ОС»);
db.getNo ().getYes ().getYes ().getNo ().getYes ().getYes ().getNo ().
.setAnswer («Приятной работы»);
db.getNo ().getYes ().getYes ().getNo ().getYes ().getNo ().
.setQuestion («У вас есть звуковая карта?»);
db.getNo ().getYes ().getYes ().getNo ().getYes ().getNo ().getYes ().
.setAnswer («Не работает звуковая карта»);
db.getNo ().getYes ().getYes ().getNo ().getYes ().getNo ().
.setNo (db.getNo ().getYes ().getYes ().getNo ().getYes ().getYes ());