Алгоритм решения задачи

Алгоритм решения задачи. Работа программы начинается с функции инициализации, которая ответственна за присвоение данным начального значения. После чего управление получает процедура Главного меню. Далее, в зависимости от действий пользователя, происходит вызов одной из нижеперечисленных процедур 1 Работа с базами знаний 2 Работа с базой пациентов 3 Непосредственный запуск экспертной системы 4 Настройки 5 Контекстно-зависимая справочная система.

В мою часть входила обработка следующих пунктов 1 Работа с текущей базой знаний Считывание данных из файлов на диске. Использование имеющейся там информации согласно нижеприведенному описанию. 2 Обработка поступающей информации. 3 Принятие решения и выдача окончательного результата. На каждом шаге алгоритма у системы есть откат, т.е. у пользователя есть возможность, если он что-то забыл, вернуться в предыдущее состояние системы, нажав кнопку Назад. Если же ему захочется все начать сначала, то, нажав кнопку Отмена, система вернется в первоначальное состояние.

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

Нажав кнопку Далее система переходит к следующему пункту. Ш Составление первоначального списка болезней, к которым подходит данный набор симптомов. После ввода пользователя некоторых первоначальных симптомов, система анализирует, к каким болезням принадлежат данные симптомы. Алгоритм определения первоначального списка болезней 1 Открываем таблицу соответствий 2 Для всех k1 до максимального числа симптомов 3 Берем k-тый симптом из первоначального списка 4 Смотрим в таблицу соответствий простым циклом делаем полный перебор всех элементов болезней, стоящих в столбце данного симптома 5 Делаем проверку 5.1 Если данная болезнь уже имеется в списке, то переходим к п.6 5.2 Если элемент таблицы 0, то болезнь в список не включаем 6 Увеличиваем k на 1 7 Если все симптомы k перебраны, то первоначальный список болезней сформирован 8 Закрываем таблицу соответствий.

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

Следует также учесть, что симптомы есть значимые и незначимые, т.е. вес симптома по отношению к какой-либо болезни либо большой, либо малый. Данный процесс регулируется системой, поэтому никак не зависит от пользователя. Ш Уточнение информации. Имея начальный список болезней, система проводит их дифференциацию. Далее система начинает проводить рассуждения.

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

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

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

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

Запоминание конечного веса болезни. После подсчета весов всех болезней выбирается болезнь, имеющая максимальный вес, и происходит нормировка весов болезней чтобы они были в пределах от 1 до 100 Далее система выбирает те болезни, вероятности которых находятся в некоторых рамках, заранее определенных системным программистом так называемый порог уверенности. Значение порога уверенности можно задать в настройках программы. Формула для подсчета веса болезни vesbj tabvesvesi, jki То есть, для конечного подсчета вероятности не применяется умножение веса на коэффициенты, а идет суммирование всех элементов таблицы весов tabvesvesi, j имеющих отношение к болезни. Далее происходит нормировка всех конечных вероятностей с целью укладывания их в промежуток от 1 100. Чтобы окончательный ответ измерялся в процентах. ki коэффициент присутствия симптома равен либо 0, либо 1. Пример Голова болитПровалы памятиЧастые припадкиВ ухе стреляетЧелюсть сводитВнутриче-репное давлениеСклероз1010664552043 Например, в процессе работы были выбраны симптомы 2,4 и 6. Система будет суммировать вес Vesbсклероз1001061640551200431204. Далее У всех болезней таким образом будет вычислен вес. Выберется максимальный вес болезни из списка болезней.

J-1 отрицательное значение для начала.

For i1 to 15 do if j maxvesbi если j больше максимального значения, jmaxvesbi то jmax. Допустим, максимальный вес 300. Веса всех болезней разделятся на 300 нормируются, чтобы быть в пределах от 0 до 1. Таким образом, вес болезни склероз 2043000.68 т.е. 68. Это и есть конечный итог. Ш Выдача конечного результата.

Система выдает те болезни, которые были выбраны в предыдущем пункте в порядке процентного убывания, на экран. Пример У вас, скорее всего, Склероз. Вероятность 94 Вероятность физического повреждения мозга 93 Вероятность простой потери памяти 87 В данном случае, порог уверенности, установленный системный программистом, составляет 92, поэтому все болезни, имеющие веса, не превышающие планки 92, просто отсеиваются. 4.4.