Раздел описания предикатов внутренней базы данных
Содержание
Введение
1. Общие сведения о PROLOG
2. Разработка экспертной системы
2.1 Формирование базы знаний
2.2 Структура программы ЭС
2.2.1 Раздел описания предикатов внутренней базы данных
2.2.2 Раздел описания предикатов
2.2.3 Раздел описания предложений
2.2.4 Раздел описания внутренней цели
Заключение
Библиография
Приложение
prolog программирование экспертный предикат
Введение
Одним из наиболее значительных достижений искусственного интеллекта стала разработка мощных компьютерных систем, получивших название "экспертных" или основанных на "знаниях" систем. В современном обществе при решении задач управления сложными многопараметрическими и сильносвязанными системами, объектами, производственными и технологическими процессами приходится сталкиваться с решением неформализуемых либо трудноформализуемых задач. Такие задачи часто возникают в следующих областях: авиация, космос и оборона, нефтеперерабатывающая промышленность и транспортировка нефтепродуктов, химия, энергетика, металлургия, целлюлозно-бумажная промышленность, телекоммуникации и связь, пищевая промышленность, машиностроение, транспорт, медицина и фармацевтическое производство, административное управление, прогнозирование и мониторинг. Наиболее значительными достижениями в этой области стало создание систем, которые ставят диагноз заболевания, предсказывают месторождения полезных ископаемых, помогают в проектировании электронных устройств, машин и механизмов, решают задачи управления реакторами и другие задачи.
Под экспертной системой (ЭС) будем понимать программу, которая использует знания специалистов (экспертов) о некоторой конкретной узко специализированной предметной области и в пределах этой области способна принимать решения на уровне эксперта-профессионала.
Осознание полезности систем, которые могут копировать дорогостоящие или редко встречающиеся человеческие знания, привело к широкому внедрению и расцвету этой технологии в 80-е, 90-е годы прошлого века. Основу успеха ЭС составили два важных свойства, отмечаемые рядом исследователей:
в ЭС знания отделены от данных, и мощность экспертной системы обусловлена в первую очередь мощностью базы знаний и только во вторую очередь используемыми методами решения задач;
решаемые ЭС задачи являются неформализованными или слабоформализованными и используют эвристические, экспериментальные, субъективные знания экспертов в определенной предметной области.
Основными категориями решаемых ЭС задач являются:
извлечение информации из первичных данных (таких как сигналы, поступающие от гидролокатора);
диагностика неисправностей (как в технических системах, так и в человеческом организме);
структурный анализ сложных объектов (например, химических соединений);
выбор конфигурации сложных многокомпонентных систем (например, распределенных компьютерных систем);
планирование последовательности выполнения операций, приводящих к заданной цели (например, выполняемых промышленными роботами).
Для классификации ЭС используют следующие признаки:
способ формирования решения;
способ учета временного признака;
вид используемых данных;
число используемых источников решения знаний.
По способу формирования решения ЭС можно разделить на анализирующие и синтезирующие. В системах первого типа осуществляется выбор решения из множества известных решений на основе анализа знаний, в системах второго типа решение синтезируется из отдельных фрагментов знаний.
В зависимости от способа учета временного признака ЭС делят на статические и динамические. Статические ЭС предназначены для решения задач с неизменяемыми в процессе решения данными и знаниями, а динамические ЭС допускают такие изменения.
По видам используемых данных и знаний различают ЭС с детерминированными и неопределенными знаниями. Под неопределенностью знаний и данных понимаются их неполнота, ненадежность, нечеткость.
ЭС могут создаваться с использованием одного или нескольких источников знаний.
Экспертные системы делятся на различные виды в зависимости от решаемых задач. Задачи, которые решают экспертные системы:
Интерпретация - описание ситуации по информации, поступающей от датчиков и других источников.
Наблюдение - сравнение результатов интерпретации с ожидаемыми результатами.
Мониторинг - наблюдение в определенные промежутки времени.
Прогноз - это определение вероятных последствий заданных ситуацией, системы прогнозирования основываются на имитационном моделировании, которое отражает связи в реальный мир.
Диагностика - выявление причин неправильного функционирования системы по результатам наблюдения.
Ремонт - выполнение последовательности предписанных исправлений.
Планирование - построение последовательности действий для достижения желаемого результата.
Проектирование - построение конфигурации объектов с учетом ограничений.
Отладка - составление рецептов исправления неправильного функционирования системы, настройка отладочной системы.
Управление - адаптивное руководство поведения системы в целом (наблюдает, чтобы отследить на протяжении времени, классифицирует, диагностирует это отклонение, находит рецепт его устранения и осуществляет его применение).
Обучение - диагностирование, отладка, ремонт поведения обучаемого.
Важную роль при создании ЭС играют инструментальные средства. Среди инструментальных средств для создания ЭС наиболее популярны такие языки программирования, как LISP и PROLOG, а также экспертные системы-оболочки (ЭСО): KEE, CENTAUR, G2 и GDA, CLIPS, АТ_ТЕХНОЛОГИЯ, предоставляющие в распоряжение разработчика - инженера по знаниям широкий набор для комбинирования систем представления знаний, языков программирования, объектов и процедур.
В качестве языка программирования в данной курсовой работе был выбран PROLOG.
1. Общие сведения о PROLOG
Название языка "PROLOG" происходит от слов логическое программирование (PROgramming in LOGic - в английском).
В истории возникновения и развития языка PROLOG можно выделить следующие этапы.
В 1965 году в работе "A machine oriented logic based on the resolution principle", опубликованной в 12 номере журнала "Journal of the ACM", Дж Робинсон представил метод автоматического поиска доказательства теорем в исчислении предикатов первого порядка, получивший название "принцип резолюции".
В 1973 году "группа искусственного интеллекта" во главе с Аланом Колмероэ создала в Марсельском университете программу, предназначенную для доказательства теорем. Эта программа использовалась при построении систем обработки текстов на естественном языке. Программа доказательства теорем получила название PROLOG (от Programmation en Logique). Программа была написана на Фортране и работала довольно медленно.
В 1976 г. Роберт Ковальский вместе с его коллегой Маартеном ван Эмденом предложил два подхода к прочтению текстов логических программ: процедурный и декларативный.
В 1977 году в Эдинбурге Уоррен и Перейра создали очень эффективный компилятор языка PROLOG для ЭВМ DEC-10, который послужил прототипом для многих последующих реализаций PROLOG. Что интересно, компилятор был написан на самом PROLOG. Эта реализация PROLOG, известная как "эдинбургская версия", фактически стала первым и единственным стандартом языка. Алгоритм, использованный при его реализации, послужил прототипом для многих последующих реализаций языка. Как правило, если современная PROLOG-система и не поддерживает эдинбургский PROLOG, то в ее состав входит подсистема, переводящая прологовскую программу в "эдинбургский" вид. Имеется, конечно, стандарт ISO/IEC 13211- 1:1995, но его поддерживают далеко не все PROLOG- системы.
В 1980 году Кларк и Маккейб в Великобритании разработали версию PROLOG для персональных ЭВМ.
В 1981 году стартовал вышеупомянутый проект Института по разработке методов создания компьютеров нового поколения.
Традиционно под программой понимают последовательность операторов (команд, выполняемых компьютером). Этот стиль программирования принято называть императивным. Программируя в императивном стиле, программист должен объяснить компьютеру, как нужно решать задачу. Противоположный ему стиль программирования - так называемый декларативный стиль, в котором программа представляет собой совокупность утверждений, описывающих фрагмент предметной области или сложившуюся ситуацию. Программируя в декларативном стиле, программист должен описать, что нужно решать. Соответственно и языки программирования делят на императивные и декларативные.
В основе декларативных языков лежит формализованная человеческая логика. Человек лишь описывает решаемую задачу, а поиском решения занимается императивная система программирования. В итоге получаем значительно большую скорость разработки приложений, значительно меньший размер исходного кода, легкость записи знаний на декларативных языках, более понятные, по сравнению с императивными языками, программы.
Известна классификация языков программирования по их близости либо к машинному языку, либо к естественному человеческому языку. Те, что ближе к компьютеру, относят к языкам низкого уровня, а те, что ближе к человеку, называют языками высокого уровня. В этом смысле декларативные языки можно назвать языками сверхвысокого или наивысшего уровня, поскольку они очень близки к человеческому языку и человеческому мышлению.
К императивным языкам относятся такие языки программирования, как Паскаль, Бейсик, Си и т. д. В отличие от них, PROLOG является декларативным языком.
При программировании на Прологе усилия программиста должны быть направлены на описание логической модели фрагмента предметной области решаемой задачи в терминах объектов предметной области, их свойств и отношений между собой, а не деталей программной реализации.
Программа на PROLOG не является таковой в классическом понимании, поскольку не содержит явных управляющих конструкций типа условных операторов, операторов цикла и т. д. Она представляет собой модель фрагмента предметной области, о котором идет речь в задаче. И решение задачи записывается не в терминах компьютера, а в терминах предметной области решаемой задачи, в духе модного сейчас объектно-ориентированного программирования.
Наиболее известная у нас в стране и довольно эффективная версия PROLOG - TURBO PROLOG. Его начинала разрабатывать фирма Borland International в содружестве с датской компанией Prolog Development Center (PDC). Первая версия вышла в 1986 году. Последняя совместная версия имела номер 2.0 и была выпущена в 1988 году.
Самое существенное отличие TURBO PROLOG от эдинбургской версии - наличие в нем строгой типизации данных для повышения скорости трансляции и выполнения программ.
К достоинствам Турбо Пролога относится возможность присоединять к программе на этом языке процедуры, написанные на Паскале, Си, Фортране или ассемблере.
2. Разработка экспертной системы
Чтобы проводить экспертизу, компьютерная программа должна быть способна решать задачи посредством логического вывода и получать при этом достаточно надежные результаты. Программа должна иметь доступ к системе фактов, называемой базой знаний.
Программа также должна во время консультации выводить заключения из информации, имеющейся в базе знаний.
. База знаний (БЗ).
. Механизм вывода (МВ).
. Система пользовательского интерфейса (СПИ).
База знаний - центральная часть экспертной системы. Она содержит правила, описывающие отношения или явления, методы и знания для решения задач из области применения системы. Можно представлять базу знаний состоящей из фактических знаний и знаний, которые используются для вывода других знаний.
Механизм вывода содержит принципы и правила работы. Механизм вывода "знает", как использовать базу знаний так, чтобы можно было получать разумно согласующиеся заключения (выводы) из информации, находящейся в ней.
Когда экспертной системе задается вопрос, механизм вывода выбирает способ применения правил базы знаний для решения задачи, поставленной в вопросе. Фактически, механизм вывода запускает экспертную систему в работу, определяя какие правила нужно вызвать и организуя к ним доступ в базу знаний. Механизм вывода выполняет правила, определяет когда найдено приемлемое решение и передает результаты программе интерфейса с пользователем.
Когда вопрос должен быть предварительно обработан, то доступ к базе знаний осуществляется через интерфейс с пользователем. Интерфейс - это часть экспертной системы, которая взаимодействует с пользователем.
Система интерфейса пользователя принимает информацию от пользователя и передает ему информацию. Просто говоря, система интерфейса должна убедиться, что, после того как пользователь описал задачу, вся необходимая информация получена. Интерфейс, основываясь на виде и природе информации, введенной пользователем, передает необходимую информацию механизму вывода. Когда механизм вывода возвращает знания, выведенные из базы знаний, интерфейс передает их обратно пользователю в удобной форме.
Интерфейс с пользователем и механизм вывода могут рассматриваться как "приложение" к базе знаний. Они вместе составляют оболочку экспертной системы. Для базы знаний, которая содержит обширную и разнообразную информацию, могут быть разработаны и реализованы несколько разных оболочек.
В качестве примера экспертной системы на правилах была разработана система по установлению типа темперамента человека. Она помогает человеку не эксперту в данной области определить свой темперамент личности в соответствии с определенными критериями.
Знание природных энергодинамических характеристик личности (ее темперамента) необходимо во многих аспектах жизни:
личностный темперамент является важным фактором психологической совместимости партнеров в семейной жизни или профессиональной деятельности;
идентификация темперамента нужна для оптимизации жизненного распорядка, для повышения эффективности труда и отдыха. Она незаменима в профессиональном отборе, если вид деятельности связан с определенными требованиями к психомоторике и свойствам нервной системы. Например, если работа связана с постоянными сильными или частыми раздражителями;
личностный темперамент важно учитывать при занятиях тем или иным видом спорта. В частности, при определении вида спорта, в котором индивидуум может добиться наибольших успехов, при выборе оптимальной и благоприятной физической нагрузки во время тренировок или занятий физкультурой. Это позволяет представителям получить максимум удовлетворения от физической нагрузки, а представителям других - избежать перегрузок и накопленного стресса;
помощь родителям в воспитании детей. Например, эта методика поможет вам определить, чем стоит заниматься вашему ребенку: хоккеем или фигурным катанием;
многие наверняка замечали, что уроки дети могут делать быстро и с радостью, а могут сидеть часами без особых успехов. Дети по-разному воспринимают обучение. Ведь каждый ребенок обладает индивидуальным темпераментом, заложенным природой. Одних увеличение нагрузок лишь заводит, другие впадают в уныние и слезы. Зная особенности своего темперамента, вы можете сделать своё обучение и проведение досуга эффективнее, познавательней.
Темперамент человека - качество биологическое, врожденное, а не приобретенное. Только на 25% из 100% темперамент поддается коррекции. И эта коррекция - наша подстройка под требования социума. Пользователю предлагается ответить на 20 вопросов. Ответы пользователя сопоставляются с характеристиками темперамента, составляющими часть базы знаний, тогда вызывается соответствующее продукционное правило и в результате идентифицируется тип темперамента. Затем результат сообщается пользователю. Если тип не идентифицирован, пользователь относится к смешанному типу темперамента, что тоже сообщается.
2.1 Формирование базы знаний
Выделяют четыре простых типа темперамента: сангвинический, холерический, меланхолический и флегматический.
Базу знаний заполняем характеристиками четырех типов темперамента.
Сангвиник - живой, горячий, подвижный человек, с частой сменой настроения, впечатлений, с быстрой реакцией на все события, происходящие вокруг него, довольно легко примиряющийся со своими неудачами и неприятностями. Обычно сангвиники обладают выразительной мимикой. Он очень продуктивен в работе, когда ему интересно, приходя в сильное возбуждение от этого, если работа не интересна, он относится к ней безразлично, ему становится скучно.
Холерик - быстрый, страстный, порывистый, однако совершенно неуравновешенный, с резко меняющимся настроением с эмоциональными вспышками, быстро истощаемый. У него нет равновесия нервных процессов, это его резко отличает от сангвиника. Холерик, увлекаясь, безалаберно растрачивает свои силы и быстро истощается.
Меланхолик - человек легко ранимый, склонный к постоянному переживанию различных событий, он мало реагирует на внешние факторы. Свои астенические переживания он не может сдерживать усилием воли, он чересчур впечатлителен, легко эмоционально раним.
Флегматик неспешен, невозмутим, имеет устойчивые стремления и настроение, внешне скуп на проявление эмоций и чувств. Он проявляет упорство и настойчивость в работе, оставаясь спокойным и уравновешенным. В работе он производителен, компенсируя свою неспешность прилежанием.
Для определения типа темперамента пользователю предлагается ответить на следующий ряд вопросов:
) Вы живо откликаетесь на то, что привлекает ваше внимание?
) Вы хорошо контролируете свои эмоции?
) У Вас плавная и уверенная походка?
) Вы много жестикулируете?
) Для Вас наиболее характерным является состояние бодрости?
) Легко ли ВЫ приспосабливаетесь к новой обстановке?
) Ваша речь громкая и отчетливая?
) Вы упорны, даже упрямы?
) Ритм вашей деятельности неравномерный, скачкообразный?
) Вы любите рисковать?
) У Вас бывают вспышки раздражительности?
) Вы застенчивый человек?
) Одиночество не тяготит вас?
) Вам свойственна некоторая мнительность и подозрительность?
) Вам приятно, когда окружающие сопереживают вам?
) У Вас завышенные требования к себе и окружающему миру?
) В своих словах и делах вы отличаетесь последовательностью?
) С другими людьми у вас ровные, хорошие отношения?
) Вы аккуратны, педантичны в мелочах?
) Вы грамотно распределяете свои силы?
Ответ "да" на первые 7 вопросов характерен для сангвиников
На вопросы 8-11 ответ "да" характерен для холериков.
Положительный ответ на вопросы 12-16 описывает меланхолический тип темперамента, а на 17-20 вопросы - флегматический тип темперамента.
.2 Структура программы ЭС
Созданная на TURBO PROLOG ЭС состоит из следующих разделов:
database - раздел описания предикатов внутренней базы данных;
predicates - раздел описания предикатов;
clauses - раздел описания предложений;
goal - раздел описания внутренней цели.
Порядок разделов может быть произвольным, но при этом предикаты должны быть определены до их использования.
2.2.1 Раздел описания предикатов внутренней базы данных
Внутренние базы данных так называются потому, что они обрабатываются исключительно в оперативной памяти компьютера.
Внутренняя база данных состоит из фактов, которые можно динамически, в процессе выполнения программы, добавлять в базу данных и удалять из нее, сохранять в файле, загружать факты из файла в базу данных. Эти факты могут использовать только предикаты, описанные в разделе описания предикатов базы данных.
Если раздел описания предикатов базы данных в программе только один, то он может не иметь имени. В этом случае он автоматически получает стандартное имя dbasedom.
Описание предикатов базы данных совпадает с их описанием в разделе описания предикатов predicates.
В базе данных могут содержаться только факты, а не правила вывода, причем факты базы данных не могут содержать свободных переменных. Есть существенное преимущество в использовании таких баз данных. Дело в том, что факты, использующие предикаты, заданные в разделе database, могут добавляться и удаляться во время выполнения программы.
Для добавления фактов во внутреннюю базу данных в нашей ЭС использовались встроенные предикаты asserta и assertz.
Разница между этими предикатами заключается в том, что предикат asserta добавляет факт перед другими фактами (в начало внутренней базы данных), а предикат assertz добавляет факт после других фактов (в конец базы данных).
В качестве параметра у этих предикатов указывается добавляемый факт.
Для удаления фактов из базы данных служат предикат retract.
Предикат retract удаляет из внутренней базы данных первый с начала факт, который может быть отождествлен с его первым параметром.
.2.2 Раздел описания предикатов
В разделе, озаглавленном зарезервированным словом predicates, содержатся описания определяемых пользователем предикатов. В традиционных языках программирования подобными разделами являются разделы описания заголовков процедур и функций.
Домены аргументов должны быть либо стандартными, либо объявленными в разделе описания доменов. Имя предиката в должно быть идентификатором, т.е. оно должно состоять только из английских букв, цифр и символа подчеркивания, причем не может начинаться с цифры.
Например, предикат, описывающий отношение "temperament", который использовался в ЭС, может быть описан следующим образом:
Это описание означает, что у предиката один аргумент строкового типа.
.2.3 Раздел описания предложений
Этот раздел можно считать основным разделом программы, потому что именно в нем содержатся факты и правила, реализующие пользовательские предикаты. Начинается этот раздел со служебного слова clauses.
При попытке удовлетворения цели TURBO PROLOG работает с самого начала раздела clauses, просматривая в процессе поиска последовательно каждый факт или правило. По мере прохождения раздела clauses TURBO PROLOG устанавливает внутренние указатели после каждого выражения, которое удовлетворяет текущей подцели. Если такое выражение не является частью ведущего к решению логического пути, то TURBO PROLOG возвращается к установленному указателю и ищет другое соответствие. Такой процесс называется поиском с возвратом ( backtracking ).
.2.4 Раздел описания внутренней цели
С зарезервированного слова goal начинается раздел описания внутренней цели программы.
В ЭС "Тип темперамента" в самом теле программы мы использовали внутреннюю цель:
goal(1,10,12," Экспертная система : Тип темперамента ",0,0,25,80),("ЭС разработана студенткой 542 класса"),nl,("Кучеренко Надеждой"),nl,("--------------------------------------------"),nl,.
Само предложение, определяющее цель, состоит из семи подцелей, разделенных запятыми.
Первая подцель:
makewindow(1,10,12," Экспертная система : Тип темперамента ",0,0,25,80),
Предикат makewindow создает новое окно на экране. Когда окно создано, оно становится активным (текущим), и вся выводимая информация автоматически направляется в него.
Предикат makewindow имеет формат:
makewindow(WNo,ScrAttr,FrAttr,Heading,Row,Col,Height,Width)
Описания аргументов этого предиката приведены в таблице 2, атрибуты цветов образуются из значений, приведенных в таблице 3.
Таблица 2 - Описания аргументов предиката makewindow
АргументОписаниеWnoНомер окнаScrAttrАтрибут цвет букв.FrAttrАтрибут цвета рамки окна.HeadingТекст заголовка окна.Row,ColОпределяет левый верхний угол окна.HeightВысота окна, включая рамкуWidthШирина окна, включая рамку.
Таблица 3 - Описание атрибуты цветов предиката makewindow
Цвет буквВеличинаЦвет рамкиВеличинаЧерный0Черный0Серый8Голубой16Голубой1Зеленый32Светлоголубой0Синий48Зеленый2Красный64Светлозеленый10Алый80Синий3Коричневый96Светлосиний11Белый112Красный4Светлокрасный12Алый5Светлоалый13Коричневый6Желтый14Белый7
Второй подцелью является печать следующей строки символов на экране:
"ЭС разработана студенткой 542 класса"
Эта подцель образована при помощи предиката write, одного из многих "встроенных" предикатов TURBO PROLOG. Подобные предикаты не требуют специального описания в программе, их можно использовать сразу.
Встроенный предикат write в данной программе встречается в виде:("ЭС разработана студенткой 542 класса"),
Двойные кавычки при этом применяются для ограничения символьной строки; подобным образом должны выделяться все символьные строки.
Третья подцель задается еще одним встроенным предикатом: nl. Предикат nl переводит курсор в начало следующей строки.
Четвертой подцелью является вывод на экран строки:
" Кучеренко Надеждой "
Пятая подцель, еще один предикат nl.
Шестая подцель предназначена для вывода на экран строки
"--------------------------------------------"
Эта строка служит для визуального разделения информации о создателе экспертной системы и началом процедуры определения класса животных.
Седьмая подцель - предикат nl.
Заключение
Целью данной курсовой работы является закрепление теоретических знаний и практических навыков в области логического программирования, а также приобретение практического опыта при проектировании сложных интерактивных систем и программ.
В процессе выполнения курсовой работы, мной были приобретены навыки программной реализации экспертных систем на языке TURBO PROLOG.
Исходя из приведенной экспертной системы для определения типа темперамента человека, можно сделать вывод, что TURBO PROLOG предоставляет богатые возможности для реализации экспертных систем и написания "дружественного интерфейса" для общения пользователя с программой. TURBO PROLOG пригоден для разработки систем экспертных консультаций, поскольку в нем имеются и язык представления знаний, и общецелевая стратегия решения задач, основанная на принципе резолюции.
Библиография
. Нейлор К. Как построить свою ээкспертную систему: Пер. с англ.-М.: Энергоатомиздат 1991. - 286с.
. Элти Дж., Кумбс М. Экспертные системы: концепции и примеры / Пер. с англ. и предисл. Б.И.Шитикова. - М.: Финансы и статистика, 1987. - 191 с.: ил.
. Хейес-Рот Ф., Уотерман Д., Ленат Д. Построение экспертных систем. Пер. с англ. - М.: Мир, 1987.-447с.
. Попов Э.В. Экспертные системы: Решение неформализованных задач в диалоге с ЭВМ. - М.: Наука. Гл. ред. физ.-мат. лит., 1987. - 288 с. - (Пробл. искусственного интеллекта).
. Гаврилова Т.А., Хорошевский В.Ф. Базы знаний интеллектуальных систем - СПб.: Питер, 2001. - 384 с.: ил.
Приложение
Исходный код программы:(string)(string)(string)
predicates(string)(string)(string)(string)(string)(string,char)(string,char)_all.:-repeat.
% программа задает вопросы пользователю("сангвиник "):-("Вы живо откликаетесь на то, что привлекает ваше внимание?"),("Вы хорошо контролируете свои эмоции?"),("У Вас плавная и уверенная походка?"),("Вы много жестикулируете?"),("Для Вас наиболее характерным является состояние бодрости?"),("Легко ли ВЫ приспосабливаетесь к новой обстановке?"),("Ваша речь громкая и отчетливая?").
temperament("холерик "):-("Вы упорны, даже упрямы?"),("Ритм вашей деятельности неравномерный, скачкообразный?"),("Вы любите рисковать?"),("У Вас бывают вспышки раздражительности?").
temperament("меланхолик "):-("Вы застенчивый человек?"),("Одиночество не тяготит вас?"),("Вам свойственна некоторая мнительность и подозрительность?"),("Вам приятно, когда окружающие сопереживают вам?"),("У Вас завышенные требования к себе и окружающему миру?").
temperament("флегматик "):-("В своих словах и делах вы отличаетесь последовательностью?"),("С другими людьми у вас ровные, хорошие отношения?"),("Вы аккуратны, педантичны в мелочах?"),("Вы грамотно распределяете свои силы?").("смешанный тип темперамента").
% работа с динамической базой данных(X):-xpositive(X),!; xnegative(X),!,fail; ask(X,'y').(X):-xnegative(X),!; xpositive(X),!,fail; ask(X,'n').(X,R):-write(X," ? : "),readchar(Reply),write(R eply,"\n"),(X,Reply),R=Reply.
% проверка присутствия фактов в динамической базе данных(X):-yes(X);maybe(X).(X):-no(X);maybe(X).
% запоминаем факт в динамической базе данных(X,'y'):-asserta(yes(X)).(X,'n'):-assertz(no(X)).(X,'q'):-asserta(maybe(X)).
% очищаем память от фактов динамической базы данных_all:-retract(yes(_)),delete_all._all:-retract(no(_)),delete_all._all:-retract(maybe(_)),delete_all._all.:-delete_all,,("На вопросы отвечать (y-да, n-нет, q-не знаю)./n"),(X),("Тип темперамента: ",X,"\n"),("Завершить работу программы (y/n): "),readchar (Z),(Z),nl,='y'.(1,10,12," Экспертная система : Тип темперамента ",0,0,25,80),("ЭС разработана студенткой 542 класса"),nl,("Кучеренко Надеждой"),nl,("--------------------------------------------"),nl,.