ВЫПУСКНАЯ КВАЛИФИКАЦИОННАЯ РАБОТА БАКАЛАВРА
Направление 230100
Информатика и вычислительная техника
Разработка алгоритмического и программного обеспеченияситуационного управления безопасностью магистральных газопроводов
Содержание
Введение
1.Аварийные ситуации на магистральных газопроводах
1.1 Классификация чрезвычайных ситуаций
1.2 Аварии и их характеристики
1.3 Причины возникновения аварийна магистральных газопроводах
1.4 Причины роста числа аварий на объектах нефтегазовогопрофиля
2.Методика анализа риска
2.1 Существующие методы анализа риска
2.2 Идентификация опасностей
2.2 Оценка риска: анализ частоты аварий
2.4 Оценка риска: анализ возможных последствий аварий
3.Ситуационный подход к управлению безопасностью потенциально опасныхпроизводственных объектов
3.1 Принципы ситуационного управления
3.2 Функции и структура системы ситуационного управления
3.3 Схема программы управления безопасностью магистральных газопроводов
4.Программное обеспечение ситуационного управления безопасностью магистральныхгазопроводов
4.1 Описание программы управления безопасностьюмагистральных газопроводов
4.2 Руководство по эксплуатации
4.3 Контрольный пример
5.Техническое обеспечение
Заключение
Библиографический список
Приложение А
Введение
Деятельность человека в любой сфере всегда связана с риском.Он может быть меньшим или большим, но избежать его невозможно. Одним изосновных мотивов жизнедеятельности человека является безопасность, которая вусловиях неопределенности, охватывающей все стороны жизни человека, неизбежносвязана с риском. Риск — это сочетание частоты (вероятности) и последствийопределенного опасного события.
Риск — явление, которое имеет множество не совпадающих,иногда противоречивых реальных оснований.
Ситуация риска среди множества видов ситуаций занимаетособое место, так как функционированию и развитию многих техногенных, природныхи общественных процессов присущи элементы неопределенности, что обусловливаетпоявление ситуаций, которые не имеют однозначного исхода. Следовательно, еслисуществует возможность качественно или количественно определить вероятностьальтернативных вариантов, это и будет ситуация риска.
Таким образом, рискованная ситуация связана с процессами,которым сопутствуют: наличие неопределенности, необходимость выбораальтернативы, возможность оценить вероятность выбираемых альтернатив.
Ситуация риска качественно отличается от ситуациинеопределенности. В ситуациях неопределенности вероятность наступлениярезультатов исходов в принципе не устанавливаема. Рискованная ситуацияпредставляет собой разновидность неопределенной, которую характеризуют события,наступление которых вероятно и может быть определено.
Оценка опасностей различного происхождения и разработка наэтой основе оптимальных мероприятий представляют одну из ключевых проблемуправления безопасностью.
Никаких опасностей вне зависимости от нас и нашейдеятельности в природе и технических системах как таковых не существует. Опаснымиили безопасными являются сами наши системы деятельности, и зависит это не от свойствобъектов, систем или природных процессов, с которыми нам приходится иметь дело,а от наличия или отсутствия соответствующей системы знаний, форм организаций,методов и средств работы с конкретной технической системой и протекающими в нейпроцессами в конкретных условиях.
Действующие магистральные и внутрипромысловыенефтегазопродуктопроводы представляют собой сложные технические системы,обладающие мощным энергетическим потенциалом и охватывающие 35% территориистраны, на которой проживает 60% ее населения.
Строительство и эксплуатация магистральных газопроводовприводит к губительным геоэкологическим последствиям.
Источники воздействия: объекты, по которым транспортируетсяприродный газ; землеройная, грузоподъемная, транспортная техника, применяемая пристроительстве, эксплуатации и техническом обслуживании трубопроводов.
Виды воздействия: химическое загрязнение воздуха; термическое(при возгорании газа); ударная волна при взрыве газа; разрушение природныхландшафтов.
Наиболее чувствительный экологический ущерб наносится врезультате аварий на магистральных трубопроводах. При разрушении магистральногогазопровода и мгновенном высвобождении энергии газа возникают механическиеповреждения природного ландшафта и рельефа, нарушение целостности почвенно-растительногопокрова. При возгорании газа механическое и бризантное воздействиесопровождается термическим воздействием с соответствующим синергетическимпоражением территорий радиусом до 540 м от очага аварии. Отмечается разлетфрагментов трубопровода на 480 м [11].
По данным, представленным в 1996 г. Канадской ассоциациейтрубопроводных компаний, прямой ущерб от аварии на магистральном газопроводебольшого диаметра в среднем составляет 1 млн. долл. К прямому ущербу отнесены: затратына ремонт трубопровода, восстановление поврежденной собственности, стоимостьпотерянного при аварии газа (продукта).
Обеспечение надежной и безопасной эксплуатации магистральныхгазопроводов является важнейшей задачей обществ, эксплуатирующихгазотранспортные системы. От этого во многом зависит нормальная деятельностьпроизводственного персонала, жителей населенных пунктов, а также экологическаябезопасность функционирования газовых магистралей.
1. Аварийные ситуации намагистральных газопроводах1.1 Классификация чрезвычайных ситуаций
Чрезвычайная ситуация (ЧС) — это обстановка на определенной территории, сложившаяся в результате аварии, опасногоприродного явления, катастрофы, стихийного или иного бедствия, которая можетповлечь или повлекла за собой человеческие жертвы, ущерб здоровью людей илиокружающей природной среде, а также значительные материальные потери и нарушение условий жизнедеятельности.
В действующем постановлении Правительства РоссийскойФедерации «О классификации чрезвычайных ситуаций природного и техногенногохарактера» в качестве критерия тяжести чрезвычайной ситуации используетсяколичество пострадавших. Чрезвычайные ситуации классифицируются в зависимостиот количества людей, пострадавших в этих ситуациях, людей, у которых оказалисьнарушены условия жизнедеятельности, размера материального ущерба, а такжеграницы зон распространения поражающих факторов чрезвычайных ситуаций.
ЧС подразделяются на локальные, местные, территориальные,региональные, федеральные и трансграничные.1.2 Аварии и их характеристики
К сожалению, количество аварий во всех сферахпроизводственной деятельности неуклонно растет. Это происходит в связи сшироким использованием новых технологий и материалов, нетрадиционных источниковэнергии, массовым применением опасных веществ в промышленности и сельскомхозяйстве.
Современные сложные производства проектируются с высокойстепенью надежности, порядка />. Иначе говоря, еслиэтот объект единственный, то авария на нем может произойти один раз в 10 тыс. лет.Но если таких объектов будет 10 тыс. единиц, то ежегодно один из нихстатистически может быть аварийным. Следовательно, абсолютной безаварийности несуществует. При этом, чем выше безопасность объекта, тем последствий авариибольше.
Независимо от производства, в подавляющем большинствеслучаев аварии имеют одинаковые стадии развития.
На первой из них аварии обычно предшествует возникновениеили накопление дефектов в оборудовании, или отклонений от нормального веденияпроцесса, которые сами по себе не представляют угрозы, но создают для этогопредпосылки. Поэтому еще возможно предотвращение аварии.
На второй стадии происходит какое-либо инициирующее событие,обычно неожиданное. Как правило, в этот период у операторов не бывает нивремени, ни средств для эффективных действий.
Собственно авария происходит на третьей стадии, какследствие двух предыдущих.
В зависимости от видапроизводства, аварии и катастрофы на промышленных объектах и транспорте могутсопровождаться взрывами, выходом ОХВ, выбросомрадиоактивных веществ, возникновением пожаров и т.п.
Основные опасности нефтегазодобывающих производств, которыемогут привести к возникновению чрезвычайных ситуаций, связаны с авариями в видепожара, взрыва или токсического выброса. Прогнозирование и предупреждениепоследствий аварий на таких производствах связано, прежде всего, спрогнозированием и предупреждением действия поражающих факторов при реализацииосновных опасностей. При всем многообразии возможных сценариев аварий наборпоражающих факторов ограничен. Это дает возможность описывать физическиевоздействия, приводящие к нанесению ущерба людям, материальным ценностям иокружающей среде, конечным числом параметров.
Основные поражающие факторы аварий представлены в таблице 1.1
Таблица 1.1 — Основные поражающие факторы аварий на промышленно опасных объектахРазновидность аварии Поражающие факторы Параметры поражающего действия Пожар, огненный шар
пламя;
тепловое излучение Определение полей поражающих факторов сводится к определению границ зоны пламени и определению текущих значений теплового потока в зависимости от удаления от внешней границы зоны пламени. Взрывы (в т. ч. взрывы топливовоздушных смесей)
воздушные ударные волны;
летящие обломки различного рода объектов технологического
оборудования Параметры поражающего действия воздушной ударной волны — избыточное давление во фронте волны и ее импульс в зависимости от расстояния от места взрыва. Параметры, определяющие поражающее действие осколков, — количество осколков, их кинетическая энергия, направление и расстояние разлета. Токсический выброс химическое заражение Параметрами, характеризующими токсические нагрузки при токсическом выбросе, являются поля концентраций вредного вещества и времена действия поражающих концентраций.
Перечисленные поражающие факторы являются основными длярассматриваемых видов аварий. Однако следует учитывать, что при авариидействует несколько поражающих факторов. Так, при пожаре значительным можетбыть воздействие токсичных продуктов горения. При взрыве больших массвзрывчатых веществ могут иметь место значительные сейсмические последствия,приводящие к обрушению по этой причине. Поэтому при прогнозировании последствийаварий необходимо учитывать все возможные поражающие факторы и выделятьосновные из них только после анализа возможности их реализации.
Экспертная оценка вероятности проявления основных поражающихфакторов при техногенных авариях представлена на рис.1.1 [8].
/>
Рисунок 1.1 — Вероятность основных поражающих факторов притехногенных авариях: 1 — разрушение, обрушение зданий и сооружений; 2 — пожар; 3- осколки и разлетающиеся фрагменты оборудования; 4 — столкновение (удар) сэлементами конструкций; 5 — отравление токсичными продуктами; 6 — прямыепоражения ударными волнами
Из рисунка видно, что тяжесть последствий при действииразличных поражающих факторов существенно различна. В частности, обрушениезданий и конструкций практически всегда приводит к тяжелым последствиям, в товремя как последствия воздействия поражающих факторов при пожаре, как правило,не столь катастрофичны для персонала.
1.3 Причины возникновения аварий на магистральныхгазопроводах
С 1992 по 2001 г. на объектах магистральных трубопроводовпроизошло 545 аварий. Среднегодовой показатель аварийности составляет 50-60аварий и в целом не имеет устойчивой тенденции к снижению [11].
Основные причины аварий на объектах магистральныхтрубопроводов:
внешние физические (силовые) воздействия на трубопроводы,включая криминальные врезки, повлекшие утечки;
нарушения норм и правил производства работ при строительствеи ремонте, отступления от проектных решений;
коррозионные повреждения труб, запорной и регулирующейарматуры;
нарушения технических условий при изготовлении труб иоборудования;
ошибочные действия эксплуатационного и ремонтного персонала.
Основной причиной аварий на действующих газопроводах запредыдущие годы является стресс-коррозия (табл.1.2). Отмечается тенденция ростааварий по этой причине. Если за период с 1990 по 2000 годы средний показательаварий из-за коррозии под напряжением составил 22,5% от числа общих аварий, то 2000году — 37,8% [7].
Таблица 1.2 — Основные причины аварий на газопроводахПричины аварий % от общего числа 1 2 Наружная коррозия 28,9 в т. ч. по КРН 22,5 Механические повреждения 19,0 Брак строительно-монтажных работ 21,9 в т. ч. брак сварки 13,0 Дефекты труб 11,4 Стихийные бедствия 9,5
1.4 Причины роста числа аварий на объектахнефтегазового профиля
Переход в нашей стране к рыночным принципам хозяйствования,появление новых видов и форм собственности, резкое ухудшение на данном этаперазвития материально-финансового положения большинства промышленныхпредприятий, значительное физическое и моральное старение оборудования и другиефакторы привели в конечном итоге к значительному росту числа крупных аварий ссоциальными и экономическими последствиями и, в первую очередь, на объектахнефтегазового профиля.
Перечисленные причины повышения аварийности были очевидныдля специалистов, и пять, и десять лет назад. Тем не менее, на протяжении этихлет ситуация оставалась качественно неизменной, а по количественным параметрамухудшалась. В связи с этим необходимо задаваться вопросом: почему сложившаясяситуация воспроизводится. Это несмотря на то, что в период 1996 — 2002 гг. вотрасли был реализован целый комплекс мероприятий по внедрению достиженийнаучно-технического прогресса.
Можно выделить основные проблемы, решение которых позволит внекоторой степени уменьшить аварийность объектов газового профиля.
Во-первых, основной упор делается на противодействие видимым(актуальным на сегодня) опасностям в ущерб деятельности по профилактикеопасностей на стадии проектирования и ранних стадиях жизненного цикла объекта.
Во-вторых, происходит многократное повторение итиражирование однотипных ЧС, по причине отсутствия механизмов учета опытарасследования инцидентов, отказов и аварий в профилактике ЧС на стадияхпроектирования, строительства, реконструкции и эксплуатации объекта.
Кроме того, можно отметить недостаточную эффективностьдействующих служб мониторинга. Службы отслеживания фактической обстановки напредприятиях, как правило, ограничиваются фиксацией «физических» явленийи процессов, они не встроены в системы, обеспечивающие синтез и анализнаблюдений, принятие управленческих решений и корректировку собственнойдеятельности.
2. Методика анализа риска
Методология анализа и управления риском позволяет учесть каквероятностную природу аварий, так и совокупное влияние всех факторов, которыеопределяют характер их развития и масштабы воздействий на человека и среду егообитания. Используя количественные показатели риска, возможно не только оценитьпотенциальную опасность, но и сравнить опасности различной природы.
Риск рассматривается в качестве универсального средстваизмерения и сравнения различных опасностей в рамках одной шкалы.
Методология анализа риска включает расчет вероятностипоявления нежелательного события и оценку последствий.
Анализ риска рассматривают как часть системного подхода кпринятию процедур и практических мер в решении задач предупреждения илиминимизации опасностей для жизни человека, ущерба имуществу и окружающей среде.
Анализ риска базируется на собранной информации и определяетмеры по контролю безопасности технологической системы. Поэтому основная задачаанализа риска заключается в том, чтобы обеспечить рациональное основание дляпринятия решений в отношении риска.
Анализ риска, или риск-анализ, — это систематическоеиспользование имеющейся информации для выявления опасностей и оценки риска дляотдельных лиц или групп населения, имущества или окружающей среды.
Здесь риск — это сочетание частоты (вероятности) ипоследствий определенного опасного события. Понятие риска включает два элемента:частоту, с которой осуществляется опасное событие, и последствия опасногособытия [4].
Анализ риска заключается в выявлении (идентификации) опасностейи оценке риска. Под опасностью понимается источник потенциального ущерба иливреда или ситуация с возможностью нанесения ущерба. Идентификация опасности — процесс выявления и признания, что опасность существует, и определение еехарактеристик.
Таким образом, применение понятия риск позволяет переводитьопасность в разряд измеряемых категорий.
Анализ риска проводится по следующей схеме:
Планирование и организация работ;
Идентификация опасностей;
Оценка риска;
Разработка рекомендаций по управлению риском.2.1 Существующие методы анализа риска
Обычно выбор методов анализа риска строго нерегламентируется. При выборе необходимо учитывать этап разработки системы, целианализа, тип анализируемой системы и характер опасности, наличие ресурсов дляпроведения анализа и другие факторы.
Метод риск-анализа должен удовлетворять следующимтребованиям: метод должен быть научно обоснован и соответствоватьрассматриваемой системе; метод должен давать результаты в виде, позволяющемлучше понимать характер риска и намечать пути борьбы с этим риском; методдолжен быть повторяемым и проверяемым.
Классификация методов анализа риска представлена на рис.2.1
/>
Рисунок 2.1 — Классификация методов анализа риска
Методы могут применяться изолированно или в дополнение другк другу, причем, качественные методы могут включать количественные критериириска (в основном, по экспертным оценкам с использованием, например, матрицы«вероятность — тяжесть последствий» ранжирования опасности).
Рассмотрим коротко эти методы.
Методы проверочного листа и «Что будет, если…?» илиих комбинация относятся к группе качественных методов оценки опасности,основанных на изучении соответствия условий эксплуатации объекта или проектадействующим требованиям промышленной безопасности.
Метод «Анализ опасности и работоспособности» кромеидентификации опасностей и их ранжирования, позволяет выявить неточности винструкциях по безопасности и способствует их дальнейшему совершенствованию.
Если для анализа отклонений от регламента лучше подходитметод «Анализ опасности и работоспособности», то для анализаоборудования лучшим является метод «Анализ видов и последствий отказов».Существенной чертой метода является рассмотрение каждого блока или составнойчасти системы (элемента) на предмет того, как он стал неисправным (вид ипричина отказа) и какое было бы воздействие отказа на техническую систему.
Анализ вида и последствий отказа можно расширить доколичественного «Анализа видов, последствий и критичности отказов». Вэтом случае каждый вид отказа ранжируется с учетом двух составляющихкритичности — вероятности (частоты) и тяжести последствий отказа.
Понятие критичности близко к понятию риска и может бытьиспользовано при более детальном количественном анализе риска аварии. Определениепараметров критичности необходимо для выработки рекомендаций и приоритетностимер безопасности.
В табл.2.1 приведены рекомендуемые показатели уровня икритерии критичности по вероятности и тяжести последствий отказа. При этомнеобходимо выделять четыре группы, которым может быть нанесен ущерб от аварии: персонал,население, окружающая среда, материальные объекты.
Таблица 2.1 — Пример матрицы «Вероятность — тяжесть последствий»Ожидаемая частота возникновения (1/год) Тяжесть последствий Катастро-фический отказ Крити-ческий отказ Некри-тический отказ Отказ с прене-брежимо малыми послед-ствиями 1 2 3 4 5 6 Частый отказ >1 А А А С Вероятный отказ
1-/> А А В С Возможный отказ
/>-/> А В В Д Редкий отказ
/>-/> А В С Д Практически невероятный отказ
В С С Д
Ранг А соответствует наиболее высокой (неприемлемой) степенириска объекта, требующей незамедлительных мер по обеспечению безопасности. ПоказателиВ, С отвечают промежуточным степеням риска, а ранг Д — наиболее безопаснымусловиям.
Метод применяется для анализа проектов сложных техническихсистем или при модификации опасных производств.
Метод ранжирования опасностей и определения степени рискапромышленного объектаявляется смешанным количественным методом,сочетающим численные методы с экспертными оценками в виде штрафов в зависимостиот опасности веществ и материалов, используемых в технологических процессах. Методприменяют для оценки потенциальной опасности узлов технологическогооборудования в зависимости от характера и условий протекания технологическихпроцессов и категорирования по критериям взрыво-, пожароопасности и токсичности.Таким образом, метод косвенно применим для количественной оценки экологическихпоследствий.
Крупные аварии, как правило, характеризуются комбинациейслучайных событий, возникающих с различной частотой на разных стадиях возникновенияи развития аварии. Для выявления причинно-следственных связей между этимисобытиями используют логико-графические методы анализа «Деревьев отказов»и «Деревьев событий».
При анализе «деревьев отказов» выявляютсякомбинации отказов (неполадок) оборудования, инцидентов, ошибок персонала инерасчетных внешних воздействий, приводящих к головному событию (аварийнойситуации). Метод используется для анализа возможных причин возникновенияаварийной ситуации и расчета ее частоты (на основе знания частот исходныхсобытий).
Анализ «дерева событий» — алгоритм построенияпоследовательности событий, исходящих из основного события (аварийной ситуации).Частота каждого сценария развития аварийной ситуации рассчитывается путемумножения частоты основного события на условную вероятность конечного события.
Конечным результатом оценки риска является перечень исходовдля каждого рассматриваемого случая, при этом рассчитываются частота ипоследствия, т.е. величины ожидаемых последствий. Суммирование произведений извсех последствий определяет серьезность аварии.
Количественный анализ риска наиболее эффективен на стадиипроектирования и размещения опасных объектов; при оценке безопасности объектов,имеющих однотипное оборудование (в частности, магистральные газопроводы); принеобходимости получения комплексной оценки воздействия аварий на людей,материальные объекты и окружающую природную среду.
Недостатками количественного анализа риска являютсяневысокая точность результатов, вследствие чего использование количественных показателей(в частности, вероятности возникновения аварии) в качестве критериевбезопасности для сложных производств, какими являются магистральныегазопроводы, как правило, не оправдано.
Для анализа или модернизации сложных проектов (в частности,управления безопасностью магистральных газопроводов) целесообразно применятьметоды анализа «деревьев отказов» и «деревьев событий».
Объекты транспорта газа относятся корганизационно-ситуационным и обладают рядом свойств, отличающих их оттрадиционных объектов управления: уникальностью, неформализованностью описания,функциональной ситуационностью, неполнотой исходной информации. При работе стакими объектами не эффективно использовать традиционные методы управления,поэтому целесообразно применять ситуационный подход.
2.2 Идентификация опасностей
Установлено, что расследуется и анализируется не более20-30% от общего количества аварийных ситуаций. Кроме того, нередко допускаютсянеточности в классификации аварийных ситуаций, таких как «утечки» илинеполадки. Поэтому возникает необходимость правильно и полно классифицироватьвозможные отказы линейной части магистральных газопроводов.
Отказы разделяются по нескольким критериям.
По этапам формирования: проектный, производственный,эксплуатационный.
По виду отказавшего конструктивного элемента: отказ трубныхсекций, сварных соединений, изоляционного покрытия, траншей, балластирующихустройств, грунтовой засыпки, ЭХЗ.
По влиянию на эффективность функционирования магистральногогазопровода: полный отказ, частичный отказ.
По взаимному влиянию отказов: зависимый и независимый.
По последствиям отказов: отказ с незначительными,значительными и критическими последствиями.
Отказ линейной части магистрального газопровода наступает восновном из-за совокупного влияния дефектов конструктивных элементов.
Регистрируемые в настоящее время отказы линейной частимагистрального газопровода являются в основном отказами двух его основныхконструктивных элементов — металла трубопровода или сварных соединений.
Классификация дефектов трубных секций представлена на рис.2.2.
/>
Рисунок 2.2 — Классификация дефектов трубных секций
Классификация дефектов сварных швов представлена на рис.2.3.
/>
Рисунок 2.3 — Классификация дефектов сварных соединений
Различают отказы двух принципиально разных групп:
Отказ линейной части магистрального газопровода вследствие отказаметалла трубных секций или отказа сварных соединений — элементы группы А.
Отказ линейной части магистрального газопровода вследствиеотказа остальных конструктивных элементов, выражающийся в потере герметичностиметалла трубных секций или металла сварных соединений — элементы группы Б.
Число состояний объекта, состоящего из семи конструктивныхэлементов, находящихся в одном из двух состояний — работоспособном инеработоспособном — равно: />. Таккак к отказу могут привести только такие комбинации отказовых состояний, прикоторых имеет место отказ металла или сварного соединения, то количествоотказовых состояний равно
/>.
Значит, 31 состояние системы приводит к отказаммагистрального газопровода.
Отказовое состояние регистрируется в случаях:
разрушения основного металла труб;
разрушения сварных соединений газопровода.
Причем />, где /> - вероятность отказа из-заразрушения металла труб, /> -вероятность отказа из-за разрушения сварных соединений.
В свою очередь, />, где
/> - вероятностиотказа из-за прямого отказа конструктивных элементов группы А;
/> - вероятностиотказа из-за отказов конструктивных элементов группы Б.
На основе статистических данных установлено, что
/>, />. Следовательно, />.
На основе полученных данных можно прогнозировать среднеевремя безотказной работы магистральных газопроводов.
Для реализации концепции принятия решения с цельювоздействия на факторы риска с позиции мотивации безопасной деятельностинеобходимо использовать метод, обеспечивающий сравнение факторов на основекакого-либо рода экспертных оценок — метод анализа иерархий, состоящий вдекомпозиции проблемы на более простые составляющие части и дальнейшей обработкепоследовательности суждений лиц, принимающих решение, по парным сравнениям.
Наиболее опасными с точки зрения разгерметизациимагистрального газопровода являются следующие дефекты: трещина итехнологическая трещина в металле трубы [12].2.2 Оценка риска: анализ частоты аварий
Оценка риска — это процесс, используемый для определениястепени риска анализируемой опасности для здоровья человека, имущества илиокружающей среды. Понятие «степень риска» идентично понятию «риск».
Под приемлемым уровнем риска понимается риск, уровенькоторого допустим и обоснован, исходя из экономических и социальных факторов. Рискэксплуатации потенциально опасного объекта будет являться приемлемым в томслучае, если его величина настолько незначительна, что ради выгоды, получаемойот эксплуатации объекта, общество готово пойти на этот риск.
Оценка риска включает в себя анализ частоты и анализпоследствий.
Для оценки риска возникновения аварии на магистральномгазопроводе, заключающейся в потере герметичности стенок трубы и сварныхсоединений, используется метод построения и анализа дерева неполадок и деревасобытий.
Графическая форма дерева неполадок, используемого дляанализа причин разгерметизации магистрального газопровода, представлена вприложении. Вершиной данного дерева является нежелательное событие — разгерметизация газопровода. Последовательность событий, которые приводят кнежелательному событию в вершине, образуют ветви дерева: дефекты газопровода,ошибки проведения технической диагностики, механизмы и нагружения. Промежуточныесобытия обозначены прямоугольниками, постулируемые исходные события-предпосылкипоказаны кругами с цифрами (их наименования и нумерация приведены в табл.2.2). Дляпридания дереву неполадок большей информативности определяются вероятностипоявления различных событий.
Для связи между событиями в «узлах» деревьевиспользуются знаки «И» и «ИЛИ». Логический знак «И»означает, что вышестоящее событие возникает при одновременном наступлениинижестоящих событий (соответствует перемножению вероятностей для оценкивероятности вышестоящего события). Знак «ИЛИ» означает, чтовышестоящее событие может произойти вследствие возникновения одного изнижестоящих событий. Например, нарушение свойств металла труб и сваршвов можетпроизойти вследствие либо механического, либо технологического нарушения.
По результатам численного анализа дерева неполадок могутбыть выработаны различные рекомендации вариантов решений, на основе которыхосуществляется управление процессом.
Дерево неполадок дает ясное представление о взаимосвязяхвнутри системы и о том, каким образом и по каким причинам возникают различныенежелательные события, которые могут повлиять на потерю герметичностимагистрального газопровода.
Таблица 2.2 — Исходные события «Дерева отказов» [12]№ Наименование события-предпосылки Вероятность события 1 Ошибки при проведении тех. диагностики 0,0000004 2 Наклеп 0,000002 3 Пластическая деформация 0,0000014 4 Риски 0,0000001 5 Задиры 0,0000002 6 Вмятины 0,0000014 7 Царапины 0,000079 8 Плены 0,000002 9 Расслоения 0,000003 10 Ликвация 0,0000001 11 Полосчатость 0,00000001 12 Неметаллические включения 0,00000001 13 Натеки 0,000001 14 Кратеры 0,000001 15 Подрезы 0,000001 16 Протеки 0,000002 17 Трещины 0,000002 18 Прожоги 0,0000024 19 Поры 0,000002 20 Непровары корня шва 0,000003 21 Неметаллические включения 0,000005 22 Прочность 0,000001 23 Вязкость 0,00000001 24 Полосчатость 0,0000001 25 Сопротивление зарождению трещин 0,000004 26 Свариваемость 0,0000002 27 Способность к пластич. деформации 0,0000001 28 Механические разрушения 0,000001 29 Коррозия 0,000001 30 Действие блуждающих токов 0,0000001 31 Механические воздействия 0,000002 32 Воздействия окружающей среды 0,000003 33 Внутреннее давление 0,000012 34 Давление грунта 0,000002 35 Температурные воздействия 0,000001 36 Упругий изгиб 0,000004 37 Блуждающие токи 0,000002
На рисунке 2.4 представлено дерево событий для ситуации«выброс газа».
/>
Рисунок 2.4 — Дерево событий для ситуации «выброс газа»
Конструирование дерева событий происходит аналогичноконструированию дерева неполадок. Оно начинается с определения инициирующегособытия. Каждая ветвь дерева событий представляет собой отдельный результатпоследовательности событий.
Частота каждого сценария развития аварийной ситуациирассчитывается путем умножения частоты основного события на вероятностьпоследующего. При этом сумма вероятностей событий, следующих из каждой точкиразветвления дерева событий, равна единице (что, по существу, означает полнотуописания возможных сценариев развития аварийной ситуации).
Оценку вероятности событий проводят с использованиемстатистических данных или расчетными методами. При отсутствии статистическихданных для вероятности мгновенного воспламенения истекающего продуктадопускается принимать значение 0,05. Статистические вероятности различныхсценариев развития аварий с выбросом горючего вещества приведены в таблице 2.3
Таблица 2.3 — Статистические вероятности сценариев развитияаварийСценарий аварии Вероятность Факел 0,0574 Огненный шар 0,7039 Горение пролива 0,0287 Сгорание облака 0,1689 Взрыв облака 0,1190 Без горения 0,0292
Также по статистике степень аварийности трубопроводноготранспорта />. В 90% случаев происходитвыброс содержимого через отверстие 1 дм в стенке трубопровода до тех пор, покаутечка не будет остановлена, в 10% случаев — полный разрыв трубопровода [8].2.4 Оценка риска: анализ возможных последствийаварий
Анализ последствий включает оценку воздействий опасныхфакторов на людей, имущество или окружающую среду.
Так как авария на опасных промышленных объектах может бытьотнесена к случайным явлениям, то мера опасности может быть оценена при анализеслучайных величин ущербов от аварии. Так, при рассмотрении события «отказтехнического устройства» в теории надежности оперируют в основномдискретной характеристической случайной величиной X,которая равна 1, если за определенное время отказ происходит, и равна 0, еслине происходит. События, связанные с крупными нежелательными последствиями всложных системах, анализируют, рассматривая случайную величину потерь (ущербов)от аварии при эксплуатации опасных промышленных объектов — Y/>0. Количественныепоказатели риска аварии (индивидуальный, коллективный и социальный риски,ожидаемый ущерб) представляют собой характеристики случайной величины аварийныхпотерь Y. Определение «потенциальныйтерриториальный риск» характеризует случайное событие — возникновение вопределенной точке территории факторов аварии, достаточных для смертельногопоражения человека. Этот риск определяется дискретной характеристическойвеличиной D, равной 1, если за определенное время такоесобытие происходит, или равной 0, если не происходит.
Потери Y разделяют на материальные G (непрерывная случайная величина) и людские N (дискретная случайная величина).
В практике анализа риска аварии чаще оперируют не свероятностями, а со средними интенсивностями (частотами) нежелательных событийза определенное время. Если рассматривать происходящие аварии как стационарныйпуассоновский поток событий, то связь между вероятностью события А за время t и его интенсивностью /> такова:
/>.
Рассмотрим дискретную случайную величину людских потерь N при аварии на магистральном газопроводе с возможнымизначениями />. Каждое из этих значений N может принять с некоторой вероятностью />. Описание дискретнойслучайной величины N считается полным с точки зрениятеории вероятностей, если установлен закон распределения случайной величины,который представляется в виде ряда распределения.
Таблица 2.4 — Ряд распределения дискретной случайнойвеличины N
/>
/>
/> …
/> …
/>
/>
/>
/>
/> …
/> …
/>
Причем
/>, />
— вероятность безаварийной эксплуатации опасногопромышленного объекта.
Чтобы придать ряду распределения более наглядный видприбегают к его графическому изображению — строят многоугольник распределения.
Для непрерывной случайной величины ряд распределенияпостроить нельзя, поэтому воспользуемся другой характеристикой случайнойвеличины потерь:
/>.
Ее называют F/N-кривой(диаграммой) или F/G-кривой. Этоклассическая функция распределения потерь, построенная в координатах />, так как />.
Вероятность попадания случайной величины на заданный участок
/>: />.
В частном случае, значение функции F/N при n=1 чел. Равно вероятностинесчастного случая со смертельным исходом, связанного с аварией намагистральном газопроводе.
Одна из основных целей оценки риска аварии — получениедостоверных количественных показателей, пригодных для эффективного управленияпроцессом обеспечения промышленной безопасности на опасных промышленныхобъектах. Оперирование неоднозначными исходными данными дает такие же неоднозначныепрактические рекомендации и результаты управления.
Для более удобного построения F/N-кривых выражение /> представимв развернутом виде:
/>
Для непрерывной случайной величины материальных потерь приаварии G может быть определена функция плотностираспределения:
/>.
Математическое ожидание дискретной случайной величины N (коллективный риск) определяется:
/>.
Если ввести в рассмотрение случайную величину числарискующих попасть в аварию U, то общее выражение длясреднего по группе рискующих индивидуального риска />:
/>,
где /> - корреляционныймомент случайных величин N и 1/U.В частном случае при U=const
/>,
где u — общее число рискующих людей.
Математическое ожидание непрерывной случайной величины G (ожидаемый ущерб) определяется:
/>.
В терминах теории вероятностей основные показатели,используемые при анализе риска аварии на опасном промышленном объектепредставлены в таблице 2.5.
Таблица 2.5 Показатель риска аварии Случайная величина Тип Показатель риска в терминах теории вероятностей Формула, описание 1 2 3 4 5 Технический риск
Есть-нет
отказ X Дискретная характери-стическая Вероятность отказа с определенными последствиями, который произойдет за некоторый отрезок времени
/> - вероятность того, что X=1 Потенциальный территориальный риск Есть-нет факторы смертельного поражения D То же Вероятность возникновения за определенное время в некоторой точке пространства факторов смер-тельного поражения
/> - вероятность того, что D=1
Социальный риск
(F/N-кривая) Людские потери при аварии N Дискретная Интегральная функция распределения людских потерь
/> Полное описание сценариев аварии с гибелью людей То же То же Ряд распределения N (графически — многоугольник распределения) См. табл.2.4
Коллективный риск (/>) - - Математическое ожидание N
/> Таблица 2.5 (окончание) 1 2 3 4 5
Индивидуальный риск (/>) Людские потери при аварии N и число рискующих U Дискретные Математическое ожидание N и U
/> Риск материальных потерь (F/G-кривая) Материальные потери при аварии G Непрерывная Интегральная функция распределения материальных потерь
/> Полное описание сценариев аварии с материальными потерями То же То же Плотность вероятности G (графически — кривая распределения)
/>
Ожидаемый ущерб (/>) - - Математическое ожидание G
/> Наиболее вероятный ущерб - - Мода G
/> при />
Полный ожидаемый вред (ущерб) от аварии /> Людские и материальные потери при аварии N, G Смешанная Сумма математических ожиданий N и G
/>
где H — стоимостная оценка человеческой жизни
3. Ситуационный подход куправлению безопасностью потенциально опасных производственных объектов3.1 Принципы ситуационного управления
Под ситуационным управлением понимают управление, основанноена выявлении проблемных ситуаций и выполнении различных преобразованийимеющейся информации в управленческие решения, приводящие к их разрешению.
Под ситуацией в общем случае понимается сочетание условий иобстоятельств, создающих определенную обстановку, положение.
При исследовании организационно-технических системуправления выделяют такие понятия, как состояние, ситуация и событие (воздействие).
Под состоянием понимают систематически наблюдаемое свойство,качество, значение определенных параметров, определяющих характеристикиструктуры управления.
Под ситуацией подразумевают реализованные или ожидаемыепредыстории состояний за некоторый интервал времени (прогнозируемые состояния).Предыстории могут отражать прошлое, настоящее или будущее состояние. Приописании ситуаций обязательным элементом является описание и самого объекта, исистемы управления с внешней средой.
Под событием понимают воздействие, оказываемое на структурууправления (объект управления) извне или изнутри. Объект управленияфункционирует в определенной среде.
Текущей ситуацией на объекте управления называютсовокупность всех сведений о структуре объекта управления и егофункционировании в данный момент времени. Обозначим текущие ситуации через />.
Полной ситуацией называют совокупность, состоящую из текущейситуации, знаний о состоянии системы управления в данный момент и знаний отехнологии управления. Полные ситуации обозначим через />.
При исследовании объекта управления обычно выделяют типовые(штатные) ситуации, соответствующие предусмотренным целям системы управления ине требующие вмешательства извне. Наряду с ними выделяют проблемные (критические,опасные) ситуации, когда определенные параметры приближаются к выходу запределы допустимых значений и вызывают негативное воздействие на состояниеобъекта управления.
Исследование проблемных ситуаций и их разрешение составляютсодержание ситуационного управления.
Ситуационный подход реализует требования системного подходапо конкретной реализации методов и концепций в конкретных ситуациях, по которымпринимается решение. Данный подход является противопоставлением концепциямклассической теории управления, основным тезисом которых являлось соответствиерациональным «принципам управления». Ситуационный подход ориентированна тщательное изучение конкретных условий — ситуаций в управлении и гибкойадаптации организационно-управленческих форм и методов к специфике этихситуаций. Ситуационный подход ориентирован на рассмотрение категорий «неопределенностей»при принятии решений по слабоструктурированным проблемам.
Сущность концепции ситуационного управления сводится кследующему: каждому типу конкретной ситуации должна соответствовать свояпоследовательность процедуры управления (сценарий) со своими критериями и методамипринятия решения, предоставляющая возможность адаптации структуры управления кдинамически меняющимся условиям функционирования системы управления и внешнейсреды.
В методе ситуационного управления обеспечивается построениемодели объекта управления, построение процедуры управления им и поискцелесообразных решений по управлению им. Указанные особенности обеспечиваютприменимость этого метода, когда сложность объекта управления не позволяетстроить его формальную математическую модель и ставить задачу управления втрадиционном духе.3.2 Функции и структура системы ситуационногоуправления
Метод ситуационного управления базируется на следующейгипотезе: множество всех возможных полных ситуаций значительно мощнее, чемсоответствующее ему множество принимаемых решений, т.е. />.
В качестве примера можно привести задачу управленияавтомобилем. Число возможных дорожных ситуаций — очень велико, а принимаемыхрешений по управлению мало (ускорение, торможение, поворот руля влево иливправо). Если множество полных ситуаций разбить на подмножества, каждому изкоторых можно поставить в соответствие единственное типовое решение, то задачауправления, грубо говоря, сведется лишь к классификации поступающих на входсистемы внешних ситуаций. Эта идея реализуется в рамках метода ситуационногоуправления, для чего разработан специальный язык представления и обработкиописаний полных ситуаций.
Любая ситуация характеризуется набором признаков. Пусть
/>
— значения набора признаков. Среди компонент
/>
могут быть количественные, качественные и классификационныепризнаки.
Классификационные признаки отражают проявление некоторыхсвойств, позволяющих разбить совокупность свойств на классы
/>,
где /> — номер класса, ккоторому принадлежит свойство />.
Анализ ситуации в соответствии с классификационными признакамипозволяет построить модель принятия решения в той или иной ситуации.
На рисунке 3.1 приведена блок-схема традиционной системыситуационного управления. Основой управления здесь является семиотическая (знаковая)модель, строящаяся в виде сети, где узлами являются внутренне непротиворечивыеформальные модели, а переходы между узлами задаются правилами преобразованияпараметров формальных моделей -корреляционными или логико-трансформационнымиправилами (ЛТП). Построение семиотической модели осуществляется на языкеситуационного управления, представляющем собой достаточно сложное по структуреподмножество естественного языка.
/>
Рисунок 3.1 — Структура системы ситуационного управления.
Здесь Анализатор по описанию текущей ситуации принимаетрешение о необходимости (или отсутствии таковой) применения какого-либоуправления. Если управление необходимо, в действие вступает Классификатор,который должен отнести текущую ситуацию к одному или нескольким классам,соответствующим некоторому одношаговому управлению. Решение Классификаторапередается Коррелятору, где хранятся все ЛТП. Если Коррелятору удается выбратьединственное ЛТП, то на объект выдается связанное с этим правилом управление; впротивном случае подключается Экстраполятор, предназначенный для выборауправления путем экстраполяции и сравнения последствий всех альтернативныхвоздействий.
Таким образом, в общей схеме ситуационного управленияКоррелятор, Классификатор и Экстраполятор совместно решают следующую задачу: перечисленныеблоки позволяют формировать последовательность решений, с помощью которой можноперевести текущую ситуацию в некоторую целевую.
В силу конечности числа различных воздействий все множествовозможных полных ситуаций распадается на /> классов,каждому из которых будет соответствовать одно из возможных воздействий наобъект управления. То есть должны существовать такие процедуры (процедурыклассификации), которые позволили бы классифицировать полные ситуации так,чтобы из них можно было образовать столько классов, сколько различныходношаговых решений есть в распоряжении системы управления.
Между описанием ситуаций на естественном языке и внутреннимипредставлениями информации о них в управляющей системе существует явный разрыв.Поэтому требуется преобразовывать словесные описания во внутреннеепредставление. Для этого необходимо получать специфическую информацию,связанную с функционированием Анализатора. Его задача состоит в классификациипоступившей информации в соответствии с теми задачами, которые должна решатьсистема управления. Эти задачи могут быть трех типов: пополнение системы новойинформацией об объекте управления или способах управления, формирование ответана некоторый запрос на основе информации, хранящейся в системе, поиск решения вситуации, описание которой поступило в систему. Разделение этих задач на трикласса нужно производить при преобразовании входного текста во внутреннеепредставление. Поэтому Анализатор можно рассматривать как составную частьлингвистического процессора.
На рисунке 3.2 представлена традиционная структуралингвистического процессора, в котором анализ поступившего на вход текста идетпо предложениям в порядке их поступления.
/>
Рисунок 3.2 — Структура лингвистического процессора
Обратимся вновь к структуре системы ситуационного управления,представленной на рис.3.1
Центральной ее частью является Классификатор. С его помощьюрешается основная задача — получение классов ситуаций, каждый из которыходнозначно или с определенными приоритетами соответствует тем или иным решениямпо управлению. Очевидна важность роли процесса обобщения описаний и ихклассификации.
Первая особенность задач формирования понятий иклассификации в ситуационном управлении — поиск прагматических признаковклассификации, способных обеспечить нахождение таких обобщенных описанийситуаций, которые позволяли бы успешно решать задачу поиска решения поуправлению объектом. Именно признаки выступают в качестве параметров, наосновании которых происходит выделение обобщенных понятий и строится та илииная классификация.
Вторая особенность задачи формирования понятий и обобщенияситуаций в рассматриваемой области — наличие процедур обобщения, основанных наструктуре отношений, присутствующей в описании ситуаций.
Наконец, третья особенность обсуждаемых процедур,характерных для всех систем, работающих со знаниями, — возможность работы сименами, присваиваемыми отдельным понятиям и ситуациям.
Общая постановка задачи обобщения понятий и классификацииимеет в данном случае следующий вид.
На множестве конкретных ситуаций /> найтитакое разбиение их на классы, при котором каждый класс />имел бы в рамках данноймодели управления некоторую «разумную» интерпретацию процессауправления ситуацией. На множестве полных ситуаций /> необходимовыделить такое множество классов />, чтокаждый из них допускал бы «разумную» интерпретацию для процедурыпоиска решения по управлению объектом. В частности, классификация /> по некоторому основаниюдолжна быть согласована с классификацией на множестве воздействий (управлений) />.
Множество всех текущих ситуаций на магистральном газопроводеможно отнести к трем основным классам: безаварийная эксплуатация, предаварийноесостояние, авария.
В процессе функционирования системы ситуационного управленияработа по формированию классов ситуаций и уточнению ранее сформированныхклассов происходит постоянно, так как обучающая выборка может не исчерпыватьвсего богатства возможных ситуаций, складывающихся на объекте управления.
Обобщение может происходить на многих этапах, и поэтомуисходные описания ситуаций и обобщенные их описания образуют иерархическуюструктуру, в каждом слое которой находятся описания, полученные из исходных спомощью тех или иных процедур обобщения. Если исходные описания принять занулевой уровень, то на первом уровне будут находиться описания, полученныенепосредственно из описаний ситуаций, лежащих на нулевом уровне. На второйуровень попадут описания, которые возникнут за счет применения процедуробобщения к описаниям первого уровня и т.д. Возникает как бы «слоеныйпирог». Ситуации на всех уровнях соответствуют некоторым решениям поуправлению. В идеале на самом верхнем уровне системы классификации возникаютописания, каждому из которых соответствует определенное решение по управлению.
Когда Классификатор сформирован, то его работа заключается вследующем. Если на вход системы управления поступает некоторая конкретнаяситуация, то она обогащается за счет работы процедур пополнения описанийситуаций и поступает на нулевой уровень «слоеного пирога». С помощьювертикальных связей она обобщается до наивысшего возможного уровня. Если наэтом уровне ей соответствует решение по управлению, то оно поступает изКлассификатора в Коррелятор. Если же при невозможности дальнейшего обобщенияданному уровню не соответствует никакого решения, то Классификатор переходит встадию обучения.
Функциональная структура Классификатора представлена на рис.3.3.
/>
Рисунок 3.3 — Схема функциональной структуры Классификатора
Как отмечалось ранее, планировщики формируютпоследовательность решений, с помощью которой можно перевести текущую ситуациюв некоторую целевую. Планировщики сначала формируют план, затем проверяют еговыполнимость и эффективность, отбирают среди сформированных наилучший план,начинают его выполнение и при необходимости корректируют план при поступлениидополнительной информации от объекта управления и окружающей среды.
В данной работе используется планирование по состояниям. Понятиесостояния складывается из состояния объекта управления и состояния окружающейсреды. Построение плана происходит в пространстве состояний таким образом, чтокаждое одношаговое решение по управлению переводит систему из одного состоянияв другое. План представляется в этом случае некоторой траекторией впространстве состояний.
Задачу планирования по состояниям можно описать некотороймоделью, представленной на рис.3.4.
/>
Рисунок 3.4 — Сеть вывода управляющего решения
При планировании в пространстве состояний необходимо найтипуть, ведущий из начальной вершины (1) в какую-нибудь из вершин,символизирующих целевые ситуации или конечные состояния (9, 10 или 11). Такимобразом, все разветвления в вершинах считаются альтернативными. Надо выбратьодно (любое) продолжение движения.
Совокупность дедуктивного вывода, описание моделифункционирования магистрального газопровода, связанных с ней программныхмодулей и закономерностей функционирования магистрального газопровода вместе спроцедурами их проверки образуют интеллектуальный пакет прикладных программ. Ввиде такого пакета в данном случае выступает Коррелятор. Его основнаякомпонента — набор логико-трансформационных правил вида:
/>, где
/> - описание фрагментатекущей ситуации, наличие которого определяет применимостьлогико-трансформационного правила;
/> - описаниепреобразуемого фрагмента;
/> - результирующееописание нового фрагмента описания.
Если рассматривать />,/> и /> как дескрипторы, а /> как некоторыйспецификатор, то легко установить соответствие между функциональными моделями инабором логико-трансформационных правил, хранящихся в базе знаний.
В задаче управления безопасностью магистральных газопроводовпереходы между состояниями в пространстве состояний недетерминированы, чтоотражает неполноту знаний о возможностях таких переходов. В этом случае дугисети, на которой производится планирование, взвешиваются значениями функциипринадлежности.
В идеале необходимо получить прогноз развития событий науровне описания тех ситуаций, которые могут возникнуть в будущем. То естьнеобходимо получить экстраполяцию в виде перевернутого дерева, показанного на рис.3.5Его корень соответствует ситуации на объекте в данный момент времени. Если вкачестве решения планируется />, топоследующие ярусы дерева показывают те ситуации, в которые может попасть объектв результате реализации именно данного решения. Ветвление дерева соответствуеттой неопределенности, с которой можно представить процесс развертывания событий.Около каждой ситуации, лежащей на концевых ветвях дерева, проставлены оценки />, характеризующиевозможность такого исхода.
/>
Рисунок 3.5 — Дерево экстраполяции управленческих решений.
Если в исходной ситуации кроме решения /> можно использоватьнекоторые другие решения, то для всех них строится имитационный процесс,порождающий свое дерево такого же типа, как на рис.3.5 Далее по некоторомурешающему правилу оцениваются полученные в результате моделирования оценки /> и выбирается то решение />, для которого решающееправило дает наилучший результат.
Особенность описанного метода состоит в том, что примоделировании каждый раз имеется описание получаемой ситуации, а, значит, ееможно классифицировать с помощью Классификатора и оценивать ее конфликтностьили неконфликтность для управления объектом.3.3 Схема программы управления безопасностьюмагистральных газопроводов
Схема программы формирования дерева событий и определенияпути движения по нему (поиск наиболее вероятного сценария развития событий) приведенана рис.3.6.
Поиск наименее вероятного сценария развития событийосуществляется аналогично, с той лишь разницей, что рассчитывается минимальнаявероятность для выбранного следствия, а затем выбирается наименьшая из текущейи предыдущей.
По этой же схеме определяется сценарий развития событий смаксимальным /минимальным ущербом. Отличие состоит в том, что рассчитываетсязначение не вероятности, а возможного совокупного коэффициента ущерба.
/>
/>
Рисунок 3.6 — Схема процесса формирования дерева событий ипоиска пути движения по нему.
/>
4. Программное обеспечениеситуационного управления безопасностью магистральных газопроводов4.1 Описание программы управления безопасностьюмагистральных газопроводов
Программа предназначена для работы в операционных средах MicroSoft Windows98/NT/XP. Windows обеспечиваетудобный и наглядный интерфейс для осуществления операций с файлами, дисками и т.д.А также позволяет приложениям взаимодействовать с дисплеем, клавиатурой, мышьювне зависимости от конкретной модели устройства. Такая независимость отаппаратуры позволяет одному и тому же приложению работать на компьютерах сразличной аппаратной конфигурацией.
В качестве среды программирования была выбрана Delphi 7.
Данный язык создает программы для операционной системыWindows, обеспечивает полную поддержку всех возможностей предоставляемыхсистемой. Язык является полностью объектно-ориентированным, что позволяет легкомоделировать необходимые модули программы. Большинство необходимых визуальныхэлементов уже встроены в оболочку и легко переносятся в проект. Основнаяконцепция Delphi — этомногомодульность. Объектно-ориентированный язык Delphi7 позволяет сократить количество межмодульных вызовов и уменьшить объеминформации, передаваемой между модулями, по сравнению с модульнымпрограммированием.
Программное обеспечение «МАГ» представленоследующими модулями:
Модуль формирования узлов дерева;
Модуль обработки степени доверия;
Модуль вопросов об объектах;
Модуль использования правил базы знаний;
Модуль поиска пути движения по дереву.
Модуль формирования узлов дерева выполняет следующие функции:
1) создание нового узла в вершине дерева (см. рис.4.1);
/>
Рисунок 4.1 — Схема создания нового узла в вершине дерева
2) вставка узла в дерево после указанного узла (см. рис.4.2);
/>
Рисунок 4.2 — Схема процесса вставки узла в дерево после указаного.
3) поиск узла — осуществляется последовательным переборомвсех узлов дерева;
4) просмотр узлов дерева — позволяет вывести на экран списоквсех объектов и их значений, содержащихся в базе данных.
Модуль обработки степени доверия позволяет:
1) добавлять коэффициент доверия для каждого значенияобъекта;
2) изменять существующий коэффициент доверия;
3) извлекать коэффициент доверия из пары «объект-значение».
Модуль вопросов об объектах выполняет следующие функции:
1) добавляет вопрос об объекте;
2) выводит существующий вопрос для заданного объекта;
3) позволяет пользователю ответить на вопрос об объекте.
Модуль использования правил базы знаний позволяет:
1) добавлять к текущему правилу предпосылку;
2) добавлять к текущему правилу заключение;
3) считывать правила из текстового файла и заносить его всписок правил базы знаний.
Модуль поиска пути движения по дереву выполняет следующиефункции:
1) выводит наиболее или наименее вероятный сценарий развитияситуации;
2) подсчитывает вероятности реализации событий;
3) подсчитывает возможный ущерб при реализации каждогосценария.
В базе знаний хранятся сведения обо всех ситуациях,складывающихся либо на объекте транспорта газа, либо во внешней среде исвязанных с возникновением аварии. В программе понятие «ситуация» определенокак «объект». Для каждой ситуации определяются возможные путитрансформации текущей ситуации в другие ситуации («значения объекта»).Каждое значение тот или иной объект может принимать с определенной степеньюдоверия, которая выражается относительной величиной — коэффициентом доверия (изменяетсяв пределах от 0 до 100).
Кроме того, каждая ситуация характеризуется коэффициентомущерба — некоторой неотрицательной величиной, определяющей сумму материальныхзатрат, направленных на ликвидацию последствий ситуации.
Основной модуль программы — MAG. dpr. Модуль MainUnit описываетпроцедуру формирования «дерева» и поиска возможных путей движения понему. В текстовом файле rules. txtхранятся все факты базы знаний и правила движения по «дереву».
Текст программы приведен в приложении Б.4.2 Руководство по эксплуатации
Для запуска программы необходимо выбрать файл MAG. exe. На экране появится главнаярабочая форма программы (рис.4.3).
/>
Рисунок 4.3 — Главная форма ПО «МАГ».
Для того, чтобы наполнить базу знаний фактами, необходимоввести имена объектов, их возможные значения коэффициенты доверия и коэффициентыущерба. После чего нажать кнопку «1. Добавление факта в базу знаний»(рис.4.4).
/>
Рисунок 4.4 — Область добавления фактов в базу знаний
Для проверки наличия в базе объекта с определенным значениемнеобходимо ввести в соответствующее поле имя объекта и значение, а затем нажатькнопку «2. Проверить факт из базы» (рис.4.5).
/>
Рисунок 4.5 — Область проверки наличия фактов в базе
Просмотреть все имеющиеся в базе факты можно, нажав кнопку«3. Просмотр фактов базы знаний». При этом результаты отобразятся вокне «Ход выполнения» (рис.4.3).
Запись всех фактов в текстовый файл осуществляется принажатии кнопки «Сохранить базу в файл».
Для каждого объекта возможно добавление вопроса. Для этогонеобходимо ввести имя объекта и вопрос, после чего нажать кнопку «4. Добавитьвопрос объекта» (рис.4.6).
/>
Рисунок 4.6 — Область добавления вопроса объекта.
Кнопка «5.1. Получить вопрос об объекте» позволяетопределить заданный по конкретному объекту вопрос.
Для того, чтобы выбрать определенное значение ответа навопрос, необходимо выбрать его порядковый номер и затем нажать кнопку«5.2. Ответить на вопрос об объекте» (рис.4.7).
/>
Рисунок 4.7 — Область получения ответа на вопрос
Для определения наименее вероятного сценария развитиясобытий необходимо ввести описание ситуации и нажать кнопку «6. Поискнаименее вероятного сценария развития событий». Результаты поискаотобразятся в окне «Ход выполнения».
Для определения наиболее вероятного сценария развитиясобытий необходимо ввести описание ситуации и нажать кнопку «7. Поискнаиболее вероятного сценария развития событий». Результаты поискаотобразятся в окне «Ход выполнения».
Для поиска сценария с наименьшим возможным ущербомнеобходимо ввести описание ситуации и нажать кнопку «8. Поиск сценария снаименьшим ущербом». Результаты поиска отобразятся в окне «Ходвыполнения».
Для поиска сценария с наибольшим возможным ущербомнеобходимо ввести описание ситуации и нажать кнопку «9. Поиск сценария снаибольшим ущербом». Результаты поиска отобразятся в окне «Ход выполнения».
Завершение работы программы осуществляется при нажатиикнопки «Выход».
4.3 Контрольный пример
Для начала работы с программой необходимо запустить файл MAG. exe. После запуска файла наэкране появится главная форма (рис.4.3).
Сначала необходимо наполнить базу фактами. Для этого нужноввести имена объектов, их возможные значения, коэффициенты доверия икоэффициенты ущерба.
Например, объект «ветер на здание», значение«концентрация
Далее нажать кнопку «1. Добавление факта в базу знаний».Факт будет добавлен в базу знаний (рис.4.8).
/>
Рисунок 4.8 — Добавление факта в базу знаний
Проверить факт на наличие в базе можно следующим образом. Ввестиимя объекта («ветер на здание») и его значение («концентрация
/>
Рисунок 4.9 — Проверка наличия факта в базе (факт имеется)
Если факт отсутствует в базе знаний (например, объект «ветерна здание» со значением «концентрация
/>
Рисунок 4.10 — Проверка наличия факта в базе (фактотсутствует)
Чтобы просмотреть все имеющиеся в базе факты необходимонажать кнопку «3. Просмотр фактов базы знаний». В окне «Ходвыполнения» отобразятся все имеющиеся в базе факты (рис.4.11).
/>
Рисунок 4.11 — Просмотр всех имеющихся в базе фактов
Для того, чтобы добавить вопрос объекта, необходимо ввестиимя объекта, например «ветер на здание», и вопрос — «каковаконцентрация». После этого нажать кнопку «4. Добавить вопрос объекта»(рис.4.12).
/>
Рисунок 4.12 — Добавление вопроса об объекте
Все имеющиеся в базе факты, включающие сведения об объектах,их значениях, коэффициентах доверия, коэффициентах ущерба и вопросах, можносохранить в текстовый файл rules. txt.Для этого необходимо нажать кнопку «Сохранить базу в файл».
Файл rules. txtбудет иметь следующее содержание — рис.4.13.
/>
Рисунок 4.13 — Содержание файла rules.txt
Для того, чтобы получить вопрос об объекте, необходимоввести имя объекта («ветер на здание») и нажать кнопку «5.1. Получитьвопрос об объекте». В поле «Вопрос» выведется имеющийся в базевопрос о данном объекте («какова концентрация»).
Для установления конкретного (одного) значения объекта изнескольких имеющихся (например, значения «концентрация
/>
Рисунок 4.14 — Установка ответа на вопрос
Для ситуации «выброс газа» определим наименеевероятный сценарий развития событий, наиболее вероятный сценарий развитиясобытий, сценарий с наименьшим ущербом, сценарий с наибольшим ущербом.
При нажатии кнопки «6. Поиск наименее вероятногосценария развития событий» в окне «Ход выполнения» отобразятсявсе возможные варианты развития событий, наименее вероятный сценарий развитиясобытий, его вероятность и коэффициент ущерба (рис.4.15).
/>
Рисунок 4.15 — Поиск наименее вероятного сценария развитиясобытий
При нажатии кнопки «7. Поиск наиболее вероятногосценария развития событий» в окне «Ход выполнения» отобразятсявсе возможные варианты развития событий (рис.4.15), наиболее вероятный сценарийразвития событий, его вероятность и коэффициент ущерба (рис.4.16).
/>
Рисунок 4.16 — Поиск наиболее вероятного сценария развитиясобытий
Для того, чтобы определить сценарий с наименьшим ущербом,необходимо нажать кнопку «8. Поиск сценария с наименьшим ущербом». Результатыпоиска отобразятся в окне «Ход выполнения» (рис.4.17).
/>
Рисунок 4.17 — Поиск сценария с наименьшим ущербом
Для того, чтобы определить сценарий с наибольшим ущербом,необходимо нажать кнопку «9. Поиск сценария с наибольшим ущербом». Результатыпоиска отобразятся в окне «Ход выполнения» (рис.4.18).
/>
Рисунок 4.18 — Поиск сценария с наибольшим ущербом
Для окончания работы с программой необходимо нажать кнопку«Выход».
5. Техническое обеспечение
Программа функционирует на универсальной ПЭВМ. ПЭВМ имеютнебольшие габариты, обладают большой мощностью и быстродействием.
Для реализации программного обеспечения «МАГ» необходимнабор аппаратных средств со следующими минимальными техническимихарактеристиками:
процессор INTEL Pentium IV стактовой частотой 1,5 ГГц,
объем оперативной памяти не менее 128 Мб;
жесткий диск объемом 2 Гб;
видеоадаптер SVGA;
клавиатура;
манипулятор мышь;
17" SVGA монитор.
Выбор данного комплекса технических средств обусловлентребованиями, предъявляемыми к надежному обеспечению безопасности магистральныхгазопроводов, а именно:
оперативность и качество принимаемых управленческих решений,
необходимость наличия обширной информации о возможныхситуациях, возникающих при предаварийной и аварийной работе магистральногогазопровода.
Кроме того, выбранный комплекс технических средств отвечаеттребованиям программного обеспечения «МАГ» — требованиям выбранногоязыка Delphi 7.
Заключение
В данной выпускной квалификационной работе были рассмотреныпринципы обеспечения безопасности магистральных газопроводов.
В частности, в ходе выполнения работы выделены основныехарактеристики и поражающие факторы аварий на объектах нефтегазового профиля. Крометого, выделены причины возникновения аварий на объектах транспорта газа ипричины роста числа таких аварий. Это позволило определить основные направленияобеспечения безопасности магистральных газопроводов.
В работе были рассмотрены существующие методы анализа риска.В результате было установлено, что для реализации процесса управлениябезопасностью объектов транспорта газа целесообразно использоватьлогико-графические методы построения и анализа «дерева отказов» и«дерева событий».
Кроме того, проведен анализ риска, включающий следующиестадии:
идентификация опасностей — выделены основные присущиесистеме транспорта газа опасности;
анализ частоты аварий — построены «дерево отказов»и «дерево событий», рассчитаны вероятности и частоты реализациивозможных сценариев;
анализ последствий аварий — оценено воздействие опасныхфакторов на имущество, людей, окружающую среду.
Для управления безопасностью магистральных газопроводовиспользован ситуационный подход, предполагающий выявление проблемных ситуаций ивыполнение различных преобразований имеющейся информации в управленческиерешения, приводящие к их разрешению.
На основе обработанной информации построен алгоритм поискавозможного пути развития аварийной ситуации на магистральном газопроводе.
Выбраны технические средства реализации процесса поискавозможного пути развития аварийной ситуации на магистральном газопроводе.
На базе выбранного комплекса технических средств данныйалгоритм реализован программно. Корректность работы программы проверена наконтрольном примере.
Правила пользования разработанным программным средствомприведены в инструкции по эксплуатации программы.
Разработанная программа позволяет оперативно прослеживатьход развития аварийной ситуации на магистральном газопроводе, определятьвероятности достижения системой интересующих оператора состояний.
Библиографический список
1. Анализ аварий и несчастных случаев на трубопроводном транспорте России: учеб.пособие для вузов/ Под ред. Б.Е. Прусенко, В.Ф. Мартынюка. — М.: Анализопасностей, 2003. — 351 с.
2. Андриянова М.А. Управление риском эксплуатации потенциально опасныхобъектов. Автореферат диссертации на соискание ученой степени кандидататехнических наук. Тулу, ТулГУ, 1999.
3. Арсеньев Ю.Н., Бушинский В.И., Фатуев В.А. Принципы техногеннойбезопасности производств и построения систем управленияриском. ТулГУ, Тула, 1994. — 111 с.
4. Бушинский В.И., Охинько В.А., Смолин С.А., Кузьмина Н.В. Исследованиевлияния управления персоналом на безопасность жизнедеятельности человека. Монография.Воронеж, 1999. — 310 с.
5. Гражданкин А.И., Дегтярев Д.В., Лисанов М.В., Печеркин А.С. Основныепоказатели риска аварии в терминах теории вероятностей // Безопасность труда впромышленности. — 2002. — №7. — с.35-39
6. Захаров В. Интеллектуальные технологии в современных системах управления// Проблемы теории и практики управления. — 2005. — №4. — с.2-10
7. Кульечев В.М., Иванов Е.А., Дадонов Ю.А., Мокроусов С.Н. Трубопроводныйтранспорт природного газа, нефти и нефтепродуктов и его роль в обеспеченииразвития и стабильности топливно-энергетического комплекса // Безопасностьтруда в промышленности. — 2002. — №7. — с.4-10
8. Мартынюк В.Ф., Прусенко Б.Е. Защита окружающей среды в чрезвычайныхситуациях. Москва, 2003.
9. Мокроусов С.Н. Пути повышения безопасности работы нефтегазовогокомплекса и систем магистрального трубопроводного транспорта // Безопасностьтруда в промышленности. — 2005. — №1. — с.18-20
10. Поспелов Д.А. Ситуационное управление: теория и практика. — М.: Наука,1986. — 288 с.
11. Саати Т., Кернс К. Аналитическое планирование. Организация систем. М.: Радиои связь, 1991. — 216 с.
12. Управление безопасностью магистральных газопроводов / В.А. Фатуев, С.А. Васин,В.И. Бушинский, В.М. Митин, К.А. Морозов; Под ред. д. т. н., проф., академикаМАНЭБ В.А. Фатуева; изд.2-е; ТулГУ, М.: Недра, 2000. — 144 с.
13. Фатуев В.А., Митин В.М., Морозов К.А., Югфельд А.С. Теоретические основыпостроения систем управления риском опасных производств. — Учебное пособие. Тула,Тульский государственный университет, 2000. — 179 с.
14. Фатуев В.А., Морозов К.А., Югфельд А.С., Шадрин А.А. Обеспечениенадежности магистральных газопроводов. — Тула: Гриф и К, 2003. — 130 с.
15. Чекинов Г.П., Чекинов С.Г. Ситуационное управление: состояние иперспективы // Информационные технологии. — 2004. — №2. -Приложение
Приложение А
Текст программы управления безопасностью магистральныхгазопроводов:
unit MainUnit;
interface
uses
Windows, Messages,SysUtils, Variants, Classes, Graphics, Controls,Forms,
Dialogs, StdCtrls,ExtCtrls, Spin, ComCtrls;
const
word_max=100;
line_max=255;
colon=': ';
period='. ';
comma=',';
spase='';
equals='=';
nextrow=#13#10;
definite=100;
type
TMainForm = class (TForm)
Memo_Report: TMemo;
LE_Crash_Name: TLabeledEdit;
Bevel1: TBevel;
Bevel2: TBevel;
Bevel3: TBevel;
Bevel4: TBevel;
Bevel5: TBevel;
Bevel6: TBevel;
Bevel7: TBevel;
Label1: TLabel;
Label2: TLabel;
Bevel9: TBevel;
B_AddFact: TButton;
LE_AddFact_Frime: TLabeledEdit;
LE_AddFact_Value: TLabeledEdit;
LE_AddFact_Cf: TLabeledEdit;
B_TestFact: TButton;
LE_TestFact_Frime: TLabeledEdit;
LE_TestFact_Value: TLabeledEdit;
B_SeeFacts: TButton;
B_MakeFrimeMultivalid: TButton;
LE_MakeMulti_Frime: TLabeledEdit;
B_MakeLegal: TButton;
LE_MakeLegal_Frime: TLabeledEdit;
B_AddQuestion: TButton;
LE_AddQuestion_Frime: TLabeledEdit;
B_Answer: TButton;
LE_Answer_Frime: TLabeledEdit;
B_GetQuestion: TButton;
SE_Answer: TSpinEdit;
LE_Answer_Value: TLabeledEdit;
B_Answer_GetNumVals: TButton;
M_MakeLegal_Value: TMemo;
LE_AddQuestion_Value: TLabeledEdit;
LE_GetQuestion: TLabeledEdit;
B_GetTarget: TButton;
LE_GetTarget: TLabeledEdit;
Button1: TButton;
Bevel8: TBevel;
Button2: TButton;
Label3: TLabel;
procedure FormCreate (Sender: TObject);
procedure B_AddFactClick (Sender: TObject);
procedure B_TestFactClick (Sender: TObject);
procedure B_SeeFactsClick (Sender: TObject);
procedure B_MakeFrimeMultivalidClick (Sender:TObject);
procedure B_MakeLegalClick (Sender: TObject);
procedure B_AddQuestionClick (Sender: TObject);
procedure B_AnswerClick (Sender: TObject);
procedure B_GetQuestionClick (Sender: TObject);
procedure B_Answer_GetNumValsClick (Sender:TObject);
procedure LE_OnExit (Sender: TObject);
procedure M_MakeLegal_ValueExit (Sender: TObject);
procedure B_GetTargetClick (Sender: TObject);
procedure Button1Click (Sender: TObject);
procedure Button2Click (Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
word_string=string [word_max] ;
line_string=string [line_max] ;
value_ptr=^value;
legal_ptr=^legal_value;
frime_ptr=^frime;
value=record // значение
name: word_string; // Имя
cert: integer; // коэффициент доверия
next: value_ptr; // указатель на след. значение
end;
legal_value=record // Допустимое значение
name: word_string; // Имя
next: legal_ptr; // Указатель на следующее допуст. значение
end;
frime=record // Фрейм
name: word_string; // имя
question: line_string; // атрибут («вопрос»)
question: line_string; // атрибут («вопрос»)
multivald: boolean; // флаг многозначности
legal_list: legal_ptr; // указатель на 1ый элемент спискадопустимых значений
sought: boolean; // флаг «найденности»
value_list: value_ptr; // указатель на 1ый элемент списказначений («ответ (ы)»)
next: frime_ptr // указатель на следующий фрейм
end;
prem_ptr=^prem;
con_ptr=^con;
rule_ptr=^rule;
prem=record // Предпосылка
frime: word_string; // имя фрейма
value: word_string; // имя значение
next: prem_ptr; // указатель на следующую
end;
con=record // заключение
frime: word_string; // имя фрейма
value: word_string; // имя значения
cert: integer; // коэффициент доверия
next: con_ptr; // указатель на следующее
end;
rule=record // правило
name: word_string; // имя
prem: prem_ptr; // указатель на предпосылку
con: con_ptr; // указатель на заключение
next: rule_ptr; // указатель на следующее
end;
var
MainForm: TMainForm;
last_try, //результат последнего поиска
top_fact: frime_ptr; // указатель на начало спискафреймов-объктов
top_rule: rule_ptr; // указатель на начало списка правил
rulesFile: TextFile;
explain: boolean;
procedure make_node (var curr_frime: frime_ptr);
function find_frime (f_frime: word_string):frime_ptr;
procedure split (f_line: line_string; varf_frime,f_value: word_string);
function test (f_frime,f_value: word_string):value_ptr;
procedure add_frime (f_frime,f_value: word_string);
procedure see_vals (curr_frime: frime_ptr; cf_on:boolean);
procedure see_frimes (cf_on: boolean);
function get_cf (f_line: line_string): integer;
function blend (cf1,cf2: integer): integer;
procedure add_cf (f_frime,f_value: word_string;cf2: integer);
function ok_add (f_frime: word_string; cf: integer):boolean;
procedure make_multi (f_frime: word_string);
function find_word (f_line: line_string; n:integer; var _word: word_string): boolean;
procedure add_legal (f_legal: word_string; curr_frime:frime_ptr);
function find_legal (f_frime: word_string; n:integer; var _word: word_string): boolean;
procedure make_legals (m_line: word_string);
procedure make_legals_from_form (f_frime: word_string);
procedure add_question (f_frime,s_value: word_string);
function p_question (f_frime: word_string):line_string;
procedure ask (f_frime: word_string; varf_value: word_string);
procedure p_read (var oline: line_string);
function add_prem (curr_prem: prem_ptr; f_line:line_string): prem_ptr;
function add_con (curr_con: con_ptr; f_line:line_string): con_ptr;
procedure p_rule (curr_rule: rule_ptr);
procedure enter_rule (rule_name: word_string);
procedure LoadFormFile;
procedure SaveToFile;
function find_rule (fri: word_string; curr_rule:rule_ptr): rule_ptr;
procedure pursue (f_frime: word_string);
procedure q_result (f_frime: word_string);
procedure explain_how (curr_rule: rule_ptr);
procedure explain_why (f_frime: word_string);
implementation
{$R *. dfm}
procedure make_node;
var
head: frime_ptr;
begin
new (curr_frime);
head: =top_fact;
top_fact: =curr_frime;
with curr_frime^ do begin
next: =head;
value_list: =nil;
question: ='';
legal_list: =nil;
multivald: =false;
sought: =false;
end;
end;
function find_frime;
var
curr_frime: frime_ptr;
begin
if (last_trynil) and (last_try^. name=f_frime)
then begin
Result: =last_try;
exit;
end
else begin
curr_frime: =top_fact;
last_try: =nil;
Result: =nil;
while (curr_frimenil) and (Result=nil)do begin
if (curr_frime^. name=f_frime)
then begin
Result: =curr_frime;
Last_try: =curr_frime;
exit;
end;
curr_frime: =curr_frime^. next;
end;
end;
end;
procedure split;
var
st_left,
st_right: integer;
begin
st_right: =pos (period,f_line);
if st_right=length (f_line) then f_line: =copy(f_line,1,st_right-1);
st_left: =pos (equals,f_line);
st_right: =pos (comma,f_line);
if ( (st_left=0) and (st_right=0)) thenf_frime: =f_line;
if (st_right=0) then st_right: =length (f_line)+1;
if st_left>0
then begin
f_frime: =copy (f_line,1,st_left-1);
if pos (') ',f_frime) =0
then f_value: =copy (f_line,st_left+1,st_right-st_left-1);
end;
st_right: =pos (') ',f_frime);
Приложение А (продолжение)
if st_right>0 then f_frime: =copy (f_line,1,st_right-1);
end;
function test (f_frime,f_value: word_string):value_ptr;
var
curr_frime: frime_ptr;
curr_value: value_ptr;
begin
curr_frime: =find_frime (f_frime);
Result: =nil;
if curr_frimenil
then begin
curr_value: =curr_frime^. value_list;
while (curr_valuenil) do begin
if curr_value^. name= f_value
then Result: =curr_value;
curr_value: =curr_value^. next;
end;
end;
end;
procedure add_frime (f_frime,f_value: word_string);
var
curr_frime: frime_ptr;
value_list,head: value_ptr;
begin
curr_frime: =find_frime (f_frime);
if curr_frime=nil
then begin
make_node (curr_frime);
curr_frime^. name: =f_frime;
end;
curr_frime^. sought: = true;
value_list: =test (f_frime, f_value);
if value_list=nil
then begin
head: =curr_frime^. value_list;
new (value_list);
with value_list^ do begin
next: =head;
cert: =0;
name: =f_value;
end;
curr_frime^. value_list: =value_list;
end;
end;
procedure see_vals;
var
curr_value: value_ptr;
cf: integer;
bufStr: string;
begin
curr_value: =curr_frime^. value_list;
bufStr: =curr_frime^. name+equals;
if curr_value=nil
then bufStr: =bufStr+' He определено';
while (curr_valuenil) do begin
bufStr: =bufStr+curr_value^. name;
if (cf_on=true)
then begin
cf: =curr_value^. cert;
bufStr: =BufStr+' (Кд='+IntToStr (cf) +') ';
end;
curr_value: =curr_value^. next;
if curr_valuenil then bufStr: =BufStr+','+NextRow;
end;
MainForm. Memo_Report. Lines. Add (BufStr);
end;
procedure see_frimes (cf_on: boolean);
var
curr_frime: frime_ptr;
begin
MainForm. Memo_Report. Lines. Add ('');
MainForm. Memo_Report. Lines. Add ('Просмотрфактов базы знаний: ');
curr_frime: =top_fact;
while (curr_frimenil) do begin
see_vals (curr_frime,cf_on);
curr_frime: =curr_frime^. next;
MainForm. Memo_Report. Lines. Add ('');
end;
end;
function get_cf;
var
resultat,
st_right: integer;
trim: line_string;
begin
Result: =definite;
st_right: =pos (period,f_line);
if st_right=length (f_line)
then f_line: =copy (f_line, 1,st_right-1);
st_right: =pos ('Кд',f_line);
if (st_right>0) and (st_right+3
then begin
trim: =copy (f_line,st_right+3,length (f_line)- st_right-2);
val (trim,Result,resultat);
if result>0 then Result: =definite;
if pos ('Плохой',trim)>0
then Result: =25;
if pos ('Средний',trim)>0
then Result: =50;
if pos ('Хороший',trim)>0
then Result: =75;
if pos ('Абсолютный',trim)>0
then Result: =definite;
end;
end;
function blend;
begin
blend: = (100* (cf1+cf2) — (cf1*cf2)) div100;
end;
procedure add_cf (f_frime,f_value: word_string;cf2: integer);
var
cf1: integer;
curr_value: value_ptr;
begin
curr_value: =test (f_frime,f_value);
cf1: =curr_value^. cert;
curr_value^. cert: =blend (cf1,cf2);
end;
function ok_add;
var
curr_frime: frime_ptr;
curr_value: value_ptr;
is_100: boolean;
begin
is_100: =false;
curr_frime: =find_frime (f_frime);
if curr_frimenil
then begin
curr_value: =curr_frime^. value_list;
while (curr_valuenil) do begin
if curr_value^. cert=definite
then begin
is_100: =true;
break;
end;
curr_value: =curr_value^. next;
end;
end;
Result: =not ( (cf=definite) and (is_100) and(not (curr_frime^. multivald)));
end;
procedure make_multi;
var
curr_frime: frime_ptr;
begin
curr_frime: =find_frime (f_frime);
if curr_frime=nil
then begin
make_node (curr_frime);
curr_frime^. name: =f_frime;
end;
curr_frime^. multivald: =true;
end;
function find_word;
var
x, com_place: integer;
begin
Result: =false;
_word: ='';
for x: =1 to n do begin
com_place: =pos (comma,f_line);
if com_place=0
then begin
com_place: =length (f_line) +1;
Result: =true;
end;
_word: =copy (f_line,1,com_place-1);
f_line: =copy (f_line,com_place+1,length (f_line)- com_place);
end;
end;
procedure add_legal;
var curr_legal,head: legal_ptr;
begin
new (curr_legal);
curr_legal^. next: =nil;
curr_legal^. name: =f_legal;
head: =curr_frime^. legal_list;
if headnil
then begin
while (head^. nextnil) do
head^. next: =curr_legal;
end
else
curr_frime^. legal_list: =curr_legal;
end;
function find_legal;
var
curr_frime: frime_ptr;
curr_legal: legal_ptr;
counter: integer;
begin
curr_frime: =find_frime (f_frime);
Result: =true;
if curr_frimenil
then begin
curr_legal: =curr_frime^. legal_list;
_word: =curr_legal^. name;
counter: =1;
if curr_legal=nil
then Result: =false;
while (curr_legalnil) and (counter
curr_legal: =curr_legal^. next;
if curr_legalnil
then begin
_word: =curr_legal^. name;
inc (counter);
end
else
Result: =False;
end;
end
else
Result: =False;
end;
procedure make_legals;
var
curr_frime: frime_ptr;
counter,
st_place: integer;
new_line: line_string;
_word,
f_frime,
dummy: word_string;
done: boolean;
begin
split (m_line,f_frime,dummy);
curr_frime: =find_frime (f_frime);
if curr_frime=nil
then begin
make_node (curr_frime);
curr_frime^. name: =f_frime;
end;
st_place: =pos (equals,f_frime);
new_line: =copy (f_frime,st_place+1,length(f_frime) — st_place);
counter: =1;
done: =false;
while not done do begin
done: =find_word (new_line,counter,_word);
add_legal (_word,curr_frime);
counter: =counter+1;
end;
end;
procedure make_legals_from_form;
var
curr_frime: frime_ptr;
i: integer;
begin
curr_frime: =find_frime (f_frime);
if curr_frime=nil
then begin
make_node (curr_frime);
curr_frime^. name: =f_frime;
end;
with MainForm. M_MakeLegal_Value do
If Lines. Count>0 then
for i: =0 to Lines. Count-1 do
add_legal (Lines [i],curr_frime);
end;
procedure add_question;
var
curr_frime: frime_ptr;
begin
curr_frime: =find_frime (f_frime);
if curr_frime=nil
then begin
make_node (curr_frime);
curr_frime^. name: =f_frime;
end;
curr_frime^. question: =s_value;
end;
function p_question;
var
curr_frime: frime_ptr;
begin
curr_frime: =find_frime (f_frime);
if curr_frimenil
then begin
if curr_frime^. question''
then
Result: =curr_frime^. question
else
Result: ='Вопрос объекта пуст';
еnd
else
Result: ='Объект в базе не найден';
end;
procedure ask;
var
pick,
num_vals: integer;
_word: word_string;
begin
if not find_legal (f_frime,1,_word)
then begin
MainForm. Memo_Report. Lines. Add ('Введите значение и нажмите кнопку «Выбрать»');
MainForm. B_Answer_GetNumVals. Enabled: =True;
while MainForm. B_Answer_GetNumVals. Tag=0do
Application. ProcessMessages;
MainForm. B_Answer_GetNumVals. Tag: =0;
f_value: =MainForm. LE_Answer_Value. Text;// readln (f_value)
end
else begin
num_vals: =1;
with MainForm. Memo_Report. Lines do begin
Add ('Допустимые значения объекта "'+f_frime+'": ');
while find_legal (f_frime,num_vals,_word) dobegin
Add (IntToStr (num_vals) +'. '+_word);
inc (num_vals);
end;
end;
MainForm. SE_Answer. MaxValue: =num_vals-1;
MainForm. Memo_Report. Lines. Add ('Выберитеномер ответа и нажмите кнопку «Выбрать»');
MainForm. B_Answer_GetNumVals. Enabled: =True;
while MainForm. B_Answer_GetNumVals. Tag=0do
Application. ProcessMessages;
pick: =MainForm. SE_Answer. Value; // ord (select[1]) — 48;
MainForm. B_Answer_GetNumVals. Tag: =0;
find_legal (f_frime,pick,_word);
f_value: =_word;
end;
end;
procedure p_read;
var
c: char;
len,
counter,
st_place: integer;
supress: boolean;
in_line: line_string;
begin
readln (RulesFile, in_line);
in_line: =AnsiLowerCase (in_line);
oline: ='';
len: =length (in_line);
st_place: =pos (' (', in_line);
if st_place>0
then len: =st_place;
supress: =false;
for counter: =1 to len do begin
c: =in_line [counter] ;
if (c=equals) and (pos ('вопрос',oline) >0)
then supress: =true;
if ord (c) =9
then c: =' ';
if (c'') or (supress=true)
then oline: =concat (oline,c);
end;
end;
function add_prem;
var
new_prem: prem_ptr;
f_frime,f_value: word_string;
begin
split (f_line,f_frime,f_value);
add_prem: =curr_prem;
new (new_prem);
with new_prem^ do begin
frime: =f_frime;
value: =f_value;
next: =nil;
end;
if curr_prem=nil
then
add_prem: =new_prem
else begin
while (curr_prem^. nextnil) do
curr_prem: =curr_prem^. next;
curr_prem^. next: =new_prem;
end;
end;
function add_con (curr_con: con_ptr; f_line:line_string): con_ptr;
var
new_con: con_ptr;
f_frime,
f_value: word_string;
begin
split (f_line,f_frime,f_value);
add_con: =curr_con;
new (new_con);
with new_con^ do begin
frime: =f_frime;
value: =f_value;
cert: =get_cf (f_line);
next: =nil;
end;
if curr_con=nil
then
add_con: =new_con
else begin
while (curr_con^. nextnil) do
curr_con^. next: =new_con;
end;
end;
procedure p_rule (curr_rule: rule_ptr);
var
curr_prem: prem_ptr;
curr_con: con_ptr;
bufStr: string;
begin
bufStr: =curr_rule^. name+' ';
curr_prem: =curr_rule^. prem;
while (curr_premnil) do begin
bufStr: =bufStr+curr_prem^. frime+'=';
bufStr: =bufStr+curr_prem^. value;
curr_prem: =curr_prem^. next;
if curr_premnil
then
bufStr: =bufStr+' '
else
MainForm. Memo_Report. Lines. Add (BufStr);
end;
curr_con: =curr_rule^. con;
while curr_connil do begin
bufStr: =curr_con^. frime+'=';
bufStr: =bufStr+curr_con^. value+', Кд='+IntToStr (curr_con. cert);
curr_con: =curr_con^. next; ifcurr_connil
then
bufStr: =bufStr+' '
else
MainForm. Memo_Report. Lines. Add (BufStr);
end;
end;
procedure enter_rule (rule_name: word_string);
var
new_rule,
curr_rule: rule_ptr;
line: line_string;
done: boolean;
begin
new (new_rule);
if top_rulenil
then begin
curr_rule: =top_rule;
while curr_rule^. nextnil do
curr_rule: =curr_rule^. next;
curr_rule^. next: =new_rule;
end
else
top_rule: =new_rule;
with new_rule^ do begin
name: =rule_name;
next: =nil;
prem: =nil;
con: =nil;
end;
p_read (line);
done: =false;
while ( (not done) and (not Eof (RulesFile)))do begin
new_rule^. prem: =add_prem (new_rule^. prem,line);
p_read (line);
done: = (pos ('ВВ',line)>0) and (length (line) =2);
end;
p_read (line);
repeat
done: =Eof (RulesFile);
new_rule^. con: =add_con (new_rule^. con,line);
done: =done or (line [length (line)] ='. ');
if not done then p_read (line);
until done;
p_rule (new_rule);
end;
procedure LoadFormFile;
var
command: word_string;
m_line,f_line: line_string;
st_place: integer;
s_frime,s_value: word_string;
begin
MainForm. Memo_Report. Lines. Add ('Чтениефайла, содержащего правила');
assign (RulesFile,'rules. txt');
reset (RulesFile);
top_rule: =nil;
command: ='';
while not Eof (RulesFile) do begin
p_read (f_line);
st_place: =pos (' (',f_line);
if st_place=0
then
st_place: =pos (colon,f_line);
if st_place>1
then begin
command: =copy (f_line,1,st_place-1);
m_line: =copy (f_line,st_place+1,length (f_line)- st_place);
if command='многозначный'
then begin
split (m_line,s_frime,s_value);
make_multi (s_frime);
add_frime (s_frime,s_value);
add_cf (s_frime,s_value,get_cf (m_line));
end else
if command='вопрос'
then begin
split (m_line,s_frime,s_value);
add_question (s_frime,s_value);
end else
if command='разрешён'
then begin
make_legals (m_line);
end else
if command='правило'
then begin
split (m_line,s_frime,s_value);
enter_rule (s_frime);
end;
end;
end;
end;
procedure SaveToFile;
var
a_frime: frime_ptr;
a_legal: legal_ptr;
a_value: value_ptr;
a_rule: rule_ptr;
a_con: con_ptr;
a_prem: prem_ptr;
f: TextFile;
begin
AssignFile (f,'rules. txt');
Rewrite (f);
a_frime: =top_fact;
while a_frimenil do begin
a_value: =a_frime^. value_list;
while a_valuenil do begin
writeln (f,'многозначный'+colon+a_frime^. name+equals+a_value^. name+comma+'Кд=',a_value^. cert);
a_value: =a_value. next;
end;
a_Legal: =a_frime^. Legal_list;
write (f,'разрешён'+colon,a_frime^.name,equals);
while a_Legalnil do begin
write (f,a_legal^. name,comma);
a_legal: =a_legal. next;
end;
writeln (f);
writeln (f,'вопрос'+colon+a_frime^.name+equals+a_frime^. question);
a_frime: =a_frime^. next;
end;
a_rule: =top_rule;
while a_rulenil do begin
writeln (f,'правило'+a_rule^.name);
a_prem: =a_rule^. prem;
while a_premnil do begin
writeln (f,a_prem^. frime+equals+a_prem^. value);
a_prem: =a_prem^. next;
end;
writeln (f,'ВВ');
a_con: =a_rule^. con;
while a_connil do begin
writeln (f,a_con^. frime+equals+a_con^. value+comma+'Кд=',a_con^. cert);
a_con: =a_con^. next;
if a_prem=nil
then writeln (f,'. ');
end;
a_rule: =a_rule^. next;
end;
CloseFile (f);
end;
function find_rule (fri: word_string; curr_rule:rule_ptr): rule_ptr;
var
found: boolean;
curr_con: con_ptr;
begin
found: =false;
find_rule: =nil;
while (curr_rulenil) and (not found)do begin
curr_con: =curr_rule^. con;
while curr_connil do begin
if curr_con^. frime=fri
then begin
found: =true;
find_rule: =curr_rule;
end;
curr_con: =curr_con^. next;
end;
curr_rule: =curr_rule^. next;
end;
end;
procedure conclude (curr_rule: rule_ptr; prem_cert:integer);
var
curr_con: con_ptr;
cert: integer;
begin
curr_con: =curr_rule^. con;
while curr_connil do begin
add_frime (curr_con^. frime,curr_con^. value);
cert: = (prem_cert*curr_con^. cert) div 100;
add_cf (curr_con^. frime,curr_con^. value,cert);
curr_con: =curr_con^. next;
end;
end;
procedure pursue;
var
f_value: word_string;
curr_frime: frime_ptr;
curr_value: value_ptr;
curr_rule: rule_ptr;
curr_prem: prem_ptr;
bad: boolean;
solved: boolean;
lowest: integer;
begin
curr_frime: =find_frime (f_frime);
if curr_frime=nil
then begin
make_node (curr_frime);
curr_frime^. name: =f_frime;
end;
solved: =false;
if not curr_frime^. sought then begin
solved: =false;
curr_frime^. sought: =true;
curr_rule: =find_rule (f_frime,top_rule);
while (curr_rulenil) and (ok_add (f_frime,definite))do begin
curr_prem: =curr_rule^. prem;
bad: =false;
lowest: =definite;
while (curr_premnil) and (not bad) dobegin
pursue (curr_prem^. frime);
curr_value: =test (curr_prem^. frime,curr_prem^.value);
if curr_value=nil
then
bad: =true
else
if curr_value^. cert
then
lowest: =curr_value^. cert;
curr_prem: =curr_prem^. next;
end;
if not bad
then begin
if explain
then
conclude (curr_rule,lowest);
solved: =true;
end;
curr_rule: =find_rule (f_frime,curr_rule^. next);
end;
if not solved
then begin
if explain
then
ask (f_frime,f_value);
add_frime (f_frime,f_value);
add_cf (f_frime,f_value,definite);
end;
end;
end;
procedure q_result (f_frime: word_string);
var
curr_frime: frime_ptr;
begin
MainForm. Memo_Report. Lines. Add ('Результатконсультации: ');
curr_frime: =find_frime (f_frime);
see_vals (curr_frime,true);
MainForm. Memo_Report. Lines. Add ('Конецконсультации');
end;
procedure explain_how (curr_rule: rule_ptr);
var
curr_prem: prem_ptr;
curr_con: con_ptr;
begin
MainForm. Memo_Report. Lines. Add ('');
MainForm. Memo_Report. Lines. Add ('Tаккак: ');
curr_prem: =curr_rule^. prem;
while curr_premnil do begin
MainForm. Memo_Report. Lines. Add (curr_prem^.frime+'='+curr_prem^. value);
curr_prem: =curr_prem^. next;
if curr_premnil
then
MainForm. Memo_Report. Lines. Add (' ')
else
MainForm. Memo_Report. Lines. Add ('');
end;
MainForm. Memo_Report. Lines. Add ('Можно сделать вывод, что ');
curr_con: =curr_rule^. con;
while curr_connil do begin
MainForm. Memo_Report. Lines. Add (curr_con^.frime+'='+curr_con^. value+', Кд='+IntToStr (curr_con^.cert));
curr_con: =curr_con^. next;
if curr_connil
then
MainForm. Memo_Report. Lines. Add (' ')
else
MainForm. Memo_Report. Lines. Add ('');
end;
end;
procedure explain_why (f_frime: word_string);
begin
MainForm. Memo_Report. Lines. Add ('')
end;
procedure TMainForm. FormCreate (Sender: TObject);
begin
last_try: =nil;
top_fact: =nil;
LoadFormFile;
explain: =true;
end;
procedure TMainForm. B_AddFactClick (Sender:TObject);
var
s_frime,
s_value: word_string;
s_cf: integer;
begin
s_cf: =StrToInt (LE_AddFact_Cf. Text);
s_frime: =LE_AddFact_Frime. Text;
s_value: =LE_AddFact_Value. Text;
if ok_add (s_frime,s_cf)
then begin
add_frime (s_frime,s_value);
add_cf (s_frime,s_value,s_cf);
MainForm. Memo_Report. Lines. Add ('Фактдобавлен');
end
else
MainForm. Memo_Report. Lines. Add ('Добавление не разрешено (Объект '+s_frime+' нe объявленмногозначным)! ');
end;
procedure TMainForm. B_TestFactClick (Sender:TObject);
var
s_frime,
s_value: word_string;
begin
s_frime: =LE_TestFact_Frime. Text;
s_value: =LE_TestFact_Value. Text;
if test (s_frime,s_value) =nil
then
MainForm. Memo_Report. Lines. Add ('Фактневерен')
else
MainForm. Memo_Report. Lines. Add ('Фактверен');
end;
procedure TMainForm. B_SeeFactsClick (Sender:TObject);
begin
see_frimes (true);
end;
procedure TMainForm. B_MakeFrimeMultivalidClick(Sender: TObject);
begin
make_multi (LE_MakeMulti_Frime. Text);
end;
procedure TMainForm. B_MakeLegalClick (Sender:TObject);
begin
make_legals_from_form (LE_MakeLegal_Frime. Text);
end;
procedure TMainForm. B_AddQuestionClick (Sender:TObject);
var
s_frime,
s_value: word_string;
begin
s_frime: =LE_AddQuestion_Frime. Text;
s_value: =LE_AddQuestion_Value. Text;
add_question (s_frime,s_value);
end;
procedure TMainForm. B_GetQuestionClick (Sender:TObject);
var
s_frime: word_string;
begin
s_frime: =LE_Answer_Frime. Text;
LE_GetQuestion. Text: =p_question (s_frime);
end;
procedure TMainForm. B_Answer_GetNumValsClick(Sender: TObject);
begin
B_Answer_GetNumVals. Tag: =1;
end;
procedure TMainForm. B_AnswerClick (Sender:TObject);
var
s_frime,
s_value: word_string;
begin
s_frime: =LE_Answer_Frime. Text;
ask (s_frime,s_value);
add_frime (s_frime,s_value);
add_cf (s_frime,s_value,definite);
end;
procedure TMainForm. LE_OnExit (Sender: TObject);
begin
TLabeledEdit (Sender). Text: =AnsiLowerCase(trim (TLabeledEdit (Sender). Text));
end;
procedure TMainForm. M_MakeLegal_ValueExit(Sender: TObject);
var i: integer;
begin
with M_MakeLegal_Value do
If Lines. Count>0 then
for i: =Lines. Count-1 downto 0 do begin
Lines [i]: =AnsiLowerCase (trim (Lines [i]));
If Lines [i] ='' then Lines. Delete (i);
end;
end;
procedure TMainForm. B_GetTargetClick (Sender:TObject);
var
s_frime: word_string;
begin
s_frime: =LE_GetTarget. Text;
if s_frime''
then begin
pursue (s_frime);
q_result (s_frime);
end
else
MainForm. Memo_Report. Lines. Add ('Ошибка!Объект не указан! ');
end;
procedure TMainForm. Button1Click (Sender: TObject);
begin
SaveToFile;
end;
procedure TMainForm. Button2Click (Sender: TObject);
begin
qmport;
end;
end.