Предикатная модель гибкой структуры системы трубопроводов

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

где: Т - множество базовых элементов (символов, букв или слов); S - множество синтаксических правил, позволяющих строить из Т синтаксически правильные выражения или формулы; А - множество априорно истинных выражений, называемых аксиомами; Р - семантические правила, или правила вывода, позволяющие расширять множество аксиом А за счет новых формул, которые также являются истинными в данной формальной системе.

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

  • 1. Наличие развитых процедур вывода новых фактов из имеющихся фактов, которые явно представлены в базе знаний. Это определяет интенсивное использование логических моделей при создании интеллектуальных систем.
  • 2. Возможность простой и ясной нотации для записи фактов, обладающей четко определенной семантикой (по крайней мере, для методов, основанных на логике высказываний и исчислении предикатов 1 -го порядка). Каждый факт представляется в БЗ только один раз, независимо от того, как он будет использоваться в дальнейшем. База знаний, созданная с применением логических моделей, как правило, достаточно проста для понимания.

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

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

Исчисление высказываний (пропозициональное исчисление) рассматривает высказывания, или утверждения, которые могут быть либо истинными (true), либо ложными (false). Каждое простое высказывание можно записать в следующей символической форме (нотации): А= “насос увеличивает давление жидкости” или В-“теплообменник применяют для передачи теплоты”, где

А и В - истинные простые высказывания (атомы). Для представления сложных высказываний (формул) необходимо простые высказывания объединять с использованием логических связок (.“• - отрицание; д - конъюнкция; v - дизъюнкция; —> - импликация; = (<->) - эквивалентность и скобок. Если имеются два простых высказывания: С= “в технологическую схему входит насос” и D=“b технологическую схему входит фильтр-пресс”, то сложное высказывание Е= “в технологическую схему входят насос и фильтр-пресс ” представляет собой конъюнкцию, то есть CaD).

Исчисление предикатов 1-го порядка является расширением классического исчисления высказываний, в котором каждое высказывание рассматривается как единое целое, не обладающее внутренней структурой, а истинность и ложность формул и атомов фиксированы. В исчислении предикатов основным элементом является предикат - переменное высказывание (логическая функция P(xi, х2,..., хп)), истинность или ложность которого зависит от значений входящих в предикат предметных переменных (аргументов хь х2, ..., хп). Исчисление предикатов включает все формулы исчисления высказываний, а также формулы, которые кроме символов высказываний содержат символы предикатов, предметные переменные и символы кванторов: V - квантор общности (для всех); 3 - квантор единственности (существует такой). Кванторы употребляются только с предметными переменными.

В исчислении предикатов, в отличии от исчисления высказываний, заданы правила оперирования не только с логическими связками, но и с кванторами. В исчислении предикатов высших порядков кванторы употребляются как с предметными переменными, так и с предикатными символами и функциональными переменными. Каждому предикатному символу соответствует некоторое имя, представляющее собой название отношения, отображаемого этим предикатом. В общем случае отношение - это совокупность (р. упорядоченных наборов из п элементов данного множества в каждом наборе элементов. Элементы, входящие в один набор, находятся в соотношении (р. между собой, и его обозначают формулой (р (а/, а2, a,j.

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

При использовании интеллектуальных систем ситуационного управления магистральным транспортом газа важной задачей является неформализованная задача (НФЗ) моделирования гибкой структуры системы магистральных трубопроводов, успешно решаемая с использованием языка программирования ПРОЛОГ, модифицированная версия которого имеет средства модульности и возможность указания направленности отношений.

Рассмотрим применение ПРОЛОГ а к решению НФЗ разработки гибкой структуры системы магистральных трубопроводов (МГТ), соединяющей три источника различных нефтепродуктов (а,Ь,с) и четыре емкости (d,e,fg). Схема МГТ показана на рис. 8.2.1. Каждая из указанных четырех емкостей может быть заполнена из любого источника. Необходимо разработать такую гибкую структуру системы технологических трубопроводов (СТТ) из заданного источника в выбранную емкость, чтобы избежать (если это необходимо) контакта с какими-либо определенными трубопроводами, в которых могут содержаться другие нефтепродукты.

Для того, чтобы представить эту задачу на языке ПРОЛОГ, определим сначала все связи МГТ, отметив, какие узлы связаны между собой. Запись c(a,h) означает, что узлы а и И связаны между собой.

Схема соединения трех резервуаров-источников и четырех емкостей ХТС

Рис. 8.2.1. Схема соединения трех резервуаров-источников и четырех емкостей ХТС

Рассматривается возможность нахождения пути из источника (“из”) в узел назначения (“Ь”). Рекурсивно это запишется следующим образом:

путь выходит из “из” в “Ь”, если существует связь из “из” в промежуточную вершину “через” и можно пройти из “через” в узел назначения “Ь”: идти (из, Ь):- с (из, через), идти (через, b).

Для того, чтобы поиск осуществлялся правильно, трасса в МГТ должна исключать прохождение через узлы, которые уже рассматривались—список “запрет” (“Avoid List”). В противном случае возможно появление контуров бесконечной длины. Скорректированное правило запишется теперь следующим образом:

идти (из, Ь, запрет): - с (из, через),

нельзя t (член (через, запрет)), идти (через, Ь, [через | запрет]).

Согласно записанному правилу каждая связь направлена только в одну сторону. Если путь может быть направлен как из “а” в “Ь” так и из “Ь” в “а”, то необходимо записать: с (а,Ь). с (Ь,а).

Таким образом, вместо с (из, через) нужно записать (с (из, через); с (через, из)), где означает “ИЛИ”.

Полная программа на языке ПРОЛОГ для рассматриваемой НФЗ разработки структуры МГТ имеет вид: с (a,h). с (h,i). с (h,j). с (i,d). с (i,l). с 0,с), с (j,k). c(b,j). c(k,l). с (к,т). с (с,т). с (т,п). с (n,J). с (n,g).

go (From, From, Avoid List).

go (From, To, Avoid List):-(c (From, Via); c (Via, From)) not (member (Via, Avoid List), go (Via, To [Via Avoid List]), member (X,[ J).

member (X, [_Y):-member (X, Y)

Для решения указанной НФЗ используется одно из преимуществ ПРОЛОГ а — возможность применить операцию возврата. Если установлено, что текущий путь пришел в тупик, то можно вернуться в последнюю точку (узел), от которой возможны другие ответвления, и пройти по альтернативному возможному пути. Если попытка окажется также неудачной, возврат будет осуществляться до тех пор, пока не будут просмотрены все варианты, а попытки найти путь по-прежнему будут неудачными. Приведем протокол прохождения вопроса в программе на языке ПРОЛОГ для нахождения пути в МГТ:

  • ?- go (a, g, [Ъ, с, d, с,Л).
  • 1 “Call”: go (a,g.[b,c,d,e,f])?
  • 2 Call: с (а,_14)?
  • 2 “Exit”: c(a.h)
  • 2 Call: not member (h,[b,c.d,e,f])?
  • 2 Exit: not member (h,[b,c,d,e,f})
  • 2 Call: go h,g,[h,b,c,d,e,fj)?
  • 3 Call: c (h,_lS)?
  • 3 “Exit”: c (h.i)
  • 3 Call: not member (i,[h,b,c,d,e,j])?
  • 3 Exit: not member (i,[h,b,c,d,e,f/)
  • 3 Call: go (i, g, [i, h,b,c,d,e,j]) ?
  • 4 Call: c(i,_24)?
  • 4 Exit: c(i,d)
  • 4 Call: not member(d,[i,h,b,c,d,e,f/)?
  • 4 “Fail”: not member(d,[i,h,b,c,d,e,fj)
  • 4 “Back to”: c(i,_24)?
  • 4 Exit: c(i,l)
  • 4 Call: not member(l,[i,h,b,c,d,e,J]?
  • 4 Exit: not member(l,[i,h,b,c,d,e,fj)
  • 4 Call: go(l,g.[l,i,h,b,c,d,e,f/)?
  • 5 Call: c(l,_30)?
  • 5 Exit: c(l,c)
  • 5 Call: not member(e,[l,i,h,b,c,d,e,J])?
  • 5 Fail: not member(e,[l,i,h,b,c,d,e,fj)
  • 5 Back to: c(l,_30)?
  • 5 Fail: c(l,_30)
  • 4 Back to: go(l,g.[l,i,h,b,c,d,e,J])?
  • 7 Call: c(_30,l)? “
  • 7 Exit: c(i,l)
  • 7 Call: not member(i,[l,i,h,b,c,d,e,fj)?
  • 7 Fail: not member(l,[l,i,h,b,c,d,e,fj)
  • 7 Back to: c(_30,l)?
  • 7 Exit: c(k,l)
  • 7 Call: not member(k,[l,i,h,b,c,d,e,f/)?
  • 7 Exit: not member(k.[l,i,h,b,c,d,e,f/)
  • 7 Call: go (k, g. [к, l, i, h,b,c, d, e,f) ?
  • 8 Call: c(k,_36)?
  • 8 Exit: c(k,l)
  • 8 Call: not member(l,[k,l,i,h,b,c,d,e,f])?
  • 8 Fail: not member(l,[k,l,i,h,b,c,d,c,fj)
  • 8 Back to: c(k,_36)?
  • 8 “Exit”: c(k.m)
  • 8 Call: not member(m,[k,l,i,h,b,c,d,e,J])?
  • 8 Exit: not member(m,[k,l,i,h,b,c,d,e,fj)
  • 8 Call: go(m,g,[m,k,l,i,h,b,c,d,e,fl)?
  • 9 Call: c(m,_42)?
  • 9 Exit: c(m,n)
  • 9 Call: not member(n, [m, к, l, i, b, b, c, d, e,fj) ?
  • 9 Exit: not member(n,[m,k,U,h,c,d,e,J])
  • 9 Call: go(n,g.[n,m,k.l,i,h,b,c,d,c,J])?
  • 10 Call: c(n,_48)?
  • 10 Exit: c(n,j)
  • 10 Call: not memher(f[n,m,k.l,i,h,b,c,d,e,f})? 10 Fail: not member(f,[n,m,k,l,i,h,b,c,d,e,fj) 10 Back to: c(n,_48)?
  • 10 Exit: c(n,g)
  • 10 Call: not member(g,[n,m,k,l,i,h,b,c,d,e,J])?
  • 10 Exit: not member(g, [n, m, к, l, i, h, b, c, d, e,f/)
  • 10 Call: go(g,g,[g,n,m,k,l,i,h,b,c,d,e,f])?
  • 10 Exit: go(g,g,[g,n.m,k,l,i,h,b,c,d.e,J])
  • 9 Exit: go(n,g,[n,m,k,l,i,Kb,c,d,e,f])
  • 15-668 “ПРИНЦИПЫ ПРОМЫШЛЕННОЙ ЛОГИСТИКИ”
  • 8 Exit: go(m,g,[m,k,l,i,h,b,c,d,e,J])
  • 7 Exit: go (k, g[k, l, i, h,b,c, d, e,Jj)
  • 4 Exit: go(l,g.[l,i,h,b,c,d,e,f/)
  • 3 Exit: go(i,g.[i,h,b,c,d,c,f])
  • 2 Exit: go(h,g,[h,b,c,d,e,fj)
  • 1 Exit: go(a,g,[b,c,d,e,f]) yes

Для ясности и краткости изложения в протоколе опущены обращения к предикату “member”. Предикат “Call” указывает на то, что предложение, записанное на ПРОЛОГе, проверяется. К предикату “Fail” происходит обращение в случае неудачи сопоставления вопроса и фактов, а к предикату “Exit” — в случае успеха. Метки перед предикатами служат для установления соответствия каждого “Call” своему “Exit”.

 
Посмотреть оригинал
< Пред   СОДЕРЖАНИЕ   ОРИГИНАЛ     След >