Экспертная система железнодорожных рассписаний
МИНИСТЕРСТВО НАУКИ И ОБРАЗОВАНИЯ РФ
ФГБУ УВПО «ДАГЕСТАНСКИЙ
ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ
Факультет Информатики и Управления
Кафедра
по дисциплине
«Функциональное и Логическое Программирование»
на тему:
«Экспертная система железнодорожных расписаний»
Выполнил:
Приняла:
Аннотация
В данной курсовой работе рассматривается реализация экспертной системы железнодорожных расписаний, для решения которой используется язык логического программирования Turbo Prolog. А так же будет рассматриваться работа написанной программы и исследование предметной области.
Данная курсовая работа содержит:
Глав – 5
Листов – 37
Рисунков – 6
Таблиц – 0
Количество используемой литературы – 7
Ключевые слова:
Унификация – операция сопоставления.
Предикат – имена сопоставляемых значений (своего рода - функции).
Правило – отношение, которое состоит из одной головной цели
и одной или более хвостовых целей, которые истинны при некоторых условиях.
Факт – одиночная цель, которая, безусловно, истинна.
Содержание:
Введение…………………………………………………………
- Исследование предметной
области ..............................
.............................. ...5
1.1. Характеристика железнодорожного транспорта…………………………5
1.2. История
железных дорог России........................
1.3.Информационно–справочная
система по пассажирским
1.4. Понятие об информационно-справочных системах и их программная
реализация....................
1.5. Базы
данных и способы их представления.................
2. Логическое программирование..............
2.1. Пролог………………………………………………………………
2.2. Базовые
понятия и термины Пролога.......................
2.3. Структура
программы на ТП............................
2.4. Пролог-программа
..............................
3. Техническое
задание ..............................
3.1. Общие
сведения…………………………………………………………
3.2. Назначение и цели создания системы…………………………………….25
3.3. Требование к системе………………………………………………………25
4. Описание программы………… …………….........................
4.1. Общие
сведения…………………………………………………………
4.2. Функциональное назначение………………………………………………26
4.4. Входные
данные…………………………………………………………….
4.5. Выходные
данные…………………………………………………………..
5. Руководство оператора.....................
5.1. Назначение
программы……………………………………………………
5.2. Выполнение
программы…………………………………………………..
5.3. Сообщения
оператору…………………………………………………….
5.4. Порядок
выполнения вызова программы.....................
5.5. Обращение
к программе.....................
5.6. Пример работы программы……………………………………………….30
Заключение...……………………………………………
Список литературы………………………………………………..
Приложения
Приложение 1. Листинг программы
………...………………….................
Введение
Данная курсовая работа разработана в соответствии с требованиями курсового проектирования.
В данной курсовой работе проведено исследование предметной области, определены цели создания системы и ее назначение, описана программа и разработано руководство оператору.
Данная курсовая работа разработана средствами языка Пролог в среде Turbo Prolog v 2.0. В структуре языка заложены возможности простой и чрезвычайно эффективной работы с базами данных, что позволяет на его основе создавать различного рода информационно - справочные системы. Структура языка Пролог соответствует структуре реляционных баз данных. Так отношению в РБД соответствует предикат в Прологе, элементу - факт, атрибуту отношения - аргумент предиката и т. д. Встроенные в Пролог предикаты работы с окнами позволяют создать дружественный интерфейс для работы пользователя с информационно - справочной системой. Но язык Prolog своеобразен и существенно отличается от других языков программирования. В частности, если у задачи есть несколько решений, они все будут найдены.
- Исследование предметной области
1. 1.Характеристика железнодорожного транспорта
Железнодорожный транспорт играет важную роль в функционировании и развитии товарного рынка страны, в удовлетворении потребности населения в передвижении. Он является основным звеном транспортной системы России и большинства стран СНГ. Особая роль железных дорог Российской Федерации определяется большими расстояниями перевозок, отсутствием внутренних водных путей в главных сообщениях Восток – Запад, прекращением навигации на реках в зимний период, удаленностью размещения основных промышленных и аграрных центров от морских путей. В связи с этим на их долю приходится почти 50% грузооборота и более 46% пассажирооборота всех видов транспорта страны.
Удельный вес железных дорог в общем объеме перевозок грузов транспортом общего пользования в 2000 году достиг 35,68% за счет снижения доли автомобильного транспорта до 25,0%. Доля внутреннего водного транспорта составила 3,98%, морского – 1,54%, воздушного – 0,03%.
В пассажирообороте доля железных дорог оценивается в 42%. вместе с тем полностью реализовать свое преимущественное положение железной дороге не удается из-за слабого взаимодействия с другими видами транспорта.
Основной сферой применения железнодорожного транспорта являются массовые перевозки грузов и пассажиров в межрайонном, междугородном и пригородном сообщениях, при этом преобладают грузовые перевозки, которые дают свыше 80% дохода. Велико значение железных дорог России в развитии межгосударственных связей со странами СНГ и международных перевозках. Густота железнодорожной сети России составляет 0,51 км на 100 км2, что значительно ниже густоты железных дорог не только развитых стран, но и большинства бывших союзных республик СССР (на Украине – 2,76км, в Белоруссии – 2,77км, Латвии – 3,6км, Грузии – 2,2км, Узбекистане – 0,79км). Очевидно, что в России необходимо строительство новых железнодорожных линий, особенно для освоения крупных месторождений топлива и сырья на востоке страны.
Технико-экономические особенности и преимущества железнодорожного транспорта заключаются в следующем:
- возможность сооружения на любой сухопутной территории, с помощью мостов, тоннелей и паромов – осуществления железнодорожной связи и с разделенными, в том числе островными, территориями (как, например, между материком и островом Сахалин);
- массовость перевозок и высокая провозная способность железных дорог;
- универсальность использования для перевозок различных грузов и возможность массовых перевозок грузов и пассажиров с большой скоростью;
- регулярность перевозок независимо от времени года, времени суток и погоды;
- возможность создания прямой связи между крупными предприятиями по подъездным путям и обеспечение доставки грузов по схеме «от двери до двери» без дорогостоящих перевалок;
- по сравнению с водным транспортом, как правило, более короткий путь перевозки грузов;
- сравнительно невысокая себестоимость перевозок по сравнению с другими видами транспорта, кроме трубопроводного.
Железнодорожный транспорт и далее будет оставаться ведущим видом транспорта страны, однако темпы его развития могут быть меньшими, чем автомобильного, трубопроводного и воздушного, ввиду их недостаточного развития в нашей стране.
1.2. История железных дорог России
Первые железные дороги в России появились на горных заводах Алтая и Урала в начале XIX в. В 1810 г. на Колыванском заводе на Алтае Петр Фролов проложил железную дорогу длинной в два километра с конной тягой. В 1834 г. на Нижнетагильском заводе крепостные механики Ефим и Мирон Черепановы построили железную дорогу с паровой тягой. Первой железной дорогой общего пользования в России была Царскосельская железная дорога протяженностью 26 км, соединявшая с 1387 г. Петербург с Царским Селом и Павловском.
В первый период железнодорожного строительства в России строились прежде всего дороги, обеспечивавшие стратегические интересы Российской империи и интересы государственного управления. В 1843-1851 гг. были построены крупнейшие в Европе двух путные железные дороги Петербург-Москва и Петербург – Псков – Варшава - Вена, соединявшие главный центр торговли и промышленности страны -Московский район с Петербургским морским портом, а столичный Петербургский район с сетью железных дорог Западной Европы.
Во второй период строительства (середина 60-х годов-80-е годы XIX в.) были обеспечены связи Москвы с её сырьевыми и продовольственными базами и основных хлебопроизводящих районов России с морскими портами. Железная дорога Москва - Нижний Новгород соединила Москву с главной речной магистралью - Волгой, а через неё и с более отдаленными районами России. Линии Москва-Рязань – Воронеж - Зверово, Козлов -Тамбов-Саратов, Москва -Тула -Орел -Курск -Харьков, продолженные затем до Севастополя, Ростова-на-Дону и Владикавказа связывали старую столицу России с Черноземным центром, Украиной, Донбассом, Поволжьем и Северным Кавказом. Во втором периоде строительства были заложены основы железнодорожной сети европейской части России, напоминающей паутину, исходящую из одного центра - Москвы. Важным достижением был также выход железных дорог к Волге, Балтийскому и Черному морям. К началу 90-х годов XIX в. сеть железных дорог России составляла около 30 тыс.км.
В годы первой мировой войны для вывоза из внутренних районов Сибири были построены линии Новосибирск - Барнаул - Семипалатинск и Плетаево – Троицк - Кустанай. Для обеспечения связей с зарубежными странами в обход Балтийского моря, выходы из которого были блокированы Германией, срочно строилась дорога Волхов-Петрозаводск-Мурманск.
Наиболее крупным недостатком железных дорог России была техническая неполноценность, а также мощность составов и высокие цены за перевозки. Тем не менее, в 1913 г. грузооборот был больше речного транспорта в 6 раз.
Первая мировая война вызвала необходимость срочной перестройки новых железнодорожных линий. В 1916 г. Было закончено строительство Мурманской железной дороги (от Петрозаводска до Мурманска).
После Октябрьской революции Казённые железные дороги перешли в видение государства, а в 1918г. Были национализированы и частные дороги. Война 1914-1918 гг. привела транспорт России в состояние разрухи. Для восстановления пути, сооружений и подвижного состава, а также налаживания работы транспорта требовались чрезвычайные меры.
В 1926 году первый в стране электрифицированный железнодорожный участок Баку – Сабунчи – Сураханы. Значительные успехи в реконструкции железных дорог и улучшении их работы достигнуты за годы довоенных пятилеток (1928 – 1941гг.).
За годы Великой Отечественной войны фашистами было разрушено 65 тыс. км железнодорожного пути, 13 тыс. железнодорожных мостов, 4100 станций, 317 паровозных депо. В послевоенной пятилетке железнодорожный транспорт не только залечил раны войны, но и начал продвигаться вперёд в своем развитии.
В 1974г. Началось сооружение Байкало-Амурской магистрали протяжённостью 3147 км для освоения природных богатств Сибири и Дальнего Востока и ускорения развития производительных сил в этих районах.
После распада СССР и образования СНГ объем перевозок на железных дорогах, естественно, уменьшился и продолжал падать из года в год из-за нарушения экономических связей с бывшими республиками. В 1998 г. Грузооборот составил 44%, а пассажирооборот 60% от объема железнодорожных перевозок бывшего СССР. В последние годы создаются новые технические средства, соответствующие уровню XXI века, в том числе локомотивы и вагоны для высокоскоростного движения, устройства автоматики, телемеханики и связи.
В августе 2000 г. Коллегия МПС обсудила и поддержала проект Концепции развития структурной реформы железнодорожного транспорта. Концепция предусматривает создание акционерной компании «Российские железные дороги» (РЖД) для осуществления выделяемых из МПС хозяйственных функций на основе общего законодательства, регулирующего рыночные отношения.
1.3. Информационно–справочная система (ИСС) по пассажирским железнодорожным перевозкам |
В 2001 году на железной дороге сдана в эксплуатацию новая информационно-справочная система железнодорожного агентства.
С помощью этой системы населению и работникам железной дороги предоставляются справки в объеме информационной подсистемы, а также сведения по движению пригородных поездов по железной дороге (с учетом оперативных изменений, отмен и назначений), и ряд других сведений, интересующих пассажиров по вопросам, прямо или косвенно связанных с пользованием железнодорожным транспортом. ИСС предоставляет следующую информацию:
- расписание движения поездов дальнего следования (время в пути, отправления, прибытия);
- правила проезда в поездах дальнего следования, права и обязанности пассажиров и обслуживающего персонала, услуги в поездах;
- наличие свободных мест в поездах дальнего следования;
- стоимость проезда всех категорий пассажиров в поездах дальнего следования всех категорий;
- стоимость билетов и абонементов по пригородному движению;
- маршрут проезда поездами дальнего следования и сведения о станциях пересадок;
- правила и стоимость провоза ручной клади, багажа и грузобагажа;
- сведения о прибытии, отправлении, фактическом движении (опоздании) поездов дальнего следования; сведения об отмене и назначении пассажирских поездов дальнего следования об услугах, предоставляемых железнодорожное агентство (ЖА) и вокзалами;
- о правилах возврата билетов.
Система также предоставляет информацию о движении 3331 пригородного поезда, в том числе:
- о поездах, курсирующих между двумя станциями в определенный период времени;
- о времени отправления со станции начала поездки;
- о прибытии поезда на интересующую станцию;
- о времени в пути; о пунктах пересадки;
- сведения об отмене и назначении пригородных поездов;
- о поездах, курсирующих от станции пересадки до станции назначения.
В новой информационно-справочной системе реализовано несколько способов доступа конечных пользователей к информации, в том числе:
по телефону через справочное бюро, операторы которого включены в корпоративную информационно-вычислительную сеть (КИВС) дороги;
через любой персональный компьютер, включенный в КИВС дороги при наличии разрешения на доступ;
через информационные киоски, установленные на вокзалах и других местах;
через плазменные панели;
через Internet.
Внешний интерфейс ИСС разработан в современном WEB-ориентированном виде. Выходные формы, получаемые по запросам, представляют собой таблицы. При построении пользовательского диалога учитываются уточняющие вопросы пассажира. Технически общение пользователя с системой осуществляется с использованием сенсорного монитора. ИСС необходимы для населения в связи с тем, что они:
- ускоряют получение информации населением без необходимости выстаивания в очередях в билетных кассах;
- снижают вероятность злоупотреблений со стороны кассиров, которые иногда скрывают наличие свободных мест, искусственно создавая их дефицит;
- снижают загрузку билетных кассиров, так как пассажир может заранее ознакомиться с вариантами поездки и выбрать оптимальный без длительного диалога с кассиром, а это, в свою очередь, положительно влияет на время обслуживания пассажиров и уменьшение очередей.
1.4. Понятие об информационно-справочных системах и их программная реализация
Информационно-справочные системы – это программы-оболочки, служащие для управления массивами и базами данных. В век всеобщей компьютеризации информационно-справочные системы значительно облегчают труд человека во всех отраслях народного хозяйства. Значительно упростилась работа справочных служб авиакомпаний после создания в аэропортах компьютерных баз данных рейсов самолетов. Области применения информационно-справочных систем безграничны: это ведение статистики удоя скота на ферме, составление каталогов книг в библиотеках и произведений искусства в музеях, сбор данных о наличии рабочих вакансий в данном регионе и многие другие.
Одним из способов программной реализации информационно-справочной системы является использование для ее создания языка логического программирования Пролог. В данной реализации языка содержится множество встроенных предикатов, существенно облегчающих написание таких систем.
Информационно-справочные
системы предназначены для управления
различными информационными и справочными
массивами, в число которых входят и базы
данных. Эти системы организовывают определенный
интерфейс пользователя с функциями обработки
информации самой системы. Набор возможностей
таких систем обычно включает в себя коррекцию
структуры используемого объекта (инкапсулирующего
информацию), работа с его составляющими
– дополнение, редактирование, удаление
(в случае, когда роль такого объекта выполняет
база данных, это – записи), простой просмотр,
поиск элементов. Также необходимо обеспечить
для такой системы и функции постоянного
надежного хранения – в простейшем случае,
это – запись базы из памяти в файл на
диске и считывание его с диска в память.
Программная реализация мало отличается
от подобной концепции, но конкретизирует
абстрактные операции в конкретные процедуры
и функции (или же объекты) и зависит полностью
от возможностей языка и поставленной
задачи.
1.5. Базы данных и способы их представления
База данных в простейшем
случае – упорядоченная структура
данных в виде таблицы, имеющей
определенный идентификатор (имя), каждая
запись которой может объединять разнотипные
данные, причем все записи одной базы
имеют одинаковую структуру. Каждая таблица
состоит из n-го количества записей (величина
n зависит от возможностей конкретной
системы), каждая из которых имеет одну
и ту же структуру (в рамках одной таблицы)
и может объединять в себе несколько разнородных
объектов (их количество также зависит
целиком и полностью от возможностей системы).
Работа с базой данных предполагает в
себе возможность работать с записями
(либо изменять структуру таблиц).
В языке программирования Пролог база данных описывается в отдельном разделе, именуемом database. Таких разделов может быть несколько в одной программе и каждый из них, если они действительно представляют собой разные БД, должны иметь разные имена. В случае отсутствия имени у базы данных, ей дается имя по умолчанию – dbasedom.
Работу с загружаемыми базами данных в Прологе реализуют следующие стандартные предикаты: assert – добавить запись в БД, retract – удалить указанную запись, save – сохранить указанную БД в файле, consult – загрузить БД из файла в память. Существуют три модели представления баз данных: иерархическая, сетевая и реляционная. В силу особенностей языка Пролог, с его помощью реализуется реляционная модель. Каждая строка в базе данных называется элементом отношения, каждая колонка – атрибутом отношения, количество колонок арностью, а количество строк - мощностью. В языке программирования Пролог атрибуту отношения соответствует аргумент предиката, арности – количество аргументов в предикате, отношению – предикат, элементу – факт, и мощности – число фактов.
Исходя из выше перечисленных соответствий Пролог был выбран для реализации работы.
- Логическое программирование
Логическое программирование — это направление современного программирования, возникшее первоначально в рамках работ по искусственному интеллекту. Язык программирования Пролог относится к числу важнейших языков, используемых в символьной обработке и в исследованиях по искусственному интеллекту. Он составляет основу для обучения методам искусственного интеллекта, исследованиям и практическому применению в этой области. К системам искусственного интеллекта относятся экспертные системы, программы доказательства теорем, интеллектуальные роботы, системы машинного перевода и др. Все эти задачи, делающие использование Пролога естественным, имеют свои особенности реализации:
1. Все они используют символьное представление информации и символьные вычисления в широком смысле, включая не только операции обработки цепочки символов, но и достаточно сложные структуры вроде графов. Такого рода работа обеспечивается следующими средствами Пролога:
- сопоставлением с образцом, позволяющим идентифицировать элементы структуры с определенными (синтаксическими) свойствами;
- рекурсией, позволяющей лаконично описывать операции на структурах в терминах операций на подструктурах;
- синтаксисом, позволяющим описывать структуры данных в удобной форме выражений.
2. Это задачи, в которых требуется некоторый вид поиска. Пролог идеально подходит для создания баз данных и баз знаний, а также экспертных систем, основанных на базах знаний.
2.1. Пролог
Пролог (РROLOG, PROgramming in LOGic - программирование в терминах логики) - один из наиболее широко используемых языков логического программирования.
Пролог может быть использован в различных приложениях, относящихся к искусственному интеллекту:
– общение с ЭВМ на естественном языке;
– символьные вычисления;
– написание компиляторов;
– базы данных;
– экспертные системы и т.д.
2.2. Базовые понятия и термины Пролога
Пролог - это язык программирования, предназначенный для обработки символьной нечисловой информации. Особенно хорошо он приспособлен для решения задач, в которых фигурируют объекты и отношения между ними.
Любой класс объектов определяется набором составляющих его подъобъектов и структурой. Элементарные классы объектов не имеют структуры и описываются одним из встроенных типов данных, которые называются еще встроенными доменами.
- Домен - имя простого или составного терма, которое, в свою очередь, может замещать этот терм в определении другого сложного терма.
domains
..............................
dom1=functor1(integer,string)
dom2=functor2(symbol,real,
..............................
Конкретный экземпляр элементарного класса называется атомом. Это - числовые, символьные и строчные константы.
- Термы - объекты данных в Прологе. Терм может быть константой, переменной или составным термом (структурой). Константами являются целые и действительные числа, например:
0, -l, 123.4, 0.23E-5,
К константам относятся также атомы, такие, как:
голди, а, атом, +, :, 'Фред Блогс', [ ]
- Атом - любая последовательность символов, заключенная в одинарные кавычки. Кавычки опускаются, если и без них атом можно отличить от символов, используемых для обозначения переменных. Приведем еще несколько примеров атомов:
abcd, фред, ':', Джо
Допустимы случаи, когда атом не содержит ни одного символа (так называемый 'нулевой атом') или содержит непечатаемые символы.
Как и в других языках программирования, константы обозначают конкретные элементарные объекты, а все другие типы данных в Прологе составлены из сочетаний констант и переменных. Имена переменных начинаются с заглавных букв или с символа подчеркивания "_". Примеры переменных:
X, Переменная, _3, _переменная
Если переменная используется только один раз, необязательно называть ее. Она может быть записана как анонимная переменная, состоящая из одного символа подчеркивания "_". Переменные, подобно атомам, являются элементарными объектами языка Пролог.
Завершает список синтаксических единиц сложный терм, или структура. Все, что не может быть отнесено к переменной или константе, называется сложным термом. Следовательно, сложный терм состоит из констант и переменных. Теперь перейдем к более детальному описанию термов.
- Константы в Прологе константа может быть атомом или числом.
- Числа - большинство реализации Пролога поддерживают целые и действительные числа. Для того чтобы выяснить, каковы диапазоны и точность, чисел следует обратиться к руководству по конкретной реализации.
- Переменная - понятие переменной в Прологе отличается от принятого во многих языках программирования. Переменная не рассматривается как выделенный участок памяти. Она служит для обозначения объекта, на который нельзя сослаться по имени. Переменную можно считать локальным именем для некоторого объекта.
Синтаксис переменной довольно прост. Она должна начинаться с прописной буквы или символа подчеркивания и содержать только символы букв, цифр и подчеркивания.
Переменная, состоящая только из символа подчеркивания, называется анонимной и используется в том случае, если имя переменной несущественно.
Областью действия переменной является утверждение. В пределах утверждения одно и то же имя принадлежит одной и той же переменной. Два утверждения могут использовать одно имя переменной совершенно различным образом. Правило определения области действия переменной справедливо также в случае рекурсии и в том случае, когда несколько утверждений имеют одну и ту же головную цель. Этот вопрос будет рассмотрен в далее.