![]() |
CLAIM – научно-образовательный кластер |
||||||||||||||||
![]() |
|
||||||||||||||||
![]() |
1. АннотацияВ данной работе представлена программа, выполняющая функции экспертной системы, предлагая пользователю альтернативы в ответ на ответы, полученные от пользователя.
2. Условие задачиДанная ЭС предназначена для диагностики типичных неполадок в работе локальных сетей и Интернет-подключений. Так как ЭС создана для учебных целей, она рассматривает лишь небольшую часть возможных вариантов неполадок, но она позволяет расширять базу знаний, запрограммированную на специальном языке. 3. Используемые технологииПрограмма написана на языке PHP и построена на основе Web-технологий. Для её работы требуется следующее ПО:
Так как программа построена на основе Web-технологий, она может быть доступной через сеть Интернет. Для запуска программы нажмите на эту ссылку. 4. Алгоритм решения задачиВ начале работы программа анализирует файл БЗ и считывает данные БЗ во внутренние структуры (массивы вопросов, правил, атрибутов и гипотез). Если число полей не соответствует ожидаемым, выдается сообщение об ошибке и переход на следующий этап не выполняется. Далее программа принимает и анализирует ответы, полученные от пользователя. Она просматривает массив правил, проверяет условие срабатывания каждого правила, если в нём отсутствуют еще не определенные элементы. Если условие выполняется, производится выполнение действия, которое может включать в себя команды присваивания значений элементам (ответам на вопросы и атрибутам), а также вывода дополнительного текста. Далее программа проверяет условия подтверждения гипотез. Если хотя бы одно условие выполняется, работа программы завершается и список подтвердившихся гипотез выводится на экран. Если подтвердившихся гипотез нет, программа просматривает список вопросов, находит первый вопрос, ответ на который ей неизвестен (не задан пользователем или не определен правилом), и отображает его пользователю. Если такого вопроса не найдено, программа выводит сообщение о неполноте БЗ. В конце работы программа выводит таблицу значений ответов на вопросы и атрибутов. Схема алгоритма программы приведена на рис. 1. При приеме каждого нового ответа происходит новый запуск программы. Значения ответов сохраняются между запусками с использованием механизма сессий PHP.
Рис. 1. Общая схема алгоритма ЭС. Данная ЭС работает по схеме обратного логического вывода: она старается получить ответы на вопросы от пользователя или путем применения правил логического вывода, и просматривает список гипотез, пытаясь найти гипотезу, удовлетворяющую полученным данным. В отличие от ЭС с обратным логическим выводом, ЭС с прямым логическим выводом пытается задавать вопросы таким образом, чтобы путем применения правил подтвердить определенную гипотезу. В некоторых ЭС может применяться как прямой, так и обратный вывод. Выбор машины логического вывода зависит от типа задачи. Диагностические задачи (как в представленной ЭС) лучше всего решать с помощью обратного логического вывода, в то время как задачи прогнозирования, текущего контроля и управления проще всего поддаются решению с помощью прямого логического вывода. 5. Описание языка БЗ.База знаний ЭС хранится в текстовом файле, имя которого задано в программе ЭС (по умолчанию /var/www/expert.php). Строки текстового файла являются либо комментариями (начинаются с символов «#», «;» или «*», либо блоками БЗ. Строка, описывающая блок БЗ, состоит из типа блока и полей с параметрами. Значения полей параметров отделяются друг от друга символами табуляции. Несколько символов табуляции подряд заменяются на один, что может быть использовано для выравнивания полей для удобства чтения БЗ. Первым параметром всегда является номер блока. Проверка вопросов, правил и гипотез происходит в порядке возрастания номеров. Существует 4 типа блока: QUESTION, ATTRIB, RULE и HYP. Блок QUESTION описывает вопрос, задаваемый пользователю. Он имеет следующие параметры:
Блок ATTRIB описывает атрибут (вспомогательное значение, вычисляемое и используемое при проверке правил и гипотез). Этот блок имеет следующие параметры:
Блок RULE описывает правила вывода ЭС. Этот блок имеет следующие параметры:
Блок HYP описывает гипотезы (альтернативные варианты принятия решений) ЭС. Он имеет те же параметры, что и блок RULE, за исключением выполняемого действия.
В состав команд проверки условий и действий могут входить операторы языка PHP со следующими отличиями:
Перечень вызываемых функций PHP не ограничивается, что позволяет нарушить логику работы программы или даже создать угрозу безопасности при неправильном построении файла БЗ. Преимуществом такого языка является широкий круг операторов (взятый «в наследство» от языка PHP), а недостатком — неудобство добавления нового вопроса между двумя вопросами с соседними номерами, которое требует переписывания вопросов, и отсутствие команды, изменяющей порядок проверки вопросов. Для решения этой проблемы можно предложить задание приоритетов вопросов, и задание вопросов в порядке приоритета. Приоритет вопроса может меняться динамически в процессе вывода путём присвоения значения параметру приоритета. В процессе вывода происходит вывод названий применяемых правил и подтверждённых гипотез на экран. Также в конце работы программы происходит вывод известных программе значений вопросов и атрибутов на экран в виде таблицы. Это может использоваться для проверки корректности работы программы.
6. Описание базы знаний ЭС.В файле БЗ (который по умолчанию располагается по пути /var/www/expert.txt) хранится следующая информация: QUESTION 1 LIST Каков тип неполадки? Тип неполадки Проводное подключение3Беспроводное подключение3Интернет3Не знаю 3 QUESTION 2 YESNO Есть ли пинг до другого компьютера в сети? Пинг QUESTION 3 YESNO Запущен ли брандмауэр на удалённом компьютере, с которым делается попытка установить связь? Брандмауэр QUESTION 4 YESNO Хорошо ли обжат коннектор? Коннектор QUESTION 5 YESNO Правильно ли разведены проводники в кабеле? Разводка QUESTION 6 YESNO Используется ли в сети DHCP сервер? DHCP QUESTION 7 YESNO Получает ли компьютер правильный IP-адрес? Correct_IP QUESTION 8 YESNO Доступен ли основной шлюз? Prim_GW QUESTION 9 YESNO Установлено ли подключение к интернету на шлюзе? Inet QUESTION 10 LIST По какой локальной сети вы подключаетесь к Интернету? ТипЛокСети Проводной2Беспроводной2Локальная сеть не используется 2 QUESTION 11 YESNO Происходит ли соединение с точкой доступа? AP QUESTION 12 NUMBER Какой уровень сигнала беспроводной сети в %? Сигнал 0 100 QUESTION 13 LIST Какой стандарт шифрования используется в беспроводной сети? Шифрование Без шифрования1WEP1WPA-PSK1WPA-EAP 1 QUESTION 14 YESNO Поддерживает ли устройство режим WPA? WPA Support QUESTION 15 YESNO Правильный ли ключ шифрования? Key QUESTION 16 YESNO Доступен ли RADIUS сервер (если не знаете, считайте, что доступен)? Radius QUESTION 17 YESNO Есть ли средства на счету оператора? Money QUESTION 18 LIST Какой тип Интернет-подключения? Inet_type GPRSZADSLZДругое Z QUESTION 19 LIST Какой уровень GPRS сигнала? Сигнал GPRS Высокий5Средний5Низкий 5 QUESTION 20 NUMBER Какова длина телефонной линии, по которой организовано подключение ADSL (м)? Line_Length 0 15000 ATTRIB 1 Лишний DHCP сервер 0 RULE 1 Q1=1 Q11=-1; Q12=-1; Q13=-1; Q14=-1; Q15=-1; Q16=-1; Q17=-1; Q18=-1; Q19=-1; Q20=-1; Q8=-1; Q9=-1; Q10=-1; Интернет и беспроводная сеть не причём RULE 2 Q1=2 Q4=-1; Q5=-1; Q8=-1; Q9=-1; Q10=-1; Q17=-1; Q18=-1; Q19=-1; Q20=-1; Интернет и проводная сеть не причём RULE 3 Q6=1 && Q7=0 A1=1; echo '<p><b>Выключите все другие DHCP-серверы в сети!</b></p>' В сети, скорее всего, есть еще один DHCP сервер RULE 4 Q2=1 Q4=-1; Q5=-1; Q6=-1; Q7=-1; Q11=-1; Q12=-1; Q13=-1; Q14=-1; Q15=-1; Q16=-1; Связь с сетью установлена RULE 5 Q9=1 Q17=-1; Q18=-1; Q19=-1; Q20=-1; Интернет есть RULE 6 Q10=1 Q1=1 Неполадка с проводной сетью RULE 7 Q10=2 Q1=2 Неполадка с беспроводной сетью RULE 8 Q10=3 Q4=-1; Q5=-1; Q11=-1; Q12=-1; Q13=-1; Q14=-1; Q15=-1; Q16=-1; Локальной сети нет RULE 9 Q11=1 Q12=-1; Q13=-1; Q14=-1; Q15=-1; Q16=-1; Есть связь с точкой доступа RULE 10 Q13=1 || Q13=2 Q14=-1; WPA не исп. RULE 11 Q18=1 Q20=-1 GPRS RULE 12 Q18=2 Q19=-1 ADSL RULE 13 Q6=0 Q7=-1 Без DHCP (внимание: IP-адреса должны задаваться вручную!) RULE 14 Q13!=4 && Q13!=-1 Q16=-1; Нет WPA_EAP ATTRIB 2 Неизв. неполадка проводной сети 0 ATTRIB 3 Неизв. неполадка беспроводной сети 0 RULE 15 Q1=1 && Q2=1 && A1=0 && Q9=1 A2=1 Неизвестная неполадка (вроде бы все работает) RULE 16 Q1=2 && Q2=1 && A1=0 && Q9=1 && Q11=1 A3=1 Неизвестная неполадка (вроде бы все работает) RULE 17 Q13=1 Q15=-1 Без ключа шифрования RULE 18 Q2=1 Q3=0 Пинг есть HYP 1 A1=1 В сети есть другой DHCP-сервер, который нужно выключить или заблокировать HYP 2 Q3=1 Выключите брандмауэр HYP 3 Q4=0 Обожмите коннектор получше HYP 4 Q5=0 Разведите проводники правильно и еще раз обожмите коннектор HYP 5 Q8=0 Проверьте состояние шлюза (маршрутизатора) HYP 6 Q12<50 && Q12>=0 Плохой сигнал точки доступа, поставьте компьютер ближе или уберите преграду HYP 7 Q14=0 Используйте стандарт, отличный от WPA (не рекомендуется) или замените оборудование HYP 8 Q15=0 Установите правильный ключ шифрования HYP 9 Q16=0 Проверьте состояние RADIUS сервера HYP 10 Q17=0 Положите деньги на счёт провайдера HYP 11 Q19=2 Выйдите на более высокое место, возможно, сигнал будет лучше HYP 12 Q20>5000 Возможно, не стоит использовать ADSL на такой длинной линии HYP 13 A2=1 Неизвестная неполадка, похоже, все работает (сеть проводная) HYP 14 A3=1 Неизвестная неполадка, похоже, все работает (сеть беспроводная) HYP 15 Q18=2 || (Q18=1 && Q19!=2) || (Q18=2 && Q20<=5000 && Q20>-1) Обратитесь к вашему Интернет-провайдеру HYP 16 (Q1=1 || Q1=2) && Q2=1 && Q3=0 ЭС не может найти неисправность. HYP 17 Q8=1 && Q9=1 Интернет должен работать. Проверьте настройки вашего компьютера. HYP 18 Q1=2 && Q2=0 && Q3=0 && (Q7=1 || (Q6=0 & Q11=1)) ЭС не видит неисправности. Проверьте состояние устройства, с которым пытаетесь установить связь, сетевого адаптера, а также наличие сигнала беспроводной сети и наличие преград. HYP 19 Q1=1 && Q2=0 && Q3=0 && (Q6=0 || Q7=0) Проверьте состояние сетевого адаптера. HYP 20 Q1=2 && Q11=0 && ( (Q13=1 && Q15=1) || Q13=2 || (Q13=3 && Q14=1 && Q15=1) || (Q13=4 && Q14=1 && Q15=1 && Q16=1)) ЭС не может найти причину неисправности. Рассмотрим подробнее некоторые блоки БЗ. В БЗ применяются вопросы, для ответа на которых пользователю необходимо выбрать один вариант из списка ответов, либо из списка «да»/«нет», либо ввести число. Например, вопрос №1 представлен в виде списка выбора типа неисправности. Список представляется в виде строки с перечислением вариантов. Варианты отделяются друг от друга с помощью любого символа, кроме табуляции, пробел и перевода строки. В зависимости от выбранного ответа параметр Q1 получает значения от 1 до 4. Правила 1 и 2 анализируют значение ответа на 1-й вопрос и отбрасывают вопросы, которые не относятся к данному типу неполадки, присваивая ответам значение -1, которое не может быть выбрано пользователем и свидетельствует о том, что ответ на вопрос был пропущен. Условия могут быть как простыми (правила 1, 2, 11, 12, гипотезы 2, 3, 4, 5, 10 и др) так и сложными, включающими несколько условий (правила 3, 10, 14, гипотезы 15, 16, 17 и др.). Для сокращения сложности условий могут применяться атрибуты. Например, правило 3 устанавливает значение атрибута 1 в зависимости от ответов на вопросы 6 и 7, а в гипотезе 1 проверяется значение этого атрибута. Атрибуты могут быть использованы для лучшего объяснения промежуточных шагов вывода. Значения атрибутов выводятся в таблице данных системы. Действия в правилах могут включать в себя не только присвоение значений ответам на вопросы и атрибутам, но и другие действия, например, вывод текста на экран (см. правило 3). Для расширения функциональности программы в нее могут быть добавлены функции, вызываемые из правил БЗ. |
||||||||||||||||
© НОК CLAIM. Замечания, вопросы и сведения об ошибках просим сообщать в форуме или присылать администратору сайта. |