Создание экспертной системы продукционного типа

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

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

Министерство образования и науки Российской Федерации

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

Кафедра экономической информатики

РГР

“Интеллектуальные информационные

 системы”

Факультет: бизнеса

Группа: ФБИ-62

Выполнила: Сахарова Ю.Д.

Преподаватель: Авдеенко Т.В.

Новосибирск

2009

Создание экспертной системы продукционного типа

По аналогии с программой GENI и лабораторной работой №3 написать программу, реализующую экспертную систему в выбранной Вами предметной области.

Отличием от программы GENI в Вашей программе должно явиться наличие достаточно объемной базы данных (как в 3 л.р.), т.е. базы фактов, хранящейся в файле. Заметим, что в программе  GENI имеется только база знаний в виде правил, а подтверждение фактов запрашивается у пользователя. Вы в своей программе можете основную (статическую) часть фактов хранить в базе данных, а некоторые подтверждения (динамическая часть фактов) запрашивать у пользователя экспертной системы.

Для того, чтобы экспертная система не выдавала только тривиальные, заведомо понятные решения, база знаний (база правил) должна быть достаточно объемной (около 50 правил, но не менее 30).

Провести тестирование построенной экспертной системы. Сделать выводы.

В качестве темы РГР была выбрана система позволяющая подобрать автомобиль.


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

domains

model, mark, offroad, bodytype, country, cl, transmission=symbol.

petrc, engine, price=real.

numofdoors, priority=integer.

list =  priority*.

database

vehicle(mark, model, cl, bodytype, numofdoors, offroad, engine, transmission, petrc, price).

economicpc(integer, real).

naturewd(symbol, symbol).

boot_bodytype(symbol,symbol).

extrans(symbol,symbol).

peopledoors(integer,integer).

power(symbol, real).

 mark(symbol,symbol).

 country(symbol,symbol).

 classofcars(cl,symbol).

 bodytype(bodytype, symbol).

 weeldrive(offroad, symbol).

 cross_country(symbol, symbol).

 transmission(transmission, symbol).

 gearbox(symbol, symbol).

predicates

nondeterm doaction(integer).

nondeterm doaction1(integer).

nondeterm dialog.

nondeterm economic(mark, model).

nondeterm cheap(mark, model, price).

nondeterm expensive(mark, model, price).

nondeterm repeat.

nondeterm showreccars(mark, model, cl, bodytype, numofdoors, offroad, engine, transmission, petrc, price).

clauses

/*vehicle("daewoo","matiz","a","hatchback",5,"fwd",51,"at",5.6,8900).

vehicle("daewoo","matiz","a","hatchback",5,"fwd",63,"mt",6.5,9500).

vehicle("kamaz","oka","a","hatchback",3,"fwd",30,"mt",5.5,5500).

vehicle("chevrolet","aveo","b","sedan",4,"fwd",84,"at",8.6,12000).

vehicle("lada","kalina","b","sedan",4,"fwd",98,"mt",8.3,9000).

vehicle("honda","civic","c","sedan",4,"fwd",201,"at",12,22500).

vehicle("mitsubishi","lancer","c","sedan",4,"fwd",122,"mt",10.3,18000).

vehicle("volvo","s60","d","sedan",4,"awd",140,"mt",11.5,25000).

vehicle("toyota","allion","c","sedan",4,"awd",122,"at",9.8,18000).

vehicle("toyota","allion","c","sedan",4,"fwd",122,"at",9.8,18000).

vehicle("kamaz","oka","a","hatchback",3,"fwd",43,"mt",6.1,5500).

vehicle("honda","civic","c","hatchback",3,"fwd",201,"at",12,20500).

vehicle("honda","civic","c","hatchback",5,"fwd",201,"at",12,23500).

vehicle(volvo, s60, d, sedan, 4, awd, 195, at, 19.5, 39500).

economicpc(1, 14.0).

economicpc(2, 9.0).

economicpc(3, 7.0).

peopledoors(2,3).

peopledoors(3,4).

peopledoors(4,5).

peopledoors(4,4).

peopledoors(1,3).

boot_bodytype(yes,hatchback).

boot_bodytype(no,sedan).

naturewd(yes, awd).

naturewd(no,fwd).

extrans(yes,mt).

extrans(no,at).

power(yes,120).

power(no, 80).

mark(toyota,japan).

mark(mitsubishi,japan).

mark(lada,russia).

mark(kamaz,russia).

mark(deawoo, uzbekistan).

mark(honda, japan).

mark(chevrolet, usa).

mark(usa, "reliable in service").

country(uzbekistan, "balance functional-price").

country(russia,"cheap services").

country(japan,"hight tech car").

classofcars(a,"rather compact and economic then comfort of driver").

classofcars(b, "'driver's car' comfort for driver").

classofcars(c, "'driver's car' comfort for driver, has most features then B class").

classofcars(d, "bussines class, most fits for bussines people").

bodytype(sedan, "boot isn't spacious").

bodytype(hatchback, "boot is very spacious").

weeldrive(awd, "hight cross-country ability").

weeldrive(fwd, "general cross-country ability").

cross_country("hight cross-country ability", "increased petrol cunsumption").

cross_country("general cross-country ability", "decreased petrol cunsumption").

transmission(mt, "manual gearbox").

transmission(at, "automatical gearbox").

gearbox("manual gearbox", "demand experience of driver").

gearbox("automatical gearbox", "fits for beginner driver").*/

showreccars(Mark, Model, Cl, BT, Nd, WD, Pw, TM, PC, Pr):-

                    vehicle(Mark, Model, Cl, BT, Nd, WD, Pw1, TM, PC1, Pr1),

                    PC1<=PC,Pr1<=Pr1,Pw1<=Pw,

                    write("I will recomend you next cars: "),nl,

                    write("Mark: ", Mark), nl,

                    write("Model: ", Model),nl,

                    write("class: ", Cl), nl,

                    write("body type: ", BT), nl,

                    write("number of doors: ", Nd), nl,

                    write("wheel drive: ", WD), nl,

                    write("power: ", Pw), nl,

                    write("transmission: ", TM), nl,

                    write("petrol cunsumption: ", PC), nl,

                    write("price: ", Pr), nl,

                    write("-----------------------------------------------"),nl,

                    fail.

economic(Mark, Model):-vehicle(Mark, Model, _, _, _, _, _, _, PC, _), PC<7.0.

Похожие материалы

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