Экспертная система железнодорожных рассписаний

Автор: Пользователь скрыл имя, 24 Октября 2012 в 14:41, курсовая работа

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

Данная курсовая работа разработана в соответствии с требованиями курсового проектирования.

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

Содержание

Введение………………………………………………………………………….......4
Исследование предметной области ...............................................................5

1.1. Характеристика железнодорожного транспорта…………………………5

1.2. История железных дорог России.....................................................................6

1.3.Информационно–справочная система по пассажирским железнодорожным перевозкам...................................................................9

1.4. Понятие об информационно-справочных системах и их программная

реализация................................................................................................11

1.5. Базы данных и способы их представления..................................................12

2. Логическое программирование.......................................................................14

2.1. Пролог………………………………………………………………………14

2.2. Базовые понятия и термины Пролога.....................................................15

2.3. Структура программы на ТП...................................................................19

2.4. Пролог-программа ................................................................................23

3. Техническое задание .......................................................................................25

3.1. Общие сведения……………………………………………………………..25

3.2. Назначение и цели создания системы…………………………………….25

3.3. Требование к системе………………………………………………………25

4. Описание программы………… …………….....................................................26

4.1. Общие сведения……………………………………………………………..26

4.2. Функциональное назначение………………………………………………26

4.4. Входные данные…………………………………………………………….26

4.5. Выходные данные…………………………………………………………..26

5. Руководство оператора......................................................................................27

5.1. Назначение программы……………………………………………………27

5.2. Выполнение программы…………………………………………………...27

5.3. Сообщения оператору……………………………………………………..27

5.4. Порядок выполнения вызова программы......................................................30

5.5. Обращение к программе.................................................................................30

5.6. Пример работы программы……………………………………………….30

Заключение...……………………………………………………...........................31

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

Приложения

Приложение 1. Листинг программы ………...…………………...........................33

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

Экспертные (1).doc

— 282.00 Кб (Скачать)

Единственным исключением из правила определения области действия переменных является анонимная переменная, например, “_” в цели любит(Х,_). Каждая анонимная переменная есть отдельная сущность. Она применяется тогда, когда конкретное значение переменной несущественно для данного утверждения. Таким образом, каждая анонимная переменная четко отличается от всех других анонимных переменных в утверждении.

  1. Синтаксис операторов - структуры арности 1 и 2 могут быть записаны в операторной форме, если атом, используемый как главный функтор в структуре, объявить оператором.
  2. Синтаксис списков - список есть не что иное, как некоторая структура арности 2. Данная структура становится интересной и чрезвычайно полезной в случае, когда вторая компонента тоже является списком. Вследствие важности таких структур в Прологе имеются специальные средства для записи списков.
  3. Синтаксис строк - строка определяется как список кодов символов. Коды символов имеют особое значение в языках программирования. Они выступают как средство связи компьютера с внешним миром. В большинстве реализации Пролога существует специальный синтаксис для записи строк. Он подобен синтаксису атомов. Строкой является любая последовательность символов, которые могут быть напечатаны (кроме двойных кавычек), заключенная в двойные кавычки. Двойные кавычки в пределах строки записываются дважды “”.

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

  1. Утверждения - программа на Прологе есть совокупность утверждений.

Утверждения состоят из целей и хранятся в базе данных Пролога. Таким образом, база данных Пролога может рассматриваться как программа на Прологе. В конце утверждения ставится точка “.”. Иногда утверждение называется предложением.

Основная операция Пролога - доказательство целей, входящих в утверждение. Существуют два типа утверждений:

  • факт: это одиночная цель, которая, безусловно, истинна;
  • правило: состоит из одной головной цели и одной или более хвостовых целей, которые истинны при некоторых условиях.

Правило обычно имеет несколько хвостовых целей в форме конъюнкции целей. Конъюнкцию можно рассматривать как логическую функцию И. Таким образом, правило согласовано, если согласованы все его хвостовые цели.

Примеры фактов:

собака(рекс). родитель(голди.рекс).

Примеры правил:

собака (X) :- родитель (X.Y),собака (Y). человек(Х) :-мужчина(Х).

Структуру иногда изображают в виде дерева, число ветвей которого равно арности структуры.

  1. Запрос - после записи утверждений в базу данных вычисления могут быть инициированы вводом запроса.

Запрос выглядит так же, как и целевое утверждение, образуется и обрабатывается по тем же правилам, но он не входит в базу данных (программу). В Прологе вычислительная часть программы и данные имеют одинаковый синтаксис. Программа обладает как декларативной, так и процедурной семантикой. Запрос обозначается в Прологе утверждением ?-, имеющим арность 1. Обычно запрос записывается в операторной форме: за знаком ?- следует ряд хвостовых целевых утверждений (чаще всего в виде конъюнкции).

Примеры запросов:

?-собака(X). ?- родитель(Х.У),собака (Y).

или, иначе,

'?-'(собака(Х)) С?-') ','(родитель(Х„У”,собака (Y)).

 

2.3. Структура программы на Турбо Прологе (ТП)

Обычно программа на ТП включает три или четыре основных программных раздела:

  • раздел выражений clauses,
  • раздел предикатов predicates,
  • раздел доменов domains
  • раздел цели goal.

Раздел clauses - это ядро программы на ТП, в нем размещаются факты и правила, которыми оперирует ТП, пытаясь достичь цели программы. 
В разделе predicates объявляются предикаты пользователя (встроенные предикаты ТП не объявляются). 
В разделе domains описываются любые используемые домены (типы аргументов пользователя), которые не являются стандартными доменами ТП. Стандартные домены не описываются. В разделе goal помещается встроенная (внутренняя) цель, когда программисту требуется, чтобы программа могла выполняться вне среды ТП и независимо от нее. 
 
                                                 2.3.1.Раздел..clauses 
В разделе выражений clauses программист размещает все включаемые в программу факты и правила. Если читатель представляет себе, что такое факты и правила и как они записываются на Прологе, то можно считать, что он знает о содержании раздела clauses. Выражения, относящиеся к определенному предикату, должны размещаться в разделе clauses вместе. Последовательность определяющих предикат выражений называется процедурой. При попытке удовлетворения цели ТП работает с самого начала раздела clauses, просматривая в процессе поиска последовательно каждый факт или правило. По мере прохождения раздела clauses ТП устанавливает внутренние указатели после каждого выражения, которое удовлетворяет текущей подцели. Если такое выражение не является частью ведущего к решению логического пути, то ТП возвращается к установленному указателю и ищет другое соответствие. Такой процесс называется поиском с возвратом (backtracking).

 
2.3.2.Раздел..predicates 
Если программист определяет в разделе clauses свой собственный предикат, то он должен объявить его в разделе predicates. В противном случае ТП не будет знать, о чем идет речь. Когда объявляется предикат, Турбо-Прологу сообщается о том, каким доменам принадлежат аргументы этого предиката. Предикаты определяются фактами и правилами. В разделе predicates программы просто перечисляется каждый предикат cо своими аргументами. Имя предиката должно начинаться с буквы; после этой буквы могут следовать буквы, цифры и символы подчеркивания. Величина букв значения не имеет, но все-таки не рекомендуется использовать в качестве первой буквы заглавную.

 

2.3.3.Раздел..domains 
Домены в Прологе подобны типам в Паскале. Они дают возможность присваивать различным видам информации, которая в противном случае выглядела бы одинаково, отличные имена. В программе на ТП объекты в отношении (аргументы предиката) принадлежат доменам; это могут быть домены стандартные или специальные, определяемые программистами. Раздел domains служит двум очень важным целям. Во-первых, можно определить для доменов осмысленные имена, причем даже в том случае, если внутренне они совпадают с именами уже существующих доменов. Во-вторых, объявления специальных доменов используются для объявления структур данных, которые стандартными доменами не определяются. Иногда целесообразно объявить домен тогда, когда возникает потребность более четкого выделения каких-либо частей раздела predicates. Объявление программистом своих собственных доменов помогает документировать предикаты, которые определяются путем задания в качестве типа аргумента удобного и понятного имени.     Раздел domains напоминает объявление данных в традиционных (императивных) языках, например таких, как Паскаль и Си. Существуют следующие типы доменов:

     char (символьный),

     integer (целый),

     real (вещественный),

     string (строковый),

     symbol (для цепочки из букв, цифр и символов подчеркивания с первой строчной буквой либо цепочки знаков в двойных кавычках),

     file (файловый). 

2.3.4.Раздел..goal 
Если цели вводятся в интерактивном режиме в окне Dialog в ответ на подсказку Goal:, то это – внешние цели, поскольку они указываются уже при выполнении программы. Внешние цели удобны в том случае, если программы всегда запускаются в среде разработки программ Пролога. В ТП предусмотрен раздел goal, который должен включаться в компилируемую программу. Задаваемые в этом разделе цели на- 
зываются внутренним целям, поскольку они являются частью исходного текста программы и компилируются наряду со всеми другими ее частями. Важно отметить то,что содержание раздела goal аналогично правилу. Это попросту список подцелей. Но между разделом goal и правилом есть два отличия: ТП как бы вызывает цель (обращается к разделу goal), а программа выполняется, пытаясь удовлетворить тело целевого правила. Если достигаются все подцели раздела goal, то программа успешно завершается. Если же в процессе выполнения программы какая-либо подцель не достигается, то и программа заканчивает работу неудачно. Хотя, если смотреть на программу извне, разница между этими двумя случаями не обязательно должна быть видна; программа просто завершается.

 

2.3.5.Раздел..database 
Программа на ТП представляет собой совокупность фактов и правил. Иногда в процессе выполнения программы может возникнуть потребность видоизменения (модификации, удаления или добавления) некоторых фактов, с которыми работает программа. В таком случае факты образуют динамическую или внутреннюю базу данных, она может изменяться в процессе выполнения программы. В ТП для объявления в программе фактов, которые должны стать частью динамической (или изменяющейся) базы данных, предусмотрен специальный раздел - datаbase. Такой раздел базы данных объявляется с помощью ключевого слова database, куда включаются объявления фактов, предназначенных для организации динамической базы данных (БД). В ТП имеется несколько встроеннных предикатов, существенно облегчающих использование динамической БД (consult,save,assert,retract). 

2.3.6.Раздел..constants 
В программе на ТП можно объявить и использовать символьные константы. Раздел объявления констант начинается ключевым словом constants, после которого следуют сами объявления с соблюдением следующего синтаксиса:  
<Идентификатор> = <Макроопределение> 
<Идентификатор> - это имя константы, а <Макроопределение> - это то, что этому имени соответствует. Каждое <Макроопределение> заканчивается символом <конец строки>, так что в одной строке может размещаться только одна константа. На объявленные таким образом константы можно затем ссылаться в программе. 
Перед компиляцией программы ТП заменит каждую константу действительной строкой, которую она представляет. На использование констант накладываются следующие ограничения: 
- определение константы не может ссылаться само на себя; 
- в программе может быть несколько разделов constants, но константы должны объявляться до их использования; 
- идентификаторы констант являются глобальными и могут объявляться только один раз. Несколько объявлений одного и того же идентификатора приведут к выдаче сообщения Constant identifier can only be declared once (Идентификатор константы может быть объявлен только один раз).

 
2.3.7. Разделы global

ТП позволяет объявить в программе некоторые домены, предикаты и выражения глобальными (в отличие от локальных). Это можно сделать, сформировав в самом начале программы отдельные разделы global domains, global predicates и global database.

 

 

2.4. Пролог-программа

Пролог-программу следует рассматривать как доказательство теоремы, сформулированной в разделе GOAL. Доказательство использует аксиомы, сформулированные как факты Пролога, а также вспомогательные теоремы, сформулированные в виде предложений.

Часто используемый термин цель - это и есть теорема или целевое утверждение. Предложения и отдельные его утверждения рассматриваются как подцели.

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

Для формулирования целей и подцелей используются переменные.

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

Переменная анонимная  - переменная "_",  используемая вместо обычной  переменной  в  том  случае,   когда не важно  значение соответствующей ей обычной переменной.

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

Утверждение - одно или несколько отношений, связанных конъюнктивно (отношения, перечисляемые через запятую).

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

Правило - утверждение, истинность которого зависит от выполнения ряда условий.

Любое математическое выражение можно назвать отношением, поскольку его можно представить в префиксной записи, и тогда у нас получится обращение к предикату (вызов процедуры).

Правила состоят из двух частей - головы правила и тела правила - соединенных логической связкой «если»: (if). И синтаксически и семантически левая часть правила – это отношение, что то же самое, что и утверждение. Т.е. правило в целом читается как «отношение имеет место быть, если верны утверждения в правой части» или «утверждение в левой части верно, если верны утверждения в правой части правила».

 

 

 

 

 

 

 

 

 

 

3. Техническое задание

3.1. Общие сведения

Разработать информационно – справочную систему «Справочная система железнодорожной компании »

3.2. Назначение и цели создания системы

Цель: предоставление справочной информации железнодорожных компаний.

Назначение: программа предназначена для выдачи справочной информации, а также для формирования СПРАВКИ по определенным критериям:

  1. По номеру рейса;
  2. По времени отправления;
  3. По месту назначения.

Информация о работе Экспертная система железнодорожных рассписаний