Изучение аналогии как механизма вывода, используемого в интеллектуальных системах

Страницы работы

Содержание работы

Министерство общего и профессионального образования Российской Федерации

Новосибирский Государственный Технический Университет

Кафедра  прикладной математики

Лабораторная работа №7

“Выводы по аналогии”

Факультет:         ПМИ

Группа:               ПМ-91

Студент:             Кучеров  Д. А.

Преподаватель:  Целебровская М. Ю.

НОВОСИБИРСК

2003

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

 Изучение аналогии как механизма вывода, используемого в интеллектуальных системах

2. Задание

§  Реализовать на Прологе базовый механизм Case Based Reasoning (CBR), который способен на основе прецедента, давать ответ на поставленный вопрос.

§  Используя базовый механизм CBR, написать экспертную систему для мира геометрических фигур (варианты приведены ниже).

§  Модифицировать базовый механизм вывода таким образом, чтобы он не зависел от предметной области.

3. Набор тестов

1.  Ответ:

2.  Ответ:

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

DOMAINS

RULE =

inside_invert;

in_disappear;

out_disappear;

above_invert;

up_disappear;

down_disappear;

after_invert;

left_disappear;

right_disappear.

FIGURE =

nil;

pixel;

triangle;

square;

circle;

inside(FIGURE,FIGURE);

above(FIGURE,FIGURE);

after(FIGURE,FIGURE).

FIGURE_LIST = FIGURE*

PREDICATES

match(FIGURE,FIGURE,RULE)

test_analogy(FIGURE,FIGURE,FIGURE,FIGURE,FIGURE_LIST)

belong(FIGURE,FIGURE_LIST)

CLAUSES

test_analogy(F1,F2,F3,X,Answers) :match(F1,F2,Rule),

match(F3,X,Rule),

belong(X,Answers).

match(inside(F1,F2),inside(F2,F1),inside_invert).

match(inside(F1,F2),inside(nil,F2),out_disappear) :not(F1=nil).

match(inside(F1,F2),inside(F1,nil),in_disappear) :not(F2=nil).

match(above(F1,F2),above(F2,F1),above_invert).

match(above(F1,F2),above(nil,F2),down_disappear) :not(F1=nil).

match(above(F1,F2),above(F1,nil),up_disappear) :not(F2=nil).

match(after(F1,F2),after(F2,F1),after_invert).

match(after(F1,F2),after(nil,F2),left_disappear) :not(F1=nil).

match(after(F1,F2),after(F1,nil),right_disappear) :not(F2=nil).

belong(X,[X|_]):- !.

belong(X,[_|L]) :belong(X,L).

GOAL

Answers =

[inside(triangle,circle),

inside(nil,square),

inside(circle,square),

after(square,circle),

after(triangle,nil)],

% Test 1    

A = inside(triangle,square),

B = inside(square,triangle),

C = inside(square,circle),

% Test 2

%  A = after(square,triangle),

%  B = after(triangle,square),

%  C = after(circle,square),

test_analogy(A,B,C,X,Answers),

write("The answer is the ",X,"."),nl.

Информация о работе