Аналогия в задачах принятия решений

Автор: Пользователь скрыл имя, 21 Августа 2011 в 14:30, дипломная работа

Описание работы

Цель работы: изучить различные виды вывода, применяемые в интеллектуальных системах; исследовать подходы к принятию решений на основе аналогии; разработать ПО, позволяющее делать выводы на основе аналогии.

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

Содержание

Введение 3
I. Общие понятия и определения 5
1.1. Аналогия и ее значимость 5
1.2. Виды умозаключений и сравнение их с аналогией 8
1.3. Аналогия и человек 12
1.4. Виды аналогий 13
1.5. Степень достоверности выводов по аналогии 14
1.6. Обзор результатов в области исследований по аналогии, как способа принятия решений в ИС 15
1.7. Понятие логической экспертной системы
1.7.1
1.7.2
1.7.3.
1.7.4.
II. Аналогия при решении задач 19
2.1. Исследования в области формализации понятия аналогии 19
2.2. Теория аналогии 26
2.2.1. Формализация аналогии 26
2.2.2. Аналогия и дедукция 31
2.2.3. Логика первого порядка для аналогии 33
2.3. Реализация механизма аналогии 36
2.3.1. Реализация механизма аналогии 37
2.3.2. Реализация системы аналогии 38
III. Программная реализация вывода по аналогии 45
3.1. Создание базы знаний 45
3.2. Механизм логического вывода 46
3.3. Обновление базы данных 48
3.4. Интерфейс пользователя 50
Заключение 56
Список использованных источников

Работа содержит 1 файл

Diplom.doc

— 1.34 Мб (Скачать)
tify">      Здесь  , поэтому по аналогии с вышесказанным выполни  преобразование правила, а именно:  

      конкретизируем  

      

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

      

      Далее, аналогично сформируем парное соответствие

      Здесь необходимо проверить, что это и  предыдущее преобразования выполнялись на основе одного и того же частичного тождества  (это назовём проверкой согласования). Для этого используем следующую лемму.

      Лемма 2.4. Пусть - ограниченные множества пар термов. Тогда необходимым и достаточным условием для существования некоторого парного соответствия   такого, что и , является условие для .

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

      

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

           и проверяет преобразование

      Далее, аналогично выполняется унификация для

      

и получается преобразование

      Далее, для получения  генерируется подцель  ,

из решения  следует, что ,  поэтому приведём к виду

      Множество  удовлетворяет , поэтому очевидно, что

справедливо для частичного тождества   , такого, что .

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

      Прежде  всего, предполагается, что факт и правило  множества , накоплены в базе данных Пролога, преобразованные с помощью предиката в вид

.

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

      Вторая  переменная  c и третья переменная   предиката (причина) принимают в качестве значения множество пар терминов, представленных в виде списков, первая переменная принимает значение цели процедуры вывода. Предложения с по — блок интерпретатора чистого Пролога. (подбор) в теле предложения этой программы — это предикат поиска возможных правил для преобразования правил. Предикат (преобразование) вводит новые переменные и выполняет преобразования правил, полученных с помощью . Как указано в примере, преобразование правил с помощью унификации и других методов заканчивается в четвертом литерале предложения и далее. Предикат получает множество равенств из списка (множества) пар терминов и осуществляет унификацию в соответствии с леммой 2.3. Проверка согласования на основе леммы 2.4 выполняется в пятом и шестом литералах в теле предложения .

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

(С1) ana (Goal)
  :— reason (Goal, [ ], Epic).
(С2) reason (true, Epic, Epic)
(СЗ) reason (Goal, Goal), Epic, Epic2)
  reason (Goal, Epic, Epicl),
  reason (Goal, Epicl, Epic2).
(С4) reason (Goal, Epic, Epicl)
  :— clause (Goal, Goals),
  reason (Goals, Epic, Epicl).
(С5) reason (Goal, Epic, Epic3)
  :— prematch (Goal, Sgoal, Sgoals),
  -reason (Sgoals, Epic, Epicl),
  trans (Goal, Sgoal, Sgoals, Tgoal, Bind),
  epic (Bind),
  append (Epicl, Bind, Epic2),
  epic (Epic2),
  reason (TgoaIs, Epic2, Epicity,
  epic (Epic3).
 

      Рис. 2.9. Программа на Прологе для аналогии. 

      В заключение рассмотрим еще один пример аналогии. Приведённые ниже и взяты из [7] и составлены по трагедии Шекспира «Макбет». Аргументы предикатов, начинающиеся с прописной буквы,— это переменные, а начинающиеся со строчной — константы. Систему аналогий задан вопрос: в ? а именно, кто убил придворного_а? Строго говоря, вопрос имеет вид: ? Выполняя аналогию с использованием , система примерно через 20 секунд получила ответ: ,  т.е. мог убить придворный_b. 

       ,

       ,

        

      

      

      

      

        

      

       

       

       

       

            

        
 
 

        

 

       3. ПРОГРАММНАЯ РЕАЛИЗАЦИЯ  ВЫВОДА ПО АНАЛОГИИ 

      Для программной реализации вывода по аналогии была использована среда программирования Турбо – Пролог.

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

      Так как в Турбо – Пролог позволяет  представлять знания в виде фактов и правил.

      Рассмотрим этапы создания  ЭС. 

      3.1. Создание базы знаний 

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

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

      Базовый набор свойств:

      svoystvo(1,"кормит  детенышей молоком").

      svoystvo(2,"имеет перья").

      svoystvo(3,"плавает").

      svoystvo(4,"ест  мясо").

      svoystvo(5,"имеет  копыта").

      svoystvo(6,"летает").

      svoystvo(7,"откладывает  яйца").

      svoystvo(8,"имеет  шерсть").

      svoystvo(9,"имеет  полосы"). 

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

      pravilo("гепард",[1,4,8]).

      pravilo("тигр",[1,4,8,9]).

      pravilo("жираф",[1,5,8]).

      pravilo("зебра",[1,5,8,9]).

      pravilo("страус",[2,7]).

      pravilo("пингвин",[3,4,7]).

      pravilo("орел",[2,6,7]). 

      Во  второй базе мы будем хранить ответы человека в следующем виде: 

      svoystvo_is(N,'1') /*если загаданное животное имеет  свойство  с номером N*/

      svoystvo_is(N,'2') /*если загаданное животное не  имеет свойства с номером N*/ 

      Первую  базу назовем - knowledge,  вторую — dialog. 

      3.2. Механизм логического вывода 

      Механизм  вывода содержит принципы и правила  работы. Механизм вывода "знает", как использовать базу знаний так, чтобы  можно было получать разумно согласующиеся  заключения (выводы) из информации, находящейся в ней. Когда экспертной системе задается вопрос, механизм вывода выбирает способ применения правил базы знаний для решения задачи, поставленной в вопросе. Фактически, механизм вывода запускает экспертную систему в работу, определяя какие правила нужно вызвать и организуя к ним доступ в базу знаний. Механизм вывода выполняет правила, определяет, когда найдено приемлемое решение и передает результаты программе интерфейса с пользователем [2].

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

      Реализация:

      animals:–

              pravilo(X,L),

              check(L),

              nl,write("Я думаю это ",X),

              nl,write("Я прав? (1 — да, 2 — нет)"),

              proverka_klav(C),C='1',!.

      animals:–

              nl,write("Я не знаю, что это за  животное"),nl,

              nl,write("Давайте добавим его в  мою базу знаний."),nl,

              obnovit. 

      Предикат  check осуществляет проверку свойств, номера которых входят в список, указанный в качестве его единственного аргумента: 

      check([H|T]):–

                   proverka_svoystvo(H),

                   check(T).

      check([]). 

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

      3.3. Обновление базы данных 

        При отсутствии  информации о наличии данного свойства у загаданного животного, человеку будет задан соответствующий вопрос, а ответ будет добавлен его ответ в базу. Реализация:

      proverka_svoystvo(H):–

                   svoystvo_is(H,'1'),!. /* в базе имеется информация о наличии данного свойства */

      proverka_svoystvo(H):–

                   svoystvo_is(H,'2'),!,

                   fail.     /*в базе имеется информация  об отсутствии данного свойства */

Информация о работе Аналогия в задачах принятия решений