Система-посредник в заключении договоров на поставку алкогольной продукции

Автор работы: Пользователь скрыл имя, 02 Июня 2013 в 21:27, курсовая работа

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

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

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

Введение
1. Исходные данные……………………………………………………………..5
1.1 Данные о клиентах, желающих приобрести товары……………..………..6
1.2 Данные о клиентах, предлагающих товары ………………………….…....7
2. Реферат………………………………………………………………………...8
2.1 Неформализованное описание предметной области……………………...8
2.2 Концептуальная модель предметной области……………………………..9
2.3 Интенсиональная и экстенсиональная семантические сети………………9
2.4 Представление знаний на языке многосортного исчисления предикатов……………………………………………………………………..…9
2.5 Формирование возможных вариантов договоров с использованием классифицирующей сети………………………………………………………..14
2.6 Критерий выбора наиболее предпочтительных вариантов договоров…..15
2.7 Программная реализация системы………………………………………...19
2.8 Тестирование системы………………………………………………………25
3. Графические материалы……………………………………………………...28
3.1 ER-диаграмма………………………………………………………………..28
3.2 Графическое представление интенсиональной семантической сети…….29
3.3 Графическое представление экстенсиональной семантической сети……30
3.4 Классифицирующая сеть……………………………………………………32
Заключение……………………………………………………………………….33
Список литературы………………………………………………………………34

Файлы: 1 файл

Пояснительная записка.doc

— 4.66 Мб (Скачать файл)

  write("|N |Postavshiki |   vanie   |upakovki| proiz. |       |zakaza|     |     |"),nl,

  write("|  |            |   tovara  |        |        |       |      |     |     |"),nl,

  write("|==|============|===========|========|========|=======|======|=====|=====|"),nl,

 

  offer(Num,Deliver,Name,Form,Sposob,Size,Blocks,Price,Dost), /*Opredel.atributov predlosh*/

  cursor(Z,_),

  cursor(Z,0),write("|"),write(Num),

  cursor(Z,3),write("|"),write(Deliver),

  cursor(Z,16),write("|"),write(Name),

  cursor(Z,28),write("|"),write(Form),

  cursor(Z,37),write("|"),write(Sposob),

  cursor(Z,46),write("|  "),write(Size),

  cursor(Z,54),write("| "),write(Blocks),

  cursor(Z,61),write("| "),write(Price),

  cursor(Z,67),write("| "),write(Dost),

  cursor(Z,73),write("|"),

  nl,

  fail.

 

WatchOffer:-

  write("|==|============|===========|========|========|=======|======|=====|=====|"),

  readchar(_),

  removewindow.

 

 

 

/*Zakluch.dogovora*/

Work:-

  makewindow(2,90,90," Zakluchenie dogovora",0,0,25,80),

  write("Vvedite nomer Sprosa:"), readint(Num),

  demand(Num,_,Name,Form,Sposob,Size,Blocks,Price,Dost),

 

  Find(1,Name,Form,Sposob,Size,Blocks,Price,Dost,Ll),

  clearwindow,

sort(Ll,[ ],Ll1),

  Show_offer(Ll1),

  Find_best(Ll1,5000,X),

  Show_best(Ll1,X,Num),

  removewindow.

 

 

 

/*Poisk predloshenii*/

Find(21,_,_,_,_,_,_,_,[]):-!.

Find(X,Name1,Formproducer,Sposob1,Size1,Blocks1,Priceproducer,Dost1,[T|L1]):-

  offer(X,_,Name2,Formgood,Sposob2,Size2,Blocks2,PriceGood,Dost2), /*Read atributov fakta predlosh*/

  good(Name1,Name2),

  package(Formproducer,Formgood),

  size(Size1,Size2),

  block(Sposob1,Sposob2),

  /*kolvo(Blocks1,Blocks2),*/

  price(Priceproducer,PriceGood),

  data(Dost1,Dost2),

  T=X,

  Xn=X+1,!,

  Find(Xn,Name1,Formproducer,Sposob1,Size1,Blocks1,Priceproducer,Dost1,L1).

 

Find(X,Name,Form,Sposob,Size,Blocks,Price,Dost,L1):-

  Xn=X+1,!,

  Find(Xn,Name,Form,Sposob,Size,Blocks,Price,Dost,L1).

 

/*sortirovka spiska predlojenii*/

sort(L1,[ ],L1):-!.

sort([ ],L2,L2):-!.

sort([H1 | T1], [H2 | T2], [H1| T]):-

                               H1<H2,!,

        sort(T1, [H2 | T2], T).

   sort(L1, [H2 | T2], [H2 | T]):-

               sort(L1,T2,T).

 

/*Sravnenie atributov sprosa i predloshenia*/

 

good("",_).

good(X,X).

good(X,Y):-

  class(X,X1),

  good(X1,Y).

 

package(X,X).

package("",_).

 

size(X,X).

size(0,_).

 

block(X,X).

block("",_).

 

kolvo(X,Y):- Y>=X.

kolvo(0,_).

 

price(X,Y):- Y<=X or Y>X.

price(0,_).

 

data(X,Y):- Y<=X.

data(0,_).

 

 

/*Vivod naidennix predloshenii*/

Show_offer([]):-

  clearwindow,

  write("Predloshenii NET !!! Dlj prodolshenij nashmite klavishu."),

  readchar(_).

Show_offer([H|T]):-

  clearwindow,

  offer(H,Prodavez,Name,Form,Sposob,Size,Blocks,Price,Dost),

  write("                            Vozmoshnie predloshenij:"),nl,

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

  write("Postavshik: ",Prodavez),nl,

   write("Naimenovanie tovara: ",Name),nl,

  write("Forma upakovki: ",Form),nl,

  write("Strana proiz.: ",Sposob),nl,

  write("Ob'em: ",Size),nl,

  write("Kolichestvo zakaza: ",Blocks),nl,

  write("Cena bloka: ",Price),nl,

  write("Srok dostavki: ",Dost),nl,nl,

  write("                   Dlj prodolshenij nashmite klavishu !"),

  readchar(_),

  Show_offer(T).

 

 

/*Poisk nailuchsego predloshenij*/

Find_best([],X,X).

Find_best([H|T],Px,X):-

  offer(H,_,_,_,_,_,_,Price,_),

  Compare(Px,Price,Px2),

  Find_best(T,Px2,X).

 

 

/*Sravnenie cen*/

Compare(X1,X2,X1):-

  X1<X2,!.

Compare(X1,X2,X2):-

  X2<X1,!. 

Compare(X,X,X).

 

 

/*Vivod best predloshenij*/

Show_best([],_,_).

Show_best([H|T],Price,Num):-

  clearwindow,

  offer(H,Prodavez,Name,Form,Sposob,Size,Blocks,Price,Dost),

  write(" Nailuchshee predloshenie: "),nl,

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

  write("Postavshik: ",Prodavez),nl,

  write("Naimenovanie tovara: "),nl,

  write("   ",Name),nl,

  write("Forma upakovki: "),nl,

  write("   ",Form),nl,

  write("Strana proiz.: "),nl,

  write("   ",Sposob),nl,

  write("Ob'em: ",Size),nl,

  write("Kolichestvo zakaza: ",Blocks),nl,

  write("Cena bloka: ",Price),nl,

  write("Srok dostavki: ",Dost),

  demand(Num,Customer,Name2,Formgood,Sposob2,Size2,Blocks2,PriceGood,Dost2),

  cursor(0,40),

  write("Vvedennij spros: ",Num),nl,

  cursor(1,40),

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

  cursor(2,40),

  write("Pokupatel: ",Customer),nl,

  cursor(3,40),

  write("Naimenovanie tovara: "),

  cursor(4,43),

  write(Name2),nl,

  cursor(5,40),

  write("Forma upakovki: "),

  cursor(6,43),

  write(Formgood),nl,

cursor(7,40),

  write("Strana proiz.: "),

  cursor(8,43),

  write(Sposob2),nl,

  cursor(9,40),

  write("Ob'em: ",Size2),nl,

  cursor(10,40),

  write("Kolichestvo zakaza: ",Blocks2),nl,

  cursor(11,40),

  write("Cena bloka: ",PriceGood),nl,

  cursor(12,40),

  write("Srok dostavki: ",Dost2),

  cursor(15,0),

  write("                   Dlj prodolshenij nashmite klavishu  !"),

  readchar(_),

  !,Show_best(T,Price,Num).

Show_best([_|T],Price,Num):-

  Show_best(T,Price,Num).

 

/*Работа с классифицирующей  сетью*/

 

 class("Perevyzka","Marlya").

class("Pervyzka","Vata").

class("Pervyzka","Plastiri").

class("Marlya","Rolik").

class("Marlya","Otrez").

class("Marlya","Bint").

class("Marlya","Salfetki").

class("Rolik","Rolik 28-30").

class("Rolik","Rolik 30-32").

class("Rolik","Rolik 28-30").

class("Otrez","Otrez marlev.2m").

class("Otrez","Otrez marlev.3m").

class("Otrez","Otrez marlev.5m").

class("Otrez","Otrez marlev.10m").

class("Otrez","Marlya otb").

class("Bint","Ster").

class("Bint","No_Ster").

class("Bint","Bint st 5x10").

class("Bint","Bint st 7x14").

class("Bint","Bint n/s 5x10").

class("Bint","Bint n/s 7x14").

class("Salfetki","Ster").

class("Salfetki","No_Ster").

class("Salfetki","Salfetki N10").

 

2.9 Тестирование системы

После запуска программы  перед пользователем предстает  титульный лист программы (рис. 2.1). Для  продолжения работы следует нажать клавишу Enter.

Рис.2.1 Титульный лист

 

Следующим окном программы  является основное меню (рис 2.2), которое содержит 4 пункта: переход на титульную страницу, вывод базы знаний, заключение договора, выход из программы. При выборе пункта 1 на экран выводится титульный лист данного курсового проекта.

Рис.2.2 Меню программы

 

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

              Сначала на экран выводится  таблица, содержащая все варианты  спроса (рис.2.3), а затем – таблица  вариантов предложения (рис.2.4). Затем  показывается общий вид классифицирующей  сети в текстовом режиме(рис.2.5).

Рис.2.3 Таблица спроса

 

 

Рис.2.4 Таблица предложения

 

 

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

          

Рис.2.5 Ввод номера спроса

 

Заранее ознакомившись  с таблицей спроса(Рис.2.3), пользователь выбирает интересующий его товар, согласно номеру спроса и нажимает клавишу  на клавиатуре с соответствующим номером.

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

Рис.2.6 Первое предложение

 

 

 

 

 

 

Рис.2.7 Второе предложение

 

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

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

Рис.2.8 Наилучшее предложение

 

            Для завершения работы с программой  следует нажать клавишу Enter и в появившемся основном меню выбрать 4 пункт - “Выход”.

 

3. Графические  материалы

3.1 ER-диаграмма

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3.2 Графическое  представление интенсиональной  семантической сети

 

 

 

 

 

 

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3.3 Графическое  представление экстенсиональной  семантической сети

 


 

 

 

 

 

 

 


 

 

 

 

 

3.4 Классифицирующая сеть

 

 

 

 

 

 

 

 

 

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Заключение

 

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

 

 

Список литературы

 

1. Потресова Г.Д. Инженерия  знаний. Методические указания к лабораторным работам.  – М.: МИРЭА, 1998.

2. Малпас Дж. Реляционный  язык Пролог и его применение.-М.: Наука, 1990.

3. Братко И. Программирование  на языке Пролог для искуственного  интеллекта. -М.:Мир, 1990.

4. Курс лекций по  инженерии знаний за 2007г.


Информация о работе Система-посредник в заключении договоров на поставку алкогольной продукции