Рассматриваются вопросы реализации нечетких запросов в интеллектуальной информационной системе по железнодорожным перевозкам. Приводятся результаты использования разработанной системы для диагностики причин потерь нефтепродуктов при железнодорожной транспортировке.
Механизмы нечетких запросов к реляционным базам данных, базирующиеся на теории нечетких множеств Заде, были впервые предложены в 1984 году и впоследствии получили развитие в работах Д. Дюбуа и Г. Прада. Большая часть данных, обрабатываемых в современных информационных системах, носит четкий, числовой характер. Однако в запросах к базам данных часто присутствуют неточности и неопределенности.
Постановка задачи
В статье рассматривается созданная автором система, основанная на знаниях (СОЗ), для определения потерь нефтепродуктов при железнодорожной транспортировке. Система позволяет использовать нечеткие запросы, а также содержит механизм для ввода и редактирования функций принадлежности. При выводе результатов также вычисляется экономический эффект от использования того или иного решения. Система является частью (подсистемой) интеллектуальной информационной системы учета и контроля нефтепродуктов при железнодорожной транспортировке, позволяющей автоматизировать рабочее место операторов, исключить возможные ошибки, снизить долю человеческого фактора, строить различного рода отчеты, проводить анализы. Данные хранятся распределенно, обеспечивая синхронизацию версий. Использование единой базы данных позволяет одновременную работу нескольких пользователей системы, которые могут быть территориально рассредоточены.
Рис. 1. Внесение и редактирование знаний (проблем) с элементами нечеткой логики
Методы решения
Для того чтобы пользователь мог эффективно взаимодействовать с системой, ее интерфейс должен:
1) принимать запросы от пользователя и выдавать на них ответы;
2) давать советы и объяснения пользователю;
3) управлять приобретением знаний. Взаимодействие эксперта, пользователя и структурных частей системы можно представить в виде базовой структуры системы.
СОЗ должна иметь как минимум три режима работы: режим пополнения и редактирования базы знаний и базы данных, режим приобретения знаний и режим решения задач. В режиме приобретения знаний эксперт общается с системой при посредничестве инженера знаний, в режиме решения задач в общении с системой участвует пользователь, которого интересует результат и способ его получения [1].
В рассматриваемой системе используется продукционная модель знаний. На рис. 1 приведен пример, в котором заносится правило № 5. В поле Problem Description вносится описание проблемы, в поле Rule вписывается правило на языке SQL, также указывается имя автора правила, даты создания и модификации правил. Структурной единицей для анализа является железнодорожная цистерна.
Для каждого правила вносятся возможные решения, с указанием цены. Цена может быть фиксированной, на цистерну или на тонну груза. При выдаче рекомендаций система будет использовать тип стоимости в зависимости от того, сколько цистерн попадает под данное решение или какой вес продукта в них содержится.
Рассмотрим более подробно правило № 5 (рис. 1). На естественном языке оно звучит как “погрузка холодного продукта высокой плотности”.
При помощи инженера знаний, который знаком со структурой базы данных, составляется нижеследующее правило, которое заносится в таблицу kb_knowledge (структура таблицы приведена в приложении):
SELECT qty = COUNT(*),
wt = SUM(rtcintrain.gross_gost_ calc_load)
FR OM rtcintrain
KEY LEFT JOIN trainunit
WHERE ^product_is_cold(temperature_load)^ >= 0.9 AND
^density_is_high(density20_load)^ >=0.9 AND trainunit.id IN (:_ids)
Любое правило должно представлять собой инструкцию SELECT языка SQL с обязательным указанием числа железнодорожных цистерн, попадающих под данное правило (qty = COUNT(*)), и веса продукта, содержащегося в данных цистернах (wt = SUM(rtcintrain.gross_gost_ calc_load)). Критерии, согласно которым цистерна попадает под действие данного правила, перечисляются в части WH ERE, представляющей собой предложение команды SELECT, которое позволяет устанавливать предикаты, условие которых может быть верным или неверным для любой строки таблицы правил.
В рассматриваемом правиле используются два нечетких понятия: “продукт холодный” (product_is_cold) и “плотность высокая” (density_is_high). Данные понятия описаны при помощи функций принадлежности (рис. 2). Существует свыше десятка типовых форм кривых для задания функция принадлежности [2]. В данной системе используются трапецеидальный и гауссов типы функции принадлежности [3].
Для задания трапецеидальной функции принадлежности необходима четверка чисел a, b, c, d (1.1):
(1.1)
Функция принадлежности гауссова типа описывается формулой (1.2):
(1.2)
Функция принадлежности гауссова типа оперирует двумя параметрами. Параметр c обозначает центр нечеткого множества, а параметр s отвечает за крутизну функции.
Как показано на рис. 2, необходимо задать имя функции принадлежности, дать короткое описание (пояснения, используемые переменные и т. д.), указать тип (трапецеидальный, гауссов), заполнить необходимые коэффициенты, после чего данная функция принадлежности может использоваться в системе для составления правил. Как известно, функция принадлежности возвращает результат в диапазоне [0; 1]. По умолчанию считается, что значение, поданное на вход функции принадлежности, удовлетворяет поисковым критериям, если функция возвращает значение і 0,9. Однако пользователь сам может расширять или сужать поиск, меняя данный коэффициент в правилах.
Рис. 2. Список функций принадлежности
Следует отметить, что правила могут быть довольно сложными, поскольку в качестве языка написания правил используется SQL. Например, можно составить правило, в условиях которого могут присутствовать такие значения, как средняя плотность продукта в прошлом месяце, максимальная температура в определенный период времени, соответствие типов вагонов при погрузке и разгрузке, и т. д. Сложные выражения могут оформляться в виде хранимых процедур и функций с последующим их использованием в системе. Таким образом, ограничения могут накладываться только возможностями SQL-сервера, на котором функционирует данная система.
После того, как на вход правил пользователь подает первичные ключи группы железнодорожных цистерн, сервер пытается выполнить правило и возвращает всегда одну строку, которая содержит количество цистерн, в которых возникла данная проблема, а также вес продукта, который находится в цистернах (рис. 3). Также вычисляется экономический эффект от внедрения каждого решения. Для этого нужно указать стоимость за метрическую тонну (Price Per MT).
Рассмотрим пример, показанный на рис. 2. Для группы цистерн в составах с номерами 1, 2, 3, 4, 5, содержащих продукт KUMKOL CRUDE OIL, был произведен запрос к системе, в результате которого был получен результат, приведенный на рис. 3. Система последовательно подставила идентификаторы вагонов, содержащихся в выделенных составах, в каждое правило базы знаний. Если правила, записанные при помощи SQL-выражений, возвращают значение qty > 0, то правило считается выполненным и выводится для дальнейшего анализа. В вышеприведенном примере одной из причин потери груза явилась “погрузка холодного продукта высокой плотности”. Этот нечеткий запрос позволил найти требуемую информацию среди данных, носящих четкий числовой характер. Таким образом, подавая на вход системы различные группы составов с цистернами, появляется возможность не только определять причины и количественный характер потерь, а также возможные качественные отклонения.
Выводы
Нечеткие запросы к базам данных - перспективное направление в современных системах обработки информации. Данный инструмент дает возможность формулировать запросы на языке, близком к естественному. Для этой цели разработана нечеткая реляционная алгебра и специальные расширения языков SQL для нечетких запросов. Нечеткие запросы перспективно использовать в областях, где осуществляется выбор информации из баз данных с использованием качественных критериев и нечетко сформулированных условий [4]. Разработанная система позволяет накапливать знания, создавать и редактировать правила, задавать системе нечеткие запросы, тем самым эффективно диагностировать причины потерь нефтепродуктов при железнодорожной транспортировке.
Рис. 3. Запрос к системе и вывод результатов
Литература
1. Круглов В.В., Дли М.И. Интеллектуальные информационные системы: компьютерная поддержка систем нечеткой логики и нечеткого вывода. М.: Физматлит. 2002.
2. Заде Л. Понятие лингвистической переменной и его применение к принятию приближенных решений. М.: Мир. 1976.
3. Паклин Н. Нечеткая логика - математические основы. http://www.basegroup.ru.
4. Паклин Н. Нечеткие запросы к реляционным базам данных. http://www.basegroup.ru.
Багиров Т.А.,
E-mail: teymur_bagirov@sgs.com