Текст
                    РЛЕВИН,
Д.ДРАНГ, В.ЭДЕЛСОН
ПРАКТИЧЕСКОЕ
ВВЕДЕНИЕ
В ТЕХНОЛОГИЮ
ИСКУССТВЕННОГО
Ж10П103Е
И ЭКСПЕРТНЫХ
С ИЛЛЮСТРАЦИЯМИ
НА БЕЙСИКЕ

ПРАКТИЧЕСКОЕ ВВЕДЕНИЕ В ТЕХНОЛОГИЮ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА И ЭКСПЕРТНЫХ СИСТЕМ С ИЛЛЮСТРАЦИЯМИ НА БЕЙСИКЕ
A COMPREHENSIVE GUIDE TO Al AND EXPERT SYSTEMS Robert I. Levine Senior Research Engineer, Sperry Corporation Diane E. Drang Director of Educational Services, Jewish Board Family & Children’s Services Barry Edelson Editor and author McGraw-Hill Book Company New York St. Louis San Francisco Auckland Bogota Hamburg London Madrid Mexico Montreal New Delhi Panama Paris S3o Paulo Singapore Sydney Tokyo Toronto
Р. ЛЕВИН Д.ДРАНГ Б.ЭДЕЛСОН ПРАКТИЧЕСКОЕ ВВЕДЕНИЕ В ТЕХНОЛОГИЮ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА И ЭКСПЕРТНЫХ СИСТЕМ С ИЛЛЮСТРАЦИЯМИ НА БЕЙСИКЕ Перевод с английского и предисловие МЛ.Сальникова, Ю.В.Сальниковой МОСКВА "ФИНАНСЫ И СТАТИСТИКА” 1990
ББК 24.4.1 Л36 Издание подготовлено совместно с предприятием „Гольфстрим” Советско-американского Фонда „Культурная инициатива” Левин Р. и др. Л36 Практическое введение в технологию искусственного ин- теллекта и экспертных систем с иллюстрациями на Бейсике /Р. Левин, Д. Дранг, Б. Эделсон: Пер. с англ.; Предисловие М. Л. Сальникова, Ю. В. Сальниковой. - М.: Финансы и статис- тика, 1990. - 239 с.: ил. ISBN 5-279-00448-0. Цель книги американских авторов — практическое освоение техноло- гий искусственного интеллекта и экспертных систем. Изучение основных компонентов ИИ и ЭС иллюстрировано примерами программирования соответствующих методов и задач. Достаточно сложные концепции и методы изложены просто и лаконично, с расчетом на минимальные пред- варительные знания читателя в этой области. Для программистов и пользователей экспертных систем. 2404010000- 092 010(01) -90 128 - 90 ББК 24.4.1 ISBN 0-07-037470-8 (США) © 1986 by McGrow-Hill, Inc. ISBN 5-279-00448-0 (СССР) © M. Л. Сальников, Ю. В. Сальникова, перевод, предисловие, 1990
ПРЕДИСЛОВИЕ К РУССКОМУ ИЗДАНИЮ Советскому читателю предлагается еще одна работа по искусствен- ному интеллекту. Книга Р.Левина, Д.Дранг, Б.Эделсона «Практиче- ское введение в технологию искусственного интеллекта и экспертных систем с иллюстрациями на Бейсике» предназначена для начинающих. В ней ясно и лаконично изложены ключевые концепции искусственно- го интеллекта и экспертных систем. Но это лишь половина дела. Глав- ное достоинство книги в том, что она помогает перейти от идей к их воплощению. Для тех, кто только начал знакомиться с экспертными системами, это особенно важно. Получив первые практические резуль- таты, читатель обретет уверенность в себе. В качестве языка реализации экспертных систем в книге выбран Бейсик, наиболее распространенный и простой для освоения язык про- граммирования, интерпретатор или компилятор для которого есть, как правило, на любом компьютере. Для программирования задач искус- ственного интеллекта разработаны специальные языки программиро- вания LISP и PROLOG. Однако из этого вовсе не следует, что на традиционных языках программирования нельзя создать полноцен- ную экспертную систему. В принципе не столь важно, каким языком программирования пользоваться. Бейсик подходит для этих целей, как и любой другой язык. Дело совсем в ином, а именно в умении довести идеи до реализации. Этому и посвящена книга. Она построена на при- мерах. Сначала дается постановка задачи, рассматриваются способы ее решения, приводится процесс разработки алгоритма и его перевода в машинную программу. Авторы подробно освещают технологические особенности програм- мирования задач искусственного интеллекта, прослеживают истоки формальных информационных структур искусственного интеллекта в человеческом мышлении и проводят сравнение процессов принятия решения человеком и экспертной системой. В предлагаемом вниманию читателя издании подробно разбирает- ся использование прямой и обратной цепочек рассуждений в механиз- ме логического вывода и верификации достигнутой цели. Рассматриваемые примеры взяты из жизни. Книга охватывает почти все концепции экспертных систем, осно- ванных на правилах, и что особенно важно, авторы приводят способы реализации изложенных принципов в реальной программе. Подробно обсуждаются проблемы, связанные с созданием базы знаний и ее запол- нением человеком-экспертом. Изложение в книге идет от простого к сложному, от базовых элементов до полной экспертной системы. В работе такою рода неизбежны упрощения, но они не снижают ее цен-
6 ПРЕДИСЛОВИЕ К РУССКОМУ ИЗДАНИЮ ности, а позволяют расставить необходимые акценты и облегчить чи- тателю освоение материала. Книга Р .Левина, Д.Дранг, Б.Эделсона дает возможность получить основные знания в области искусственного интеллекта и экспертных систем и перейти к изучению источников, расматривающих описанные в ней концепции глубже, на более формальном уровне. Книга не свободна и от недостатков. Основной из них — некоторая небрежность, которую авторы допустили в текстах программ. Просто взять и ввести представленные в книге тексты программ в компьютер и автоматически получить работающую программу нельзя. Их нужно предварительно изучить и затем отладить. Однако отладка не займет у читателя много времени, так как алгоритмы в программах представле- ны корректно. Указанный недостаток чисто условный, поскольку от- ладка — важный и необходимый шаг в создании любых программных систем. С уверенностью можно сказать, что эта книга будет полезна всем, кто хочет вступить в увлекательный мир искусственного интеллекта. М.Л. Сальников, Ю.В. Сальникова
ПРЕДИСЛОВИЕ Буквально на глазах искусственный интеллект вторгся во все на- правления компьютерной технологии. Системы искусственного интел- лекта появились повсеместно — от большого бизнеса до армии. Искусственный интеллект делает профессиональные возможности че- ловека безграничными. Если он и дальше будет завоевывать рынок с такой скоростью, не за горами то время, когда садиться за компьютер можно будет только имея необходимые познания в этой области. Про- исходит настоящая революция. Предлагаемая книга в доступной форме знакомит с основными идеями искусственного интеллекта и экспертных систем. От читателя не требуется специальных математических знаний, и даже если его познания в области компьютеров очень скромны, он узнает вполне достаточно об этой новой области применения компьютеров. Прочтя эту книгу, читатель не только освоит основные идеи, но будет способен приступить к разработке своих собственных экспертных систем. Большинство людей считают, что их домашние компьютеры слиш- ком медленны и маломощны, чтобы программировать на них задачи искусственного интеллекта. Книга развеет это заблуждение. Все при- меры программ можно запустить на простом домашнем компьютере. В каждой главе для иллюстрации изложенного материала приведены программы. Их легко понять и использовать. Программы написаны на стандартном Бейсике и их можно легко перенести на любой компьютер. Эта работа представляет собой простой обзор искусственного ин- теллекта и экспертных систем. Каждая глава содержит самостоятель- ный, законченный материал, который снабжен понятными примерами, помогающими его легко усвоить. Книга предназначена для студентов, учащихся колледжей, руководителей компаний, жела- ющих познакомиться с искусственным интеллектом и лиц мало знако- мых с компьютерами. Для лучшего усвоения материал данной книги, взятый из различных источников, был дополнен и затем упрощен. В книге множество иллюстраций и более 50 примеров. Глава 1 знакомит читателя с основными концепциями искусствен- ного интеллекта. В главе 2 показано как эти концепции применяются при создании систем искусственного интеллекта на компьютере. В главе 3 обсуждаются основные идеи экспертных систем и их место в искусственном интеллекте. В главе 4 коротко даются простые сведения по обработке естествен- ного языка.
8 ПРЕДИСЛОВИЕ В главе 5 на большом числе примеров поясняется прямая цепочка рассуждений. Приведена реализующая ее программа на Бейсике. Для лучшего усвоения материала с программой можно поработать на ком- пьютере. В процессе работы она может быть усовершенствована. В главе 6 обсуждается обратная цепочка рассуждений и приведена ее программная реализация. В главе 7 обсуждается применение теории вероятностей и нечеткой логики в экспертных системах. Приведен пример программы, иллюст- рирующий их использование в системах, основанных на правилах. В главе 8 дана разработка упрощенного варианта экспертной сис- темы финансового планирования. В главе 9 обсуждается разработка упрощенной экспертной систе- мы, помогающей сэкономить усилия при общении с покупателями. Она может быть интересна всем, занятым в системе торговли. В главе 10 обсуждается разработка экспертной системы анализа обучения. Такая система может представлять интерес для школ, роди- телей и отдельных лиц. В главе 11 рассматривается использование объектно-ориентиро- ванного программирования в экспертных системах, приведены примеры, иллюстрирующие основные концепции объектно-ориенти- рованного программирования. Дана написанная на Бейсике програм- ма, с которой можно экспериментировать на компьютере. В главе 12 обсуждается использование объектно-ориентированного программирования на примере из области техники. Приведен пример программы. В главе 13 приведен пример объектно-ориентированной эксперт- ной системы. В главах 14, 15 и 16 обсужаются семантические сети, факторы неопределенности и самообучающиеся системы. Каждая глава снабжена примером программы. В главе 17 обсуждается применение языка PROLOG для работы с базой знаний. Глава иллюстрируется примерами. В главе 18 приведены основные сведения по языку программирова- ния LISP. Авторы благодарят профессора нью-йоркского политехнического института Роберта Хонга из фирмы Gramman Corp, за его увлекатель- ные семинары по искусственному интеллекту. Особая благодарность Бетти Хауфрехт, чьи исследования в области обучения и творческое участие помогли авторам разобраться во всех сложностях использова- ния компьютеров в искусственном интеллекте.
1 ЧЕЛОВЕЧЕСКИЙ И МАШИННЫЙ ИНТЕЛЛЕКТ • Введение в искусственный интеллект и экспертные системы • Искусственный интеллект ~ совокупность средств, наделя- ющих компьютеры некоторыми чертами разума •Эксперт- ные системы - программные комплексы, заменяющие человека в узких областях интеллектуальной деятельности •Основные концепции систем искусственного интелллекта •Простые примеры ГЛАВА 1 ВВЕДЕНИЕ В СИСТЕМЫ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА Что такое искусственный интеллект ? Искусственный интеллект (ИИ) — это программная система, имитирующая на компьютере мышление человека. Для создания такой системы необходимо изучить процесс мышления человека, решающего определенные задачи или принимающего решения в конкретной обла- сти, выделить основные шаги этого процесса и разработать программ- ные средства, воспроизводящие их на компьютере. Следовательно, методы ИИ предполагают простой структурный подход к разработке сложных программных систем принятия решений. Традиционное программирование Компьютерные программы, как правило, предназначены для реше- ния строго определенных задач. Приспособить программу к решению новых задач можно, внеся в нее изменения, а для этого ее нужно всю внимательно просмотреть. Но подробный просмотр занимает слишком много времени, а при внесении изменений в программе могут возник- нуть дополнительные ошибки. Искусственный интеллект, как следует из самого названия, при- дает компьютеру черты разума. Методы ИИ упрощают объединение программ и дают возможность заложить в систему искусственного ин-
10 ВВЕДЕНИЕ В СИСТЕМЫ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА теллекта способность к самообучению и накоплению новой, полезной в дальнейшем информации. Человек может накапливать знания, не изменяя способ мышления и не забывая уже известных фактов. Систе- ма ИИ работает почти точно так же. После прочтения данной книги читателю станет ясно, что модифицировать программы ИИ значитель- но проще, чем традиционные программы. Влияние ИИ на программирование Методы ИИ предполагают высокую степень независимости отдель- ных частей программы, каждая из которых реализует определенный шаг решения одной или нескольких задач. Рассмотрим это более под- робно. Независимые части программы можно сравнить с отдельными блоками информации в человеческой памяти. Выбирая нужную ин- формацию, человеческий мозг автоматически подключает только от- носящиеся к делу факты, не перебирая все доступные ему знания. Одну и ту же задачу можно запрограммировать, используя либо традиционные методы, либо методы искусственного интеллекта. При- менение методов искусственного интеллекта позволяет существенно упростить и ускорить разработку программ. В программах обоих типов отдельные части выполняют строго определенные действия, однако программы ИИ обладают особым свойством, похожим на характерное свойство человеческого интеллекта, — изменение любой, даже неболь- шой части информации не влияет на структуру всей программы. Такая гибкость придает процессу программирования большую эффектив- ность, дает возможность создавать программы, умеющие «понимать», т.е. обладающие чертами разума. Человеческое мышление Искусственный интеллект опирается на знания о процессе челове- ческого мышления. Конечно, точно неизвестно, как работает челове- ческий мозг, ученые только начинают постигать сложный механизм интеллекта. Однако для разработки программ искусственного интел- лекта имеющихся знаний вполне достаточно. Цели В основе человеческой деятельности лежит мышление. Когда ут- ром звонит будильник, мозг человека дает команду руке выключить его. Это не автоматическая реакция, решение конкретной задачи тре- бует определенного ответа мозга. Целью называется конечный резуль-
ЧЕЛОВЕЧЕСКИЙ И МАШИННЫЙ ИНТЕЛЛЕКТ 11 тат, на который направлены мыслительные процессы человека. Как только цель (выключить будильник) достигнута, перед человеческим мозгом сразу встают новые цели, например пойти в ванную, почистить зубы, одеться, позавтракать, выйти на автобусную остановку и т.д. Осуществление всех этих целей приводит к достижению главной цели — вовремя попасть на работу. Мысли, ведущие к конечному результа- ту, не случайны, а строго обоснованы. Каждый шаг на пути к главной цели имеет свою локальную цель. Мозг всегда сосредоточен на цели независимо от того, выполняет ли человек простую физическую работу или решает сложную интеллектуальную задачу. Цель заставляет че- ловека думать. Целью может быть, например, следующее: 1. Определить кратчайший путь между Нью—Йорком и Бостоном. 2. Выбрать вино, больше всего подходящее к определенной рыбе. 3. Научиться завязывать шнурки у ботинок. 4. Найти способ оценки успехов ребенка в арифметике. При проектировании систем ИИ всегда следует помнить о цели, для достижения которой они предназначены. Запомните — люди делают что-либо не потому, что думают, а думают, потому что должны что-ли- бо сделать. Теперь, когда в общих чертах понятен ход человеческих мыслей при достижении цели, рассмотрим, каким образом человек решает множество повседневных задач. Факты и правила Человеческий мозг - это огромное хранилище знаний. Человеку свойственно приобретать новые знания и применять их к возникаю- щим ситуациям. В общем интеллект можно представить как совокуп- ность фактов и способов их применения для достижения цели. Отчасти цели достигаются с помощью правил использования всех известных фактов. Приведем несколько примеров фактов и правил их использо- вания. Пример 1 Факт 1. Зажженная плита — горячая. Правило 1. ЕСЛИ положить руку на зажженную плиту, ТО можно обжечься. Пример 2 Факт 2. В час пик на улице много машин. Правило 2. ЕСЛИ попытаться в час пик перейти шоссе, ТО можно попасть под машину. Пример 3 Факт За. Тихие, темные улицы опасны. Факт 36. Пожилые люди обычно не совершают дерзких преступлений. Факт Зв. Полиция защищает людей от преступников. Правило За. ЕСЛИ на тихой, темной улице встретится пожилой человек, ТО можно не очень беспокоиться. Правило Зб. ЕСЛИ на тихой, темной улице вы видите полицейского, ТО можно чувст- вовать себя в безопасности.
12 ВВЕДЕНИЕ В СИСТЕМЫ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА Пример 4 Факт 4. При сложении двух чисел, сумма которых больше 9, нужен перенос. Правило 4. ЕСЛИ складывается столбец чисел, сумма которых больше 9, ТО для пра- вильного выполнения сложения нужно обратиться к факту 4. Заметим, что в приведенных примерах все правила выражены ус- ловным отношением ЕСЛИ-TO, т.е. ЕСЛИ выполняется некоторое условие, ТО последует определенное действие или какая-либо другая реакция. Факты и правила могут быть разной сложности. Обычно при достижении цели люди связывают сложные совокупности фактов и правил. Упрощение Когда человеческий мозг приступает к решению даже самой про- стой задачи, для выбора нужных действий в его распоряжении имеется огромный объем информации. Например, направляясь на работу, че- ловек выходит из дома и идет на угол улицы. Пока он выбирает момент для перехода улицы, в его мозг поступает самая разнородная информа- ция. Прежде чем пересечь улицу, человек анализирует скорость и объем движения, расстояние до противоположного тротуара, сигналы светофора на перекрестке. Одновременно его мозг обрабатывает впе- чатления, не имеющие прямого отношения к переходу улицы, напри- мер погодные условия, цвет и модели проезжающих машин, породу и высоту деревьев, растущих у дороги, вид расположенных неподалеку зданий. Несомненно, человек также думает о месте, куда он идет, о том, как скоро ему надо там быть, кого он может встретить и т.д. Если бы человек, прежде чем шагнуть на проезжую часть, анали- зировал все факты, имеющие прямое, косвенное или вообще не имею- щие никакого отношения к его цели перейти улицу, он простоял бы на тротуаре несколько лет. Каким же образом человеческий мозг из ог- ромного разнообразия фактов и правил быстро выбирает подмножест- во, подходящее только к конкретной ситуации ? Дело в том, что в мозгу существует сложная система, руководящая выбором правильной реак- ции на конкретную ситуацию. Такой выбор называется упрощением. Механизм упрощения блокирует мысли, не имеющие отношения к решаемой в данный момент задаче. Точно так же как удаление у дерева ненужных веток помогает ему расти, механизм упрощения способст- вует достижению цели, игнорируя все бесполезные для этого факты. Когда человек сталкивается с какой-то ситуацией, механизм упроще- ния заставляет его мозг сосредоточиться только на фактах и правилах, нужных для достижения поставленной цели. На рис. 1.1 приведена схема работы механизма упрощения при выборе необходимых правил
ЧЕЛОВЕЧЕСКИЙ И МАШИННЫЙ ИНТЕЛЛЕКТ 13 и фактов. Здесь механизм упрощения используется при выборе правил для ситуации А или Б. В процессе упрощения в соответствии с отноше- нием ЕСЛ И-ТО проверяется некоторое условие. Если условие удовлет- воряет состоянию А, выбираются правила для А, если Б — правила для Б. Действие механизма упрощения можно сравнить с действием руко- водителя учреждения, распределяющего работу в соответствии с ее важностью. Секретарь, машинистка, клерк и другие служащие заняты своими делами. Если же какую-то работу нужно закончить срочно, руководитель должен решить, кто и когда будет ею заниматься. Рис. 1.1. Работа механизма упрощения Если не сделать этого, то одни сотрудники будут сидеть без дела, ожидая, пока другие завершат свою часть работы, в то время как кто-то будет тратить драгоценное время, выполняя несрочную работу. Мож- но проделать огромную работу, но она окажется бессмысленной, если не будет достигнута конечная цель. Без механизма упрощения человеческий мозг будет парализован, так же как учреждение без руководителя. Человеку при решении каждой задачи нужно будет проверять все известные ему правила. Человеческий мозг, подобно учреждению с полным штатом сотрудни- ков различных профессий, хранит все знания, необходимые для при- нятия решения, но если требуемую информацию не выбрать вовремя — все знания бесполезны. Механизм упрощения направляет мысль человека в нужное русло, без него жизнь не только замедлится, но станет просто невозможной.
14 ВВЕДЕНИЕ В СИСТЕМЫ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА Механизм вывода Достигая цель, человек не только приходит к решению поставлен- ной перед ним задачи, но одновременно приобретает новые знания. Рассмотрим такой пример: 1. Джон и Мери — родители Джима. 2. Джон и Мери — родители Джейн. Цель заключается в том, чтобы определить, кем приходятся друг другу Джим и Джейн. Механизм упрощения заставляет человека об- ратиться к хранящемуся в его мозгу правилу: ЕСЛИ у девочки и маль- чика одни и те же родители, ТО мальчик и девочка — брат и сестра. Цель мгновенно достигнута. Ответ на вопрос о степени родства Джима и Джейн получен из известного ранее правила. Кроме того, в процессе достижения цели получен новый факт: Джим и Джейн — брат и сестра. Часть интеллек- та, которая помогает извлекать новые факты, называется механизмом вывода. Именно механизм вывода позволяет человеку учиться на опы- те, так как он дает возможность генерировать новые факты из уже существующих, применяя имеющиеся знания к новой ситуации. В следующей главе будет рассмотрено, как механизм вывода помогает обнаружить ошибки в рассуждениях и совершенствовать правила, ис- пользуемые при достижении целей. Резюме Основные идеи, рассмотренные в этой главе, используются на про- тяжении всей книги при обсуждении процесса создания систем ИИ. Перечислим их еще раз: 1. Цель заставляет человека думать. 2. Человеческий мозг хранит огромное число фактов и правил их использования. Для достижения определенной цели надо только обра- титься к нужным фактам и правилам. 3. Механизм упрощения быстро и эффективно выбирает факты и правила, нужные для достижения ближайшей цели. 4. Механизм вывода завершает мыслительный процесс, выполняя заключения на основании правил, отобранных механизмом упроще- ния, и генерируя новые факты, которые добавляются к знаниям чело- века.
ЧЕЛОВЕЧЕСКИЙ И МАШИННЫЙ ИНТЕЛЛЕКТ 15 ГЛАВА 2 РАЗРАБОТКА СИСТЕМ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА Для того чтобы можно было говорить об искусственном интеллекте, программная система должна иметь все элементы, составляющие про- цесс принятия решения человеком, — цели, факты, правила, механиз- мы вывода и упрощения. В этой книге рассматриваются системы ИИ, основанные на прави- лах. Все они однотипны; основные компоненты таких систем показаны на рис. 2.1. Главное отличие системы ИИ от традиционных программ- ных систем заключается в том, что различные компоненты ее структу- ры определяются раздельно и модификация любой ее части не затрагивает общей структуры. Благодаря такому подходу можно выде- лить отдельные составляющие мыслительного процесса человека, ре- шающего задачу, и включить их в систему ИИ. Определив, как человек мыслит на каждой стадии процесса принятия решения, в программу легко можно включить блок, реализующий действия, аналогичные человеческому мышлению на этой же стадии. Определение целей При проектировании системы ИИ прежде всего нужно определить цели, для достижения которых она предназначена. Приступая к разра- ботке программы, необходимой для решения некоторой задачи, надо знать, к какому классу относится данная задача, и уметь описать ее в нужных терминах. Вновь обратимся к примеру, рассматривавшемуся в гл. 1. Предпо- ложим, что человек быстро и безопасно перешел улицу. Стоя на авто- бусной остановке, он за несколько секунд должен решить, ждать ли ему экспресс, или пройти еще полквартала, где останавливается местный автобус, на котором при определенных обстоятельствах можно до- браться быстрее. Какой же автобус выбрать ? Прежде чем принять решение, человек взвешивает различные факторы. Например, через сколько минут прибудет экспресс ? В каком автобусе вероятнее всего будут свободные места ? Некоторые правила возникают в результате упрощений (’’ЕСЛИ мне придется ждать экс- пресс больше 10 мин, ТО быстрее я доберусь до работы местным авто- бусом”) . В процессе принятия решения постоянно используются правила, в том числе и специальные правила механизма упрощения. Для челове-
16 РАЗРАБОТКА СИСТЕМ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА ка факты и правила, относящиеся к задачам, связанным с работой, не имеют никакого отношения к поездке на работу. Аналогично этому и в системе ИИ несущественными считаются все факты и правила, не относящиеся к достижению сформулированной цели. Рассмотрим теперь задачу, которая более подробно будет описана в гл. 3 при обсуждении проектов реальных систем ИИ. Цель заключа- ется в том, чтобы определить, есть ли у ребенка трудности при изуче- нии арифметики. Эта задача сильно отличается от предыдущей, но именно поэтому она и выбрана. Задача поможет понять, что основные мыслительные процессы человека остаются одинаковыми при решении многих задач, а одну базовую систему ИИ можно использовать при решении огромного числа задач, какими бы разными они не казались. Рис. 2.1. Компоненты системы ИИ Последнюю цель можно разбить на подцели, относящиеся к разным разделам арифметики, и сформулировать их следующим образом: Испытывает ли PERSON трудности при изучении СЛОЖЕНИЯ ? Испытывает ли PERSON трудности при изучении ВЫЧИТАНИЯ ? Испытывает ли PERSON трудности при изучении УМНОЖЕНИЯ ? Переменная PERSON введена для достижения общности. При ре- шении частной задачи ей присваивается имя конкретного ребенка. Ниже приводится предложение языка Бейсик для ввода значения в переменную PERSON: INPUT «Введите имя »; PERSON При выполнении компьютером этого предложения на экране поя- вится надпись: Введите имя ?
ЧЕЛОВЕЧЕСКИЙ И МАШИННЫЙ ИНТЕЛЛЕКТ 17 В ответ надо ввести имя ребенка, допустим Эндрю Джонс. После этого всякий раз при обращении к переменной PERSON в фактах, правилах или целях будет использоваться имя Эндрю Джонс. Когда переменной присваивается значение, ее называют проинициализиро- ванной. Теперь уже цель — узнать, есть ли трудности при изучении какого—либо раздела арифметики у Эндрю Джонса. Определение фактов Факты — важная часть системы ИИ, без них нельзя достичь цели. Выбирая автобус, человеку требовались только нужные для этого фак- ты. Очевидно, что поскольку у каждой нестандартной сйтуации — свой сценарий, у каждой цели — свои факты. Для того чтобы разобраться, как используются факты, рассмотрим одну из подцелей последней задачи: Испытывает ли PERSON трудности при изучении вычитания ? Вычитание требует определенных математических навыков. На- выки и являются теми фактами, которые рассматриваются при дости- жении цели. Для выполнения вычитания ребенок должен уметь: 1. Вычитать два числа без переноса (2). 2. Вычитать два числа с переносом в одном столбце (1). 3. Вычитать два числа с переносом в нескольких столбцах (1). Числа в скобках указывают относительную важность (вес) фактов, использующихся при оценке трудностей, возникающих у ребенка при изучении арифметики. Можно провести аналогию с обычными теста- ми, в которых одни вопросы важнее других. Каждый факт соответству- ет определенному навыку, необходимому для правильного выполнения операции вычитания, а отсутствие какого-либо навыка означает, что ребенок полностью вычитания не освоил. Чем больше назначенный факту вес, тем большее значение имеет этот факт при решении задачи. Использование весов фактов для достижения цели кратко поясняется ниже. Получение данных После того как определены общие факты, необходимые для дости- жения цели, надо получить конкретные данные и присвоить значения переменным. Другими словами, вначале определяются навыки, требу- емые для выполнения вычитания, а затем нужны данные об этих навы- ках у Эндрю Джонса. Прежде всего факты следует представить в форме вопросов, ответив на которые можно получить необходимую информа-
18 РАЗРАБОТКА СИСТЕМ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА цию. Ниже приведены факты в форме вопросов, ответы на которые дадут информацию, нужную для оценки успехов ребенка в вычитании. Может ли PERSON вычесть два числа без переноса ? Может ли PERSON вычесть два числа с переносом в одном столбце ? Может ли PERSON вычесть два числа с переносом в нескольких столбцах ? Точно так же как переменная PERSON заменяется на имя Эндрю Джонс, факты, представленные в виде вопросов, можно заменить на ответы. Факты, содержащие конкретную информацию, становятся данными. Иначе говоря, это ответы в форме «да/нет» на вопросы. Затем данные заносятся в базу данных, и их можно будет использовать при оценке знаний арифметики Эндрю Джонсом. Для вывода вопросов и получения ответов нужна соответствующая программа, например: 5 REM Переменная PERSON — имя ребенка 10 INPUT «Введите имя ребенка»; PERSON 15 REM в SI $ будет храниться ответ (да/нет) на следующий вопрос: 20 РНЖТ’Умеет ли *;PERSON;> вычитать два числа без переноса" 25 INPUT Sl$ 30 REM в S2$ будет храниться ответ (да/нет) на следующий вопрос: 35 РИШТ"Умеет ли *;PERSON;» вычитать два числа с переносом в одном столбце” 40 INPUT S2$ 45 REM в S3$ будет храниться ответ (да/нет) на следующий вопрос: 50 РИЖТ"Умеет ли *;PERSON;» вычитать два числа с переносом в нескольких столбцах" 55 INPUT S3$ Программа в режиме диалога выводит на дисплей вопросы, ответы на которые будут использоваться для оценки трудностей при изучении вычитания конкретным ребенком. Ниже приводится весь диалог с комьютером. Прописными буквами пишутся вопросы, задаваемые компьтером, а строчными — возможные ответы пользователя. ВВЕДИТЕ ИМЯ РЕБЕНКА ? эндрю Джоне УМЕЕТ ЭНДРЮ ДЖОНС ВЫЧИТАТЬ ДВА ЧИСЛА БЕЗ ПЕРЕНОСА ? да УМЕЕТ ЭНДРЮ ДЖОНС ВЫЧИТАТЬ ДВА ЧИСЛА С ПЕРЕНОСОМ В ОД- НОМ СТОЛБЦЕ ? нет УМЕЕТ ЭНДРЮ ДЖОНС ВЫЧИТАТЬ ДВА ЧИСЛА С ПЕРЕНОСОМ В НЕ- СКОЛЬКИХ СТОЛБЦАХ ? нет Теперь, как показано на рис. 2.2, все проинициализированные переменные становятся частью базы данных. До сих пор все было довольно просто: формулировались факты, необходимые для выполнен ния вычитания; разрабатывалась программа, задающая вопросы, отно- сящиеся к этим фактам, а полученные ответы сохранялись для последующего анализа. Выбирая между местным автобусом и экспрес- сом, человеческий мозг автоматически делает то же самое. Человек сам
ЧЕЛОВЕЧЕСКИЙ И МАШИННЫЙ ИНТЕЛЛЕКТ 19 задает себе все необходимые вопросы, опираясь на уже известные ему факты, касающиеся этих автобусов и автобусов вообще. Факты форму- лируются в виде вопросов, ответы на которые помогают человеку при- нять окончательное решение. Факты и правила, которые будут обсуждаться в дальнейшем, хранятся в компьютере в так называемой базе знаний. Когда человек сталкивается с проблемой, какой выбрать автобус, не все соображения для него равноценны, например, если надо попасть на работу вовремя, он не будет слишком заботиться о том, чтобы сидеть в автобусе. Можно сказать, что человек «взвешивает» различные сооб- ражения. Числа в скобках поэтому и называются весами или весовыми факторами фактов. Ответ «нет» на любой из вопросов (см. рис. 2.2) говорит о том, что у Эндрю Джонса нет соответствующего навыка, необходимого для выполнения вычитания, а ответ «да» — что этот навык есть. Получив сумму весовых факторов для отрицательных ответов, можно узнать, как велики у Эндрю Джонса трудности при изучении вычитания, на- пример: Sl$ (2) да О S2$ (1) нет 1 S3$ (1) нет 1 Общий весовой фактор - 2 ___ Эндрю Джонс — Да _ - Нет ---- Нет ------ Персональный компьютер PERSON Sl$ (2) S2$ (1) S3$ (1) База данных Рис. 2.2. Ввод данных Итоговое число, оценивающее трудности при изучении вычитания у Эндрю Джонса, называется общим весовым фактором. Общий весо- вой фактор можно использовать, чтобы определить, есть ли у Эндрю Джонса трудности при изучений вычитания и как они велики, т.е. это еще и некоторая количественная оценка. Общий весовой фактор в последнем примере при ответах «нет» на все вопросы имел бы макси- мальное значение, которое указывало бы на очень серьезные трудности
20 РАЗРАБОТКА СИСТЕМ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА при изучении вычитания. В примере с автобусом наихудший результат получился бы в том случае, если бы пришлось ждать экспресс, всю дорогу до работы стоять и при этом опоздать на работу на час. Рассмат- ривать наихудшие последствия принимаемых решений всегда полезно. Правила и выводы Как отмечалось в первой главе, известные факты применяются к возникшей ситуации в соответствии с правилами. Правила в системе ИИ помогают верно оценить данные и достичь цели, например, узнать, есть ли у ребенка трудности при изучении арифметики. Вернемся к примеру с вычитанием и сформулируем правило, позволяющее оце- нить трудности, возникающие при его изучении: ЕСЛИ общий весовой фактор больше 1, ТО у PERSON есть трудности при изучении вычитания. Результирующий весовой фактор у Эндрю Джонса равен 2, и в соответствии с приведенным выше правилом можно сделать вывод — Эндрю Джонс действительно испытывает трудности при изучении вы- читания. Правило обеспечило практическое применение накопленных данных. Значение 1 в правиле называется граничным уровнем реше- ния. Ранее уже говорилось, что методы ИИ делают программирование более легким и гибким, рассмотрим теперь, каким образом это дости- гается. Вместо того чтобы формулировать правило, можно было бы воспользоваться фактами, охватывающими все возможные варианты, при которых общий весовой фактор больше 1. Ниже приводятся факты, которые, будем надеяться, удовлетворяют поставленному условию, и результирующие факторы для них. Ребенок не умеет вычитать, если: 1. (81$-нет) И (82$-да) И (83$-да) общий весовой фактор - 2 2. (81$-нет) И (82$-да) И (83$-нет) общий весовой фактор - 3 3. (81$-нет) И (82$-нет) И (83$-да) общий весовой фактор - 3 4. (81$-нет) И (82$-нет) И (83$-нет) общий весовой фактор - 4 5. (81$-да) И (82$-нет) И (83$-нет) общий весовой фактор - 2 Отметим, что для всех совокупностей фактов общий весовой фак- тор больше 1. В списке представлено пять различных совокупностей фактов, а сформулированное правило уже включает в себя все эти факты, и их не надо специально программировать. Очевидно, что на-
ЧЕЛОВЕЧЕСКИЙ И МАШИННЫЙ ИНТЕЛЛЕКТ 21 много легче запрограммировать одно правило, включающее все факты, чем несколько отдельных фактов, применение которых ограничено. Если бы не было правил, человек все еще стоял бы на углу улицы и анализировал бы огромное число фактов и связанные с ними данные, не зная, что ему делать. Ему не надо было бы думать об автобусе, поскольку он никогда бы не дошел до остановки ! До сих пор разработка программы состояла из: 1. Определения целей. 2. Определения фактов, имеющих отношение к этим целям. 3. Получения данных, соответствующих фактам, характерным для заданной ситуации или объекта. 4. Оценки данных, используя правила и механизм вывода. Процесс достижения целей описанным способом называется пря- мой цепочкой рассуждений, т. е. цепочкой от данных к логическому заключению. Он позволяет логически переходить от одного шага к другому, как представлено на рис. 2.1. Верификация целей механизмом вывода Рассмотрим пример, иллюстрирующий проверку выводов. Предпо- ложим, совершено преступление: в квартире был обнаружен труп с тремя пулевыми ранами. Медицинский эксперт по виду раны (упрощение в действии) сделал вывод о невозможности самоубийства, и полиция начала расследова- ние. Первое, чем поинтересовались полицейские, — кто кроме потер- певшего имел ключ от квартиры ? Расспросив хозяина дома и некоторых соседей, они узнали, что у убитого был приятель, который часто пользовался его квартирой. Дальнейшее расследование показа- ло, что друзья недавно поссорились. Теперь у полиции был подозреваемый. Опросив свидетелей, пол- иция могла сделать вывод, что приятель потерпевшего и является ве- роятным убийцей (прямая цепочка рассуждений); для того чтобы прийти к такому заключению, полицейские пользовались информа- цией, полученной от соседей, но для завершения дела были необходи- мы неопровержимые улики. Вероятная возможность арестовать преступника — найти его оружие. Полицейские получили разрешение на обыск квартиры приятеля потерпевшего. Осмотрев всю квартиру, они ничего не обнаружили. Наконец, один из полицейских в соседнем переулке в мусорном баке нашел ружье. Снятие отпечатков пальцев показало, что на ружье есть отпечатки пальцев подозреваемого, а бал- листические эксперименты подтвердили, что человека убили из этого ружья. Преступление таким образом было раскрыто. Получая новые
22 РАЗРАБОТКА СИСТЕМ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА данные и проверяя, согласуются ли они с изначальным заключением, полиция верифицировала цель — идентификацию убийцы. Процесс, в котором заключение используется для поиска подтверждающих его данных, называется обратной цепочкой рассуждений. В рассмотрен- ном примере заключение — это подозреваемый, а данные — это ору- жие. В системе ИИ цель верифицируется аналогично. Был ли верен вывод, что у Эндрю Джонса есть трудности при изучении вычитания ? Цель была достигнута, но чтобы проверить ее правильность, необходи- мо проанализировать задачу снова с данными и правилами. Для про- верки, есть ли у ребенка трудности при изучении вычитания, можно воспользоваться следующим правилом: ЕСЛИ за выполнение простого арифметического примера на вычитание ребенок получил самую низкую оценку (единицу), ТО общий весовой фактор по вычитанию будет у него больше 1. Для того чтобы верифицировать цель, т.е. подтвердить правиль- ность вывода о наличии у ребенка серьезных трудностей с вычитанием, нужно проверить, получил ли он за пример на вычитание самую низ- кую оценку. Это можно сделать с помощью следующей программы: 5 REM Оценка за пример на вычитание 10 INPUT «Введите оценку за пример »;GT 15 REM GS — общий весовой фактор 20 INPUT «Введите общий весовой фактор »; GS 25 G=GS—GT 30 IF GO THEN VER-1 Еще одним примером обратной цепочки рассуждений может быть выбор механизмом вывода новых данных для подтверждения заключе- ния, которое изначально предполагается верным. Как следует из само- го названия, обратная цепочка рассуждений идет в сторону, противоположную прямой цепочке, т.е. от заключения к данным. Об- ратная цепочка возникает после того, как цель уже достигнута. Рис. 2.3 иллюстрирует прямую и обратную цепочки рассуждений в рассмотрен- ной модели системы ИИ. Если установлено, что Эндрю Джонс не умеет вычитать, механизм вывода проверит, получил ли он также самый низкий балл за пример на вычитание. Если это так, то цель достигнута верно. Если же оценка Эндрю Джонса за пример на вычитание не очень низкая, значит, для достижения цели не хватает данных и необходимо сделать дополни- тельные шаги для ее повторной проверки, т.е. надо устранить противо- речие: с одной стороны, Эндрю Джонс не знает некоторых правил вычитания, а с другой стороны, он имеет удовлетворительную оценку за пример на вычитание.
ЧЕЛОВЕЧЕСКИЙ И МАШИННЫЙ ИНТЕЛЛЕКТ 23 Упрощение В мозгу человека, механизм упрощения руководит поиском допол- нительных правил для верификации цели до тех пор, пока не будут проверены все возможные способы ее достижения. Мозг хранит огром- ные объемы информации, поэтому для верификации одной цели может существовать много правил, каждое из которых в любой момент может включиться в работу. Механизм упрощения программы позволяет компьютеру пропу- стить или обработать какую-то часть данных из базы знаний в зависи- мости от ее важности для достижения определенной цели. Если Эндрю Джонс получил очень хороший балл за простой пример на вычитание, то механизм упрощения пропустит информацию из базы знаний, нуж- ную для оценки арифметических навыков. Но если Эндрю Джонс не справился с примером, то механизм упрощения заставит программу обратиться к этой информации. Такой подход позволяет не рассматри- вать пути, не ведущие к достижению цели. Напомним, что механизм упрощения можно представить с по- мощью набора правил, используемых при работе (см. гл. 1). Для при- мера с вычитанием можно воспользоваться, скажем, следующим правилом: ЕСЛИ отметка за пример на вычитание превышает результирующий фактор на 2, ТО оценивать трудности при вычитании не нужно На языке Бейсик это правило можно запрограммировать следую- щим образом: ___„ Прямая цепочка* -------- Обратная цепочка «-------------------- Рис. 2.3. Конфигурация и работа системы ИИ
24 ОБЩИЕ СВЕДЕНИЯ ОБ ЭКСПЕРТНЫХ СИСТЕМАХ 1101МРиТ’Отметка за пример на вычитание";88 115 ЖРиТ’Резулыирующий весовой фактор”;СЬ 120 REM если отметка за пример превышает общий 121 REM весовой фактор на 2 или больше, 122 REM не оценивать трудности при вычитании 125 G-SS—(GL+2) 130 IF G-0 THEN GOTO 140 135 GOSUB 1500 140 REM трудности с другими действиями арифметики 145... 1500 REM оценить трудности при вычитании И в мозгу человека, и в системах искусственного интеллекта ме- ханизм упрощения просто игнорирует ненужные и не относящиеся к делу рассуждения. Правило упрощения для примера с поездкой на работу можно сформулировать так: ЕСЛИ идет сильный дождь, ТО следует проигнорировать любую дополнительную информацию о местном автобусе или экспрессе и воспользоваться первым же под- ходящим автобусом. О том, как обеспечить программу ИИ необходимой информацией, мы поговорим в следующей главе. ГЛАВА 3 ОБЩИЕ СВЕДЕНИЯ ОБ ЭКСПЕРТНЫХ СИСТЕМАХ В предыдущей главе рассматривалось решение задач в системе искусственного интеллекта. Для достижения целей система использо- вала правила, факты, механизмы вывода и упрощения. Конкретные сферы человеческой деятельности, в которых могут применяться сис- темы ИИ, называются предметными областями. Примерами пред- метных областей могут служить оценка эффективности обучения и выбор маршрута автобуса. На первый взгляд кажется, что создание единой системы ИИ, охватывающей все предметные области, возмож- но. Это — глубокое заблуждение. Прежде всего следует учитывать, что для решения всех возможных задач во всех предметных областях необ- ходимо бесконечное число фактов и правил. Даже если бы такая систе- ма была создана, понадобилось бы длительное время на наполнение ее знаниями. Более того, сегодня еще нет вычислительной машины, спо- собной хранить и обрабатывать такой объем информации, поэтому пока нужно ограничиться только проблемными областями, в которых
ЧЕЛОВЕЧЕСКИЙ И МАШИННЫЙ ИНТЕЛЛЕКТ 25 объем информации не слишком велик, и ее можно обработать в про- грамме. Хотя в настоящее время возможности технологии ИИ и огра- ничены, все же, как видно из примеров предыдущей главы, уже сегодня практическое применение систем ИИ реально, и для узких проблем- ных областей можно разрабатывать работоспособные системы ИИ. Примеры таких проблемных областей приведены на рис. 3.1. Исходя из практических соображений для работы надо выбирать проблемные области, в которых объем информации поддается управ— лению. Система ИИ, созданная для решения задач в конкретной про- блемной области, называется экспертной системой. Источником зна- ний для наполнения экспертных систем служат эксперты в соответствующей предметной области. Весовые факторы, о которых говорилось в гл.2, тоже выбираются не случайно, они представляют собой знания, полученные в результате исследования проблемной об- ласти. Работа всех экспертных систем основана строго на экспертной информации, полученной в конкретной проблемной области. 1. 2. 3. ЕСЛИ ТО... Поиск неисправности в электрической схеме 1. 2. Кулинар- ная книга 1. 2. Обучение Обучение китайской кухне плаванью Рис. 3.1. Примеры предметных областей Эвристические правила Допустим, что собрана группа экспертов для решения следующей задачи: в реке обнаружены пятна нефти, сбросить которую могло любое из предприятий, расположенных у реки. Цель состоит в том, чтобы точно узнать, какое предприятие сбрасывает нефть, и устранить по- следствия загрязнения реки. Прежде всего экспертная система, реша- ющая такую задачу, должна уметь выполнять расчеты. Приблизительно определить место сброса нефти можно, например,
26 ОБЩИЕ СВЕДЁНИЯ ОБ ЭКСПЕРТНЫХ СИСТЕМАХ используя время растворения нефти в воде, направление и скорость течения реки и т.д. После того как эта информация собрана и опреде- лено место сброса нефти (скажем, с точностью до мили), можно вос- пользоваться специальными правилами, например правилами Э1 и Э2, описанными ниже, для точного определения виновника. Эти правила называются эвристическими. Их главное отличие от правил, рассмот- ренных в предыдущих главах, состоит в следующем: эвристические правила формулируются не на основании обычных, признанных зна- ний, а на основании практических знаний эксперта. Правило Э1: ЕСЛИ в верховье реки в пределах одной мили от вычисленного места сброса неф- ти находится одно предприятие, ТО это предприятие и сбросило нефть в реку. Правило Э2: ЕСЛИ в верховье реки в пределах одной мили от вычисленного места сброса неф- ти расположено несколько предприятий, ТО предполагается, что нефть сбросило предприятие, использующее наибольшее количество нефти. В гл. 1 и 2 описывалось, как упрощение повышает эффективность мышления, сокращая число рассматриваемых вариантов при достиже- нии цели. В экспертных системах механизм упрощения, использую- щий эвристические правила, называется эвристическим механизмом поиска. На рис. 3.2 приведен пример эвристического механизма по- иска, похожий на механизм упрощения, описанный в гл. 2. Рис. 3.2. Механизм упрощения в экспертной системе
ЧЕЛОВЕЧЕСКИЙ И МАШИННЫЙ ИНТЕЛЛЕКТ 27 После того как эвристический механизм поиска выделил наиболее вероятного виновника загрязнения воды, для проверки выдвинутой гипотезы экспертная система может использовать другой набор пра- вил. Прежде всего будут рассматриваться наиболее уязвимые места в системе нефтепровода предприятия. Здесь может оказаться полезным такое эвристическое правило: ЕСЛИ давление в фабричном нефтепроводе на участке 1 меньше давления воды в реке, ТО следует проверить участок номер 32. Такое правило может сформулировать только человек, практиче- ски знающий именно это предприятие, т.е. оно эвристическое. Рабочая область Задача зачастую бывает слишком сложна для одной экспертной системы. Например, при решении задачи с нефтью одна экспертная система способна найти место сброса, но для определения состава неф- ти нужен уже другой тип экспертизы. Экспертная система, определя- ющая состав нефти, должна взять часть информации из экспертной системы поиска места сброса нефти. Затем, выполнив свои вычисления и используя для решения задачи эвристический механизм поиска, она в конечном счете может порекомендовать оптимальное химическое вещество, нейтрализующее нефть данного сорта в конкретных услови- ях. Обмен информацией между экспертными системами осуществля- ется через рабочую область. Рабочая область — это место в памяти ЭВМ, куда каждая экспертная система помещает свою информацию для использования другой экспертной системой. Рабочая область представляет собой информационную структуру, доступную всем совместно работающим экспертным системам. Дис- циплина использования этой информации каждой экспертной систе- мой зависит от конкретного приложения. Рабочая область подобна школьной доске, на которой секретарь, знающий о болезни учителя, может написать сообщение о слиянии двух классов на один урок. Для совместно работающих экспертных систем идея рабочей области, в которой можно оставить, просмотреть или изменить информацию, очень важна. Разработать экспертную систему может каждый При создании экспертной системы группа, состоящая из эксперта и инженера по знаниям, собирает факты, правила и эвристические правила, относящиеся к проблемной области, а затем включает их в
28 ОБРАБОТКА ЕСТЕСТВЕННОГО ЯЗЫКА программу ИИ. Читатель, возможно, подумал, что его это не касается, он же не инженер по знаниям. Однако тех понятий ИИ, которые были даны в первых двух главах, вполне достаточно для того, чтобы начать разработку своей собственной экспертной системы. Приняв предло- женные концепции программирования, можно надеяться на успех еще до окончания чтения этой книги. Тот, кто знает, как ремонтировать автомобили, готовить еду или плавать, может стать инженером по знаниям, способным разработать экспертную систему в одной из этих или сходных проблемных областях. Во второй части книги мы рассмотрим некоторые методы разработ- ки экспертных систем на персональных компьютерах. В третьей части будет подробно описан ряд известных приложений экспертных систем. Приведенные примеры можно будет использовать как прототипы для создания своих собственных экспертных систем. ГЛАВА 4 ОБРАБОТКА ЕСТЕСТВЕННОГО ЯЗЫКА Общение человека и компьютера — это задача, над которой рабо- тают множество исследователей. Конечная цель (до которой еще очень далеко) заключается в том, чтобы пользователи могли «разговаривать» с компьютером на естественном языке, например русском, и компью- тер отвечал им на том же языке. Можно надеяться, что когда-нибудь в простой беседе люди будут объяснять компьютеру задачу и он сможет ответить им. Может показаться, что это просто, но только потому, что мы с детства привыкли разговаривать и слышать человеческую речь и восп- ринимаем как само собой разумеющееся большинство сложных свойств языка. Те, кому доводилось работать с языком Бейсик или другим языком программирования, знают, насколько важно правильно соста- вить программу, чтобы заставить компьютер сделать то, что нужно. Компьютеры умны ровно настолько, насколько такими их сделали люди: поскольку сами по себе они не умеют «думать», необходимо дать им очень точные инструкции о том, какие действия они должны выпол- нять вплоть до мельчайших шагов. Человек рождается «запрограмми- рованным» на изучение языка; для него половина дела уже сделана. Чтобы компьютер понимал язык, нужно не только разбить язык на его основные э 1ементы и ввести эту информацию в компьютер, но сначала надо разработать компьютеры и программы, которые смогут восприни- мать эту информацию. Для того чтобы общение между человеком и компьютером стало возможным, нужно создать систему обработки ес-
ЧЕЛОВЕЧЕСКИЙ И МАШИННЫЙ ИНТЕЛЛЕКТ 29 тественного языка. Цель настоящей главы — дать некоторое представ- ление об этом важном и увлекательном аспекте искусственного интел- лекта. Давайте посмотрим, насколько трудна эта задача. Представим се- бе, что есть робот, обладающий искусственным интеллектом, который умеет чинить автомобили. Ему можно дать одну из следующих команд: 1. Почини машину около дома со спущенной покрышкой. 2. Почини машину около дома с красной занавеской. Хотя первое предложение интерпретируется двояко, каждый мо- жет уловить его смысл — все знают, что у дома не может быть спущен- ной покрышки. Человек замечает неточность, но еще важнее то, что он ее в уме исправляет; ведь очевидно — спущенная покрышка у машины, а не у дома. Роботу нужно знать нечто большее, чем только значения слов и их связь друг с другом, иначе ему придется искать дом со спу- щенной покрышкой. Так как оба предложения имеют одинаковую структуру, робот должен знать грамматику, а также уметь соотносить описания и объекты. Важно сознавать, что правила человеческого язы- ка имеют смысл только для людей, а роботу, чтобы понимать, о чем мы говорим, необходимы специальные правила. Искусственный интеллект, которым обладает наш робот, должен уметь анализировать предложения в их связи с другими предложения- ми. Возьмем для примера такие два предложения: 1. Джон пьет молоко. 2. Затем он надевает пальто. Слово «он» во втором предложении относится к слову «Джон» в первом предложении. Без первого предложения второе не имело бы смысла. Все естественные языки называются контекстуальными язы- ками. Иначе говоря, чтобы полностью понять второе предложение, необходимо знать первое, а это и есть контекстуальная зависимость. Языки, в которых интерпретация предложения может быть выполнена без знания других предложений, называются контекстуально незави- симыми, т.е. безразличными к последовательности событий и дейст- вий. Для того чтобы заставить компьютер понимать человеческую речь, необходимо построить анализатор естественного языка. Основными функциями анализа языка являются: 1. Лексический анализ (анализ слов). 2. Синтаксический анализ (анализ порядка слов в предложении с учетом правил грамматики). 3. Семантический анализ (анализ значения предложения самого по себе и в его связи с другими предложениями).
30 ОБРАБОТКА ЕСТЕСТВЕННОГО ЯЗЫКА Лексический анализ Деление предложения на слова с использованием знаков препина- ния (при написании) или пауз (в разговоре) называется лексическим анализом. Кроме того, в составе слов можно выделить корни, пристав- ки и окончания. Например, очень простое слово «дорога» можно после- довательно разделить на: дорога (слово) дорог (корень) а (окончание) Слово «предлог» состоит из: пред (приставка) лог (корень) Набор слов можно взять из словаря, но объяснить компьютеру их смысл в общем контексте — более сложная задача. Синтаксический анализ Для того чтобы научить компьютер воспринимать человеческий язык, необходимо прежде всего научить его выполнять разбор предло- жения. Надо перевести правила грамматики и синтаксиса в форму, которую компьютер мог бы понять. Обычно предложение (П) состоит из группы существительного (ГС) и группы глагола (ГГ), что можно представить как: П —> ГС,ГГ Группа существительного может быть разбита на определение (на- пример, прилагательное, притяжательное местоимение и т.д.) и суще- ствительное: ГС —>О,С Группу глагола можно разбить на глагол, за которым следует до- полнение, выраженное существительным (т.е. другая группа сущест- вительного) : ГГ— >Г,ГС Группа существительного может быть представлена единственным членом: ГС—>С Графически синтаксическая структура предложения может быть представлена в виде «дерева». Например, предложение: «Старый дро- восек рубит деревья» имеет структуру, показанную на рис.4.1. Предло- жение разбивается на слова, а слова классифицируются по типу. Слово «старый» — это определение (О), выраженное прилагательным, «дро-
ЧЕЛОВЕЧЕСКИЙ И МАШИННЫЙ ИНТЕЛЛЕКТ 31 восек» — существительное (С), «рубит» — глагол (Г) и «деревья» — существительное (С). Семантический анализ Разбив предложение на составные части, компьютер проводит его семантический анализ, т.е. пытается понять его смысл. В системах искусственного интеллекта применяется некоторая совокупность пра- вил, позволяющая компьютеру понять смысл предложения: ОС ГС Старый дровосек рубит деревья Для интерпретации предложения в базе знаний семантического анализатора должен быть следующий набор правил. Правило 1: ЕСЛИ определение стоит на первом месте и за ним идет существительное, ТО существительное является подлежащим. Правило 2: ЕСЛИ за подлежащим идет глагол, ТО этот глагол является сказуемым и поясняет, что делает подлежащее. Правило 3: ЕСЛИ за подлежащим идет сказуемое, а за ним следует существительное, ТО это существительное является дополнением. Правило 4: ЕСЛИ предложение имеет следующий порядок слов: подлежащее, глагол, допол- нение, ТО вся фраза говорит о том, что подлежащее делает (действие, выражен- ное сказуемым) по отношению к дополнению. Определение Существительное Глагол Существительное Старый Дровосек Рубит Деревья Рис.4.1. Синтаксическое дерево предложения
32 ОБРАБОТКА ЕСТЕСТВЕННОГО ЯЗЫКА Рис.4.2. Процессор естественного языка Определение I apDin; Подлежащее (дровосек) 2^. Искусственный интеллект Дополнение (деревья) Глагол (рубит) —> Поясним сказанное на примере. Предположим, что система искус- ственного интеллекта должна решить следующую задачу: узнать, что делает дровосек и что является объектом его действия. Семантический анализатор обращается к правилу 1, с помощью которого определяет, что слово «дровосек» — это подлежащее. С помощью правила 2 опре- деляется, что слово «рубит» — это сказуемое. Объект действия, выра- женный словом «дерево», устанавливается с помощью правил 3 и 4. Данный пример показывает, как процессор естественного языка обра- батывает или «понимает» предложение, используя лексические, син- таксические и семантические правила своей базы знаний. Процессор естественного языка может служить промежуточным звеном между пользователем и другой системой искусственного интел- лекта, позволяя человеку устно общаться с компьютером (см. рис.4.2). По существу, обработка естественного языка может освободить поль- зователя компьютера от необходимости изучать сложные языки про- граммирования. Если удастся создать программы, которые позволят компьютеру и пользователю общаться на естественном языке, то будет сделан крупнейший шаг на пути создания подлинно «интеллектуаль- ного» компьютера.
2 МЕХАНИЗМ ВЫВОДА-.СРЕДСТВО МАШИННОГО МЫШЛЕНИЯ •Подробные сведения о проектировании и использовании экс- пертных систем •Средства построения экспертных систем ГЛАВА 5 ПРЯМАЯ ЦЕПОЧКА РАССУЖДЕНИЙ Приступим к разработке реальной экспертной системы, предназ- наченной для решения задач определенного типа. Задачи каждого ти- па решаются наиболее оптимальными для них методами, и, следовательно, экспертная сйстема должна быть ориентирована на строго конкретную предметную область, иначе она будет бесполезна. Ремонтируя автомобиль, не берут двуручную пилу, а гаечным ключом не рубят деревья. Рассмотрим такую ситуацию: во время движения у автомобиля перегревается двигатель. Как отреагирует на это водитель ? Конечно, он занервничает. Многие с этим сталкивались жарким днем в час пик. Сформулируем задачу в более общем виде. Имеет место ситуация (перегрев двигателя), требуется предсказать ее последствие (заглохнет ли мотор ?). Итак, прежде всего зафиксировано возникновение опре- деленного состояния (перегрев двигателя), а затем в работу включа- ются относящиеся к нему правила: Правило 1: ЕСЛИ двигатель перегрелся, ТО мотор заглохнет. Правило 2: ЕСЛИ мотор заглохнет, ТО это приведет к денежным затратам и позднему возвра- щению домой. Каким образом можно прийти к выводу о том, что перегрев двига- теля ведет к денежным затратам и позднему возвращению домой ? Это можно сделать, используя прямую цепочку рассуждений. Отправной точкой рассуждений служит возникшая ситуация (перегрев двигате- ля) . Затем срабатывает условная часть (часть ЕСЛИ) первого правила. Поскольку возникшая ситуация удовлетворяет содержащемуся в ней условию, согласно констатирующей части этого правила (части ТО) 2 Заказ № 476 1
34 ПРЯМАЯ ЦЕПОЧКА РАССУЖДЕНИЙ выводится новая ситуация (мотор заглохнет). Цепочка рассуждений продолжается. Условие, содержащееся в части ЕСЛИ второго правила, удовлетворяется, если уже сработало первое правило (действительно заглох мотор). Следовательно, вывод о денежных затратах и позднем возвращении домой можно сделать при возникновении двух ситуаций: двигатель перегрелся или мотор заглох. Описанная последователь- ность рассуждений называется прямой цепочкой потому, что конста- тирующая часть правила (часть ТО) выполняется только в том случае, если удовлетворяется условная часть правила (часть ЕСЛИ). Отправ- ной точкой рассуждений, таким образом, служит уже возникшая ситу- ация, а затем делаются выводы. Что же должна делать программа, реализующая прямую цепочку рассуждений ? Программа должна отвечать на вопросы пользователя, используя принципы прямой цепочки рассуждений и базу знаний. Другими словами, для приведенного примера она должна запросить у пользователя данные о возникшей ситуации (например, о перегреве двигателя) и имя базы знаний, скажем «Технические проблемы авто- мобилизма», просмотреть информацию в базе знаний и затем, проведя прямую цепочку рассуждений, сделать вывод либо о том, что мотор заглохнет, либо о том, что за ремонт нужно будет заплатить и придется поздно приехать домой. Самый простой способ пояснить процесс разработки программного средства — это описать на бумаге все шаги решения задачи без компь- ютера. Составление подобного описания называется разработкой алго- ритма. Алгоритм — это детальный перечень всех логических шагов решения задачи. Решая задачу, компьютер выполняет те же действия, что и чело- век, только быстрее, и, следовательно, следующим этапом при разра- ботке системы ИИ должно быть составление программы по этому алгоритму. В настоящей главе подробно обсуждаются оба этапа разра- ботки программ. Простая экспертная система, реализация которой приведена ниже, написана на стандартном Бейсике, поэтому ее можно запустить прак- тически на любом персональном компьютере. Читателю надо только построить базу знаний для своей областей он сможет воспользоваться предложенным вариантом экспертной системы. Кроме того, это систе- ма открытого типа, и ее можно модифицировать для решения более сложных задач. Здесь же подробно обсуждается проектирование экспертной систе- мы для конкретной, задачи. Точно следуя данным рекомендациям и применяя их к известной проблемной области, читатель сможет стро- ить базы знаний.
МЕХАНИЗМ ВЫВОДА'.СРЕДСТВО МАШИННОГО МЫШЛЕНИЯ 35 Пример прямой цепочки рассуждений Для экспертной системы фондовой биржи можно было бы восполь- зоваться, например, такими правилами: 10 ЕСЛИ ПРОЦЕНТНЫЕ СТАВКИ - ПАДАЮТ, ТО УРОВЕНЬ ЦЕН НА БИРЖЕ - РАСТЕТ 20 ЕСЛИ ПРОЦЕНТНЫЕ СТАВКИ - РАСТУТ, ТО УРОВЕНЬ ЦЕН НА БИРЖЕ - ПАДАЕТ 30 ЕСЛИ ВАЛЮТНЫЙ КУРС ДОЛЛАРА -ПАДАЕТ, ТО ПРОЦЕНТНЫЕ СТАВКИ - РАСТУТ 40 ЕСЛИ ВАЛЮТНЫЙ КУРС ДОЛЛАРА - РАСТЕТ, ТО ПРОЦЕНТНЫЕ СТАВКИ - ПАДАЮТ Предположим, создана фирма, дающая на основе этих правил кон- сультации в области биржевых операций. Пусть первый клиент фирмы сообщил, что валютный курс доллара падает по отношению к основным валютам других стран, и попросил совета. Цель, очевидно, заключает- ся в выборе правильного поведения на бирже, но останется ли при этом клиент в выигрыше, зависит от пока еще не определенных условий. Напомним, что в системе, реализующей прямую цепочку рассужде- ний, прогнозы выполняются следующим образом: если возникшая си- туация удовлетворяет условной части правила (части ЕСЛИ), делается логический вывод, определенный в констатирующей части (части ТО). Для приведенного примера необходимо, чтобы в условной части како- го-либо правила содержалось бы условие: ВАЛЮТНЫЙ КУРС ДОЛЛАРА ПАДАЕТ. Такое условие содержится только в правиле 30: 30 ЕСЛИ ВАЛЮТНЫЙ КУРС ДОЛЛАРА - ПАДАЕТ, ТО ПРОЦЕНТНЫЕ СТАВКИ - РАСТУТ В соответствии с этим правилом можно сделать вывод о росте про- центных ставок. О ВАЛЮТНОМ КУРСЕ ДОЛЛАРА упоминается еще, в правиле 40. Но условие, записанное в этом правиле, 40 ЕСЛИ ВАЛЮТНЫЙ КУРС ДОЛЛАРА - РАСТЕТ не соответствует исходному состоянию падения валютного курса дол- лара, и поэтому правило 40 в дальнейших рассуждениях не будет участвовать. Рассуждения еще не закончены, так как правило 30 в свою очередь порождает новую ситуацию: ПРОЦЕНТНЫЕ СТАВКИ - РАСТУТ 2*
36 ПРЯМАЯ ЦЕПОЧКА РАССУЖДЕНИЙ Необходимо проверить, не приведет ли она к другим выводам. Видно, что в правиле 10 10 ЕСЛИ ПРОЦЕНТНЫЕ СТАВКИ - ПАДАЮТ, ТО УРОВЕНЬ ЦЕН НА БИРЖЕ - РАСТЕТ подходящего условия нет, а в правиле 20 20 ЕСЛИ ПРОЦЕНТНЫЕ СТАВКИ - РАСТУТ, ТО УРОВЕНЬ ЦЕН НА БИРЖЕ - ПАДАЕТ есть. Возникает новая ситуация: УРОВЕНЬ ЦЕН НА БИРЖЕ - ПАДАЕТ и рассуждения продолжаются. Еще раз выполняется проверка всех правил, но ни в одном правиле в условной части не упоминается уровень цен на бирже, и на этом рассуждения заканчиваются. Клиенту можно сказать следую- щее:”Когда обменный курс доллара падает, растут процентные ставки и уровень цен на бирже падает’’. В реальной жизни такое заключение потребовало бы более слож- ных правил, однако система, реализующая прямую цепочку рассужде- ний (впрочем, как и другие системы), оперирует только теми данными, которые есть в базе знаний. Рассмотренный пример иллюстрирует работу типичной системы прямых рассуждений: 1. Система содержит описание ряда ситуаций. 2. Для каждой ситуации система ищет в базе знаний правила, в условной части которых содержится соответствующее условие. 3. В соответствии с констатирующей частью (частью ТО) каждое правило может генерировать новые ситуации, которые добавляются к уже существующим. 4. Система обрабатывает каждую вновь сгенерированную ситуа- цию. При наличии хотя бы одной такой ситуации выполняются дейст- вия, начиная с пункта 2. Рассуждения заканчиваются, когда больше нет необработанных ситуаций. База знаний Покажем на примере, как эксперт может вводить правила непос- редственно в базу знаний и использовать их для принятия решений во время биржевых операций. Все необходимые для работы переменные сведем в таблицу (см. рис. 5.1.) Применяя содержащиеся в таблице
МЕХАНИЗМ ВЫВОДА:СРЕДСТВО МАШИННОГО МЫШЛЕНИЯ 37 переменные, относящиеся к фондовой бирже, правила можно записать следующим образом: 10 ЕСЛИ INTEREST - ПАДАЕТ, ТО STOCK-РАСТЕТ 20 ЕСЛИ INTEREST - РАСТЕТ, ТО STOCK-ПАДАЕТ 30 ЕСЛИ DOLLAR - ПАДАЕТ, ТО INTEREST - РАСТЕТ 40 ЕСЛИ DOLLAR - РАСТЕТ, ТО INTEREST - ПАДАЕТ 50 ЕСЛИ FEDINT - ПАДАЕТ И FEDMON - ДОБАВИТЬ, ТО INTEREST - ПАДАЕТ Прежде чем продолжить, отметим, что приведенных выше правил явно недостаточно для исчерпывающего анализа состояния биржи, они просто используются для демонстрации основных принципов работы. Необходимо также помнить, что экспертная система наследует все достоинства и недостатки экспертов, заполняющих базу знаний. Имя переменной Значение INTEREST DOLLAR FEDINT FEDMON STOCK Изменение процентных ставок (рост или падение) Валютный курс доллара Процентные ставки федерального резерва Обращение денег федерального резерва (т.е. добавление или изъятие резервов) Изменение уровня цен на бирже Рис. 5.1. Таблица имен переменных Работа с базой знаний После того как база знаний создана, с ней можно работать. Для работы нужно построить еще несколько полезных для решения постав- ленной задачи таблиц. По сути дела эти таблицы просто одна из форм представления баз знаний. Ниже все используемые структуры данных описаны подробно. На рис. 5.2 показана база знаний со всеми входящи- ми в нее структурами данных. Во-первых, база знаний содержит список переменных условия, т.е. перечень переменных, входящих в условную часть каждого правила. Список этих переменных приводится на рис. 5.3. Числа (от 1 до 18), расположенные слева от имен переменных, — это индексы элементов массива, содержащего эти имена. Для каждого правила резервируется 4 элемента массива. Элементы массива, не используемые правилом, остаются пустыми.
38 ПРЯМАЯ ЦЕПОЧКА РАССУЖДЕНИЙ Правило 10 ЕСЛИ INTEREST-ПАДАЕТ, 1 INTEREST ТО STOCK-РАСТЕТ 2 3 Правило 20 ЕСЛИ INTEREST-РАСТЕТ, 4 ТО STOCK - ПАДАЕТ 5 INTEREST Правило 30 ЕСЛИ DOLLAR - ПАДАЕТ, ТО INTEREST - РАСТЕТ Правило 40 ЕСЛИ DOLLAR - РАСТЕТ, ТО INTEREST - ПАДАЕТ Правило 50 ЕСЛИ FEDINT - ПАДАЕТ И FEDMON - ДОБАВИТЬ, ТО INTEREST - ПАДАЕТ 7 8 9 DOLLAR 10 11 12 13 DOLLAR 14 15 16 17 FEDINT 18 FEDMON INTEREST DOLLAR FEDINT FEDMON Список переменных условия Указатель переменных условия 6 База знаний Список переменных условия Очередь переменных логического вывода Рис.5.2. Структуры данных базы знаний экспертной системы фондовой биржи Правило 10 ЕСЛИ INTEREST-ПАДАЕТ, 1 INTEREST ТО STOCK-РАСТЕТ 2 3 Правило 20 ЕСЛИ INTEREST-РАСТЕТ, 4 ТО STOCK - ПАДАЕТ 5 INTEREST X Правило 30 ЕСЛИ DOLLAR - ПАДАЕТ, ТО INTEREST -РАСТЕТ и 7 8 9 DOLLAR Правило 40 ЕСЛИ DOLLAR - РАСТЕТ, ТО INTEREST - ПАДАЕТ 10 11 12 Правило 50 ЕСЛИ FEDINT - ПАДАЕТ И FEDMON - ДОБАВИТЬ, ТО INTEREST - ПАДАЕТ 13 DOLLAR 14 15 16 17 FEDINT 18 FEDMON База знаний Список переменных условия Рис. 5.3. Список переменных условия
МЕХАНИЗМ ВЫВОДАгСРЕДСТВО МАШИННОГО МЫШЛЕНИЯ 39 Поясним использование списка переменных условия на примере. Предположим, необходимо выяснить влияние на биржу падения курса доллара. Падение курса доллара можно выразить следующим образом: DOLLAR - ПАДАЕТ Переменная DOLLAR содержится в условной части правил 30 и 40. Она помещается в структуру данных, называемую очередью переменных логического вывода (см. рис. 5.4).Поясним назначение очереди пере- менных вывода. В быту очередь может быть, например, в магазине. Принцип работы очереди — «первым пришел — первого обслужили». Покупатели встают в конец очереди, очередь продвигается вперед, их обслуживают, и они покидают очередь. Почему же структура данных для хранения переменных логического вывода называется очередью ? Возьмем, например, переменную DOLLAR и посмотрим, в каком из правил, содержащих эту переменную, есть условие DOLLAR = ПАДА- ЕТ. Такое условие есть в правиле 30: 30 ЕСЛИ DOLLAR - ПАДАЕТ, ТО INTEREST -РАСТЕТ срабатывает часть ТО этого правила, и текущей становится новая пе- ременная условия INTEREST. После того как отработаны все правила, содержащие переменную DOLLAR, надо посмотреть, к чему приведет повышение процентных ставок. Для этого придется работать с новой переменной INTEREST, которая и помещается в очередь переменных логического вывода после переменной DOLLAR (см.рис. 5.5). Правило 10 ЕСЛИ INTEREST - ПАДАЕТ, ТО STOCK-РАСТЕТ Правило 20 ЕСЛИ INTEREST - РАСТЕТ, ТО STOCK-ПАДАЕТ Правило 30 ЕСЛИ DOLLAR - ПАДАЕТ, ТО INTEREST-РАСТЕТ Правило 40 ЕСЛИ DOLLAR - РАСТЕТ, ТО INTEREST - ПАДАЕТ Правило 50 ЕСЛИ FEDINT - ПАДАЕТ И FEDMON - ДОБАВИТЬ, ТО INTEREST - ПАДАЕТ DOLLAR База знаний Очередь переменных логического вывода Рис.5.4. Очередь переменных логического вывода
40 ПРЯМАЯ ЦЕПОЧКА РАССУЖДЕНИЙ Переменная DOLLAR после того, как отработаны все правила, содержащие ее в условной части, удаляется из очереди переменных логического вывода (см. рис. 5.6). Правило 10 ЕСЛИ INTEREST - ПАДАЕТ, ТО STOCK-РАСТЕТ Правило 20 ЕСЛИ INTEREST - РАСТЕТ, ТО STOCK-ПАДАЕТ Правило 30 ЕСЛИ DOLLAR - ПАДАЕТ, ТО INTEREST-РАСТЕТ Правило 40 ЕСЛИ DOLLAR - РАСТЕТ, ТО INTEREST - ПАДАЕТ Правило 50 ЕСЛИ FEDINT - ПАДАЕТ И FEDMON - ДОБАВИТЬ, ТО INTEREST - ПАДАЕТ Очередь переменных логического вывода База знаний Рис. 5.5. Очередь переменных логического вывода Выяснив последствия падения курса доллара, посмотрим, что же произойдет при повышении процентных ставок. Для этого из начала очереди выбирается переменная INTEREST, которая обрабатывается аналогично переменной DOLLAR. Когда очередь переменных логиче- ского вывода опустеет, прямая цепочка рассуждений закончится и задача будет решена. Рассмотрим назначение списка переменных и указателя списка переменных условия. Список переменных содержит значения пере- менных и признак их инициализации. До начала диалога с программой признак инициализации равен NI и всем переменным присвоены пус- тые значения (см.рис. 5.7). В процессе диалога с системой переменным присваиваются значения, а значение признака меняется на I. На рис. 5.8 показан список переменных после того, как переменным DOLLAR и INTEREST присвоены значения. В указателе переменных условия хранится информация о правиле, с которым система работает в данное время. Указатель состоит из номера правила и номера условия в правиле, поскольку условная часть правила в общем случае может содержать несколько условий. Система использует указатель, чтобы отследить текущее положение в цепочке рассуждений.
МЕХАНИЗМ ВЫВОДА'.СРЕДСТВО МАШИННОГО МЫШЛЕНИЯ 41 Правило 10 ЕСЛИ INTEREST - ПАДАЕТ, ТО STOCK-РАСТЕТ Правило 20 ЕСЛИ INTEREST - РАСТЕТ, ТО STOCK-ПАДАЕТ Правило 30 ЕСЛИ DOLLAR - ПАДАЕТ, ТО INTEREST-РАСТЕТ Правило 40 ЕСЛИ DOLLAR - РАСТЕТ, ТО INTEREST - ПАДАЕТ Правило 50 ЕСЛИ FEDINT - ПАДАЕТ И FEDMON - ДОБАВИТЬ, ТО INTEREST - ПАДАЕТ База знаний Очередь переменных логического вывода Рис. 5.6. Очередь переменных логического вывода Правило 10 ЕСЛИ INTEREST - ПАДАЕТ, ТО STOCK-РАСТЕТ Правило 20 ЕСЛИ INTEREST - РАСТЕТ, ТО STOCK-ПАДАЕТ Правило 30 ЕСЛИ DOLLAR - ПАДАЕТ, ТО INTEREST-РАСТЕТ Правило 40 ЕСЛИ DOLLAR - РАСТЕТ, ТО INTEREST - ПАДАЕТ Правило 50 ЕСЛИ FEDINT - ПАДАЕТ И FEDMON - ДОБАВИТЬ, ТО INTEREST - ПАДАЕТ INTEREST DOLLAR FEDINT FEDMON Значение NI NI NI 7ni Список переменных условия База знаний Рис. 5.7. Список переменных Помните, работа с условной частью правила начинается с выбора переменной из очереди переменных логического вывода. Предполо- жим, что в начале очереди стоит переменная DOLLAR, т.е. надо опре- делить последствия изменения курса доллара. Правило 30 —первое, в условной части которого содержится переменная DOLLAR, оно и вклю- чается в работу. Указатель переменных условия устанавливается на правило 30 (см. рис. 5.9). В действительности указатель устанавливается на определенную запись в списке переменных условия. В этой записи имеется текущая
42 ПРЯМАЯ ЦЕПОЧКА РАССУЖДЕНИЙ переменная условия (в данном случае DOLLAR), стоящая в начале очереди переменных логического вывода. Прежде чем перейти к примеру, обобщающему работу со всеми перечисленными структурами данных, посмотрим на них с другой точ- ки зрения. На протяжении всей книги говорится, что искусственный интеллект — это имитация мыслительного процесса человека, решаю- щего определенные задачи. Правило 10 ЕСЛИ INTEREST - ПАДАЕТ, ТО STOCK-РАСТЕТ Правило 20 ЕСЛИ INTEREST - РАСТЕТ, ТО STOCK-ПАДАЕТ Правило 30 ЕСЛИ DOLLAR - ПАДАЕТ, ТО INTEREST-РАСТЕТ Правило 40 ЕСЛИ DOLLAR - РАСТЕТ, ТО INTEREST - ПАДАЕТ Правило 50 ЕСЛИ FEDINT - ПАДАЕТ И FEDMON - ДОБАВИТЬ, ТО INTEREST - ПАДАЕТ INTEREST DOLLAR FEDINT FEDMON Значение I РАСТЕТ I ПАДАЕТ NI NI Список переменных условия База знаний Рис.5.8. Список переменных Правило 10 ЕСЛИ INTEREST - ПАДАЕТ, ТО STOCK-РАСТЕТ Правило 20 ЕСЛИ INTEREST - РАСТЕТ, ТО STOCK-ПАДАЕТ Правило 30 ЕСЛИ DOLLAR - ПАДАЕТ, ТО INTEREST-РАСТЕТ *- Правило 40 ЕСЛИ DOLLAR - РАСТЕТ, ТО INTEREST - ПАДАЕТ Правило 50 ЕСЛИ FEDINT - ПАДАЕТ И FEDMON - ДОБАВИТЬ, ТО INTEREST - ПАДАЕТ 1 INTEREST 2 3 4 5 INTEREST 6 7 8 9 DOLLAR ---- 10 11 12 13 DOLLAR 14 15 16 30 1 Номер Номер правила условия Указатель переменных условия 17 FEDINT 18 FEDMON База знаний Список переменных условия Рис. 5.9. Указатель переменных условия
МЕХАНИЗМ ВЫВОДА.СРЕДСТВО МАШИННОГО МЫШЛЕНИЯ 43 Соотнесем введенные структуры данных с особенностями, прису- щими человеческому мышлению. Человек, решая задачу, которая заключается в прогнозировании последствий некоторых ситуаций, прежде всего определяет все усло- вия, способные повлиять на конечный результат (список переменных). Затем всем переменным, о которых есть информация, присваиваются значения, т.е. задаются исходные условия (например, DOLLAR = ПА- ДАЕТ). Из всех правил, имеющих отношение к задаче, выбираются правила с исходными условиями (список переменных условия). Чело- век формирует в уме из переменных условия очередь переменных вывода и, перебирая соответствующие правила, обдумывает возмож- ные логические выводы (указатель переменных условия). Конечно, человек выполняет все эти действия автоматически, очень быстро и не так прямолинейно. Очень часто он даже не осознает, что обрабатывает информацию и делает необходимые выводы. Напри- мер, когда человек видит, что показатель нагрева двигателя в автомо- биле подходит к максимальной отметке, он немедленно делает вывод о том, что мотор может заглохнуть. Причина быстрой работы человече- ского мозга — одновременная работа его нейронов. Используя описан- ные структуры данных и алгоритм прямой цепочки рассуждений, на компьютере также можно быстро решать сложные задачи, содержащие большое количество переменных. Экспертная система, в которой про- думанные структуры данных сочетаются с эффективным алгоритмом логического вывода, вполне способна делать осмысленные заключе- ния. Пример прямой цепочки рассуждений Для примера воспользуемся базой знаний, разработанной для фон- довой биржи и спросим систему прямых рассуждений: Что будет, если добавить в банковскую систему средства из Федерального резерв- ного банка ? Другими словами, FEDMON - ДОБАВИТЬ Система обратится к базе знаний, содержащей списки, указатели, очереди и расположенной на внешнем носителе (см. рис. 5.10). По- скольку значение переменной FEDMON изначально задано, она поме- щается в очередь переменных логического вывода. Просмотрев список переменных условия, система определяет, что первый раз переменная FEDMON встречается в условной части правила 50. Указатель пере- менных условия устанавливается на первое условие правила 50. В списке переменных условия для правила 50 содержатся имена двух переменных FEDINT и FEDMON. Обратившись к списку переменных, система определяет, что переменной FEDMON присвоено значение
44 ПРЯМАЯ ЦЕПОЧКА РАССУЖДЕНИЙ ДОБАВИТЬ, а значение переменной FEDINT не задано (признак ини- циализации равен NI). Система запросит у пользователя значение переменной FEDINT: Растет или падает уровень процентных ставок Федерального резервного банка ? Предположим, что пользователь ответил: «ПАДАЕТ»; это значе- ние присваивается переменной FEDINT и заносится в список перемен- ных. Номер условия в указателе переменных условия увеличивается и становится равным 2. Теперь все переменные условной части правила 50 проинициализированы и система может приступить к ее анализу. Правило 10 ЕСЛИ INTEREST - ПАДАЕТ, ТО STOCK-РАСТЕТ Правило 20 ЕСЛИ INTEREST - РАСТЕТ, ТО STOCK - ПАДАЕТ Правило 30 ЕСЛИ DOLLAR - ПАДАЕТ, ТО INTEREST - РАСТЕТ Правило 40 ЕСЛИ DOLLAR - РАСТЕТ, ТО INTEREST - ПАДАЕТ Правило 50 ЕСЛИ FEDINT - ПАДАЕТ И FEDMON - ДОБАВИТЬ ТО INTEREST - ПАДАЕТ, 1 INTEREST INTEREST 2 DOLLAR 3 FEDINT 4 FEDMON Значение NI NI NI I ДОБАВИТЬ 5 INTEREST A 7 Список g переменных 9 DOLLAR условия 10 11 50 12 1 13 DOLLAR Номер Номер 14 правила условия 15 *6 Указатель 17 FEDINT переменных условия 18 FEDMON FEDMON База знаний Список переменных условия Очередь переменных логического вывода Рис. 5.10. Система, реализующая прямую цепочку рассуждений Истинны оба условия: и FEDINT=riAflAET и FEDMON=flOBA- ВИТЬ, поэтому, согласно части ТО правила, переменной INTEREST присваивается значение ПАДАЕТ. Переменная INTEREST помещает- ся в Очередь переменных логического вывода, поскольку она может
МЕХАНИЗМ ВЫВОДА.СРЕДСТВО МАШИННОГО МЫШЛЕНИЯ 45 стать новым условием (см. рис.5.11) и соответствующим образом изме- няется список переменных (см. рис. 5.12). Правило 10 ЕСЛИ INTEREST - ПАДАЕТ, 1 INTEREST ТО STOCK-РАСТЕТ 2 3 Правило 20 ЕСЛИ INTEREST - РАСТЕТ, 4 ТО STOCK - ПАДАЕТ 5 INTEREST 6 Правило 30 ЕСЛИ DOLLAR - ПАДАЕТ, 7 ТО INTEREST-РАСТЕТ 8 9 DOLLAR Правило 40 ЕСЛИ DOLLAR - РАСТЕТ, 10 ТО INTEREST - ПАДАЕТ 11 12 Правило 50 ЕСЛИ FEDINT - ПАДАЕТ 13 DOLLAR И FEDMON — ДОБАВИТЬ, 14 FEDMON ТО INTEREST - ПАДАЕТ 15 INTEREST 10 17 FEDINT 18 FEDMON База знаний Список переменных условия Очередь переменных логического вывода Рис.5.11. Очередь переменных логического вывода Правило 10 ЕСЛИ INTEREST - ПАДАЕТ, ТО STOCK-РАСТЕТ Правило 20 ЕСЛИ INTEREST - РАСТЕТ, ТО STOCK-ПАДАЕТ Правило 30 ЕСЛИ DOLLAR - ПАДАЕТ, ТО INTEREST-РАСТЕТ Правило 40 ЕСЛИ DOLLAR - РАСТЕТ, ТО INTEREST - ПАДАЕТ Правило 50 ЕСЛИ FEDINT - ПАДАЕТ И FEDMON - ДОБАВИТЬ, ТО INTEREST = ПАДАЕТ INTEREST DOLLAR FEDINT FEDMON Значение I ПАДАЕТ NI I ПАДАЕТ 1 Добавить Список переменных условия База знаний Рис.5.12. Список переменных Затем система проверяет, нет ли в остальных правилах переменной FEDMON. Если переменная FEDMON не встречается ни в одном из
46 ПРЯМАЯ ЦЕПОЧКА РАССУЖДЕНИЙ оставшихся правил, она удаляется из очереди переменных логического вывода. Первой в очереди становится переменная INTEREST. Заново анализируя список переменных условия, система находит переменную INTEREST в условной части правила 10. Состояние структур данных в этот момент показаны на рис. 5.13. Переменная INTEREST входит в условную часть правил 10 и 20: 10 ЕСЛИ INTEREST - ПАДАЕТ, ТО STOCK-РАСТЕТ 20 ЕСЛИ INTEREST - РАСТЕТ ТО STOCK - ПАДАЕТ г- Правило 10 ЕСЛИ INTEREST - ПАДАЕТ ТО STOCK-РАСТЕТ Правило 20 ЕСЛИ INTEREST - РАСТЕТ, ТО STOCK - ПАДАЕТ Правило 30 ЕСЛИ DOLLAR - ТО INTEREST - РАСТЕТ О , 1 INTEREST 2 3 4 5 INTEREST 6 7 8 9 DOLLAR INTEREST DOLLAR FEDINT FEDMON Значение I ПАДАЕТ NI I ПАДАЕТ I ДОБАВИТЬ Список переменных условия Поавило 40 ЕСЛИ DOLLAR - РАСТЕТ. 10 1 1 ТО INTEREST - ПАДАЕТ 11 12 10 1 Правило 50 ЕСЛИ FEDINT - ПАДАЕТ И FEDMON - ДОБАВИТЬ ТО INTEREST - ПАДАЕТ, 13 DOLLAR Номер Номер 14 правила условия 15 Указатель 17 FEDINT переменных условия 18 FEDMON FEDMON База знаний Список переменных условия Очередь переменных логического вывода Рис. 5.13. Состояние структур данных системы но логически выведенному значению переменной INTEREST = ПАДА- ЕТ удовлетворяет только условие правила 10. Система обращается к части ТО этого правила и присваивает переменной STOCK значение
МЕХАНИЗМ ВЫВОДА:СРЕДСТВО МАШИННОГО МЫШЛЕНИЯ 47 значение РАСТЕТ, а имя переменной заносится в очередь переменных логического вывода (см. рис. 5.14). Правило 20 отвергнуто, потому что оно содержит условие INTEREST « РАСТЕТ, а переменная INTEREST уже имеет значение ПАДАЕТ. Переменная INTEREST не встречается больше ни в одном из оставшихся правил и поэтому удаля- Правило 10 ЕСЛИ INTEREST - ПАДАЕТ, ТО STOCK-РАСТЕТ Правило 20 ЕСЛИ INTEREST - РАСТЕТ, ТО STOCK-ПАДАЕТ Правило 30 ЕСЛИ DOLLAR - ПАДАЕТ, ТО INTEREST-РАСТЕТ Правило 40 ЕСЛИ DOLLAR - РАСТЕТ, ТО INTEREST - ПАДАЕТ Правило 50 ЕСЛИ FEDINT - ПАДАЕТ И FEDMON - ДОБАВИТЬ, ТО INTEREST - ПАДАЕТ INTEREST STOCK База знаний Очередь переменных логического вывода Рис. 5.14. Очередь переменных логического вывода Правило 10 ЕСЛИ INTEREST - ПАДАЕТ, ТО STOCK - РАСТЕТ Правило 20 ЕСЛИ INTEREST - РАСТЕТ, ТО STOCK-ПАДАЕТ Правило 30 ЕСЛИ DOLLAR - ПАДАЕТ, ТО INTEREST-РАСТЕТ Правило 40 ЕСЛИ DOLLAR - РАСТЕТ, ТО INTEREST - ПАДАЕТ Правило 50 ЕСЛИ FEDINT - ПАДАЕТ И FEDMON - ДОБАВИТЬ, ТО INTEREST - ПАДАЕТ STOCK База знаний Очередь переменных логического вывода Рис. 5.15. Очередь переменных логического вывода ется из очереди переменных логического вывода. Переменная STOCK оказывается в начале очереди (см. рис. 5.15). Процесс рассуждений на этом заканчивается, поскольку переменная STOCK не входит в услов-
48 ПРЯМАЯ ЦЕПОЧКА РАССУЖДЕНИЙ ную часть какого-либо правила. Ответ на поставленный вопрос будет выглядеть следующим образом: 1. Процентные ставки падают. 2. Уровень цен на бирже растет. Обобщенный алгоритм работы системы Обобщенный алгоритм работы системы, реализующей прямую це- почку рассуждений, можно свести к следующему: 1. Определить исходное состояние. 2. Занести переменную условия в очередь переменных логического вывода, а ее значение — в список переменных. 3. Просмотреть список переменных и найти ту переменную, имя которой стоит в начале очереди переменных логического вывода. Если переменная найдена, записать в указатель переменных условия номер правила и число 1. Если переменная не найдена, перейти к шагу 6. 4. Присвоить значения непроинициализированным переменным условной части найденного правила (если такие есть). Имена перемен- ных содержатся в списке переменных условия. Проверить все условия правила и в случае их истинности обратиться к части ТО правила. 5. Присвоить значение переменной, входящей в часть ТО правила, и поместить ее в конец очереди переменных логического вывода. 6. Удалить переменную, стоящую в начале очереди переменных логического вывода, если она больше не встречается в условной части какого-либо правила. 7. Закончить процесс рассуждений, как только опустеет очередь переменных логического вывода. Если же в очереди еще есть перемен- ные, вернуться к шагу 3. Этим алгоритмом можно воспользоваться для программирования на Бейсике простой системы, реализующей прямую цепочку рассуж- дений. Пример программы Программа (листинг 5.1), приведенная в качестве примера, может работать с любой базой знаний. Нужные правила можно вставить меж- ду предложениями 1500 и 1610, а саму программу запустить на выпол- нение командой RUN. Пояснение к программе Программа работает с уже известными правилами фондовой бир- жы. Так правило:
МЕХАНИЗМ ВЫВОДА'.СРЕДСТВО МАШИННОГО МЫШЛЕНИЯ 49 ЕСЛИ процентные ставки падают, ТО уровень цен на бирже растет запрограммировано предложениями программы 1500 — 1510. А правило ЕСЛИ валютный курс доллара падает ТО процентные ставки растут — предложениями 1540 — 1550. Список переменных формируется в предложении 367. Они пред- ставляют собой переменные условия, с которых начинается рассужде- ние. Список переменных условия формируется в предложениях 407 и 408. В программе используется ряд сокращений, например, ST = ПА- ДАЕТ означает, что уровень цен на бирже падает, IN = РАСТЕТ означает, что процентные ставки растут. Листинг программы Листинг 5Л _____________________________________ 1 REM ****** ПРЯМАЯ ЦЕПОЧКА РАССУЖДЕНИЙ ****************** 2 REM *************************************************** 10 REM УСЛОВНЫЕ ЧАСТИ ДОПОЛНИТЕЛЬНЫХ ПРАВИЛ 11 REM ВСТАВИТЬ ПОСЛЕ ПРЕДЛОЖЕНИЯ 1500 20 REM НАПРИМЕР: 1500 IF (А 1—2) AND (А6-6) OR (A3$-""YES”) THEN S-l 22 REM 1502 RETURN 30 REM 1520 IF (J$-"HET”) THEN S-l 32 REM 1522 RETURN 40 REM ЧАСТЬ TO ЭТИХ ПРАВИЛ ВСЕГДА СОДЕРЖИТ: THEN S-l 50 REM НАЧИНАЯ С ПРЕДЛОЖЕНИЯ 1510 МОЖНО ВСТАВИТЬ ЧАСТИ ТО 52 REM ПРАВИЛ ПОЛЬЗОВАТЕЛЯ 200 REM !**»* БЛОК ИНИЦИАЛИЗАЦИИ ************************** 210 REM V$—СПИСОК ПЕРЕМЕННЫХ, IN—ПРИЗНАКИ ИНИЦИАЛИЗАЦИИ 230 REM СV$—ПЕРЕМЕННЫЕ УСЛОВИЯ И ЛОГИЧЕСКОГО ВЫВОДА 240 DIM Q$(10), V$(10),CV$(40),IN( 10) 255 FP-1: BP-1: REM FP и BP-УКАЗАТЕЛИ НАЧАЛА И КОНЦА ОЧЕРЕДИ 260 FOR 1-1 ТО 10 270 Q$(I)-"": V$(I>-IN (I)-"”: SS(I)-O: CS(I)-0 280 NEXT I 340 REM ВВОД ПЕРЕМЕННЫХ, ВХОДЯЩИХ В УСЛОВНЫЕ ЧАСТИ ПРАВИЛ В 350 REM НУЖНОМ ПОРЯДКЕ (НЕ БОЛЬШЕ 3 ПЕРЕМЕННЫХ НА ПРАВИЛО) 360 REM ИМЕНА ПЕРЕМЕННЫХ НЕ ДОЛЖНЫ ПОВТОРЯТЬСЯ 365 REM КОГДА ВВЕДЕНЫ ВСЕ ИМЕНА, НАДО НАЖАТЬ КЛАВИШУ ВК 367 V$(1)-"DO": V$(2)-”FT": V$(3)-"FM": V$(4)-”IN”: V$(5)-"ST” 368 PRINT"*** СПИСОК ПЕРЕМЕННЫХ ***"" 370 FOR 1-1 TO 10 380 PRINT-ВВЕДИТЕ ПЕРЕМЕННУЮ"";!; 385 PRINT V$(I) 395 NEXT I 396 INPUT"ДЛЯ ПРОДОЛЖЕНИЯ НАЖМИТЕ" ;I 400 REM ПЕРЕМЕННЫЕ ВВОДЯТСЯ В ПОРЯДКЕ ИХ ПОЯВЛЕНИЯ В ЧАСТЯХ
50 ПРЯМАЯ ЦЕПОЧКА РАССУЖДЕНИЙ 401 REM ЕСЛИ ПРАВИЛ 405 REM В ОДНОМ ПРАВИЛЕ МОЖНО ЗАДАТЬ НЕ БОЛЬШЕ 3 ПЕРЕМЕННЫХ 406 REM КОГДА ВВЕДЕНЫ ВСЕ ПЕРЕМЕННЫЕ, НАЖАТЬ КЛАВИШУ ВК 407 CV$(1)-"IN": CV$(5)-"IN": CV$(9)-"DO": CV$(13)-"DO" 408 CV$(17)-"FT": CV$(18)-”FM" 409 PRINT'*** СПИСОК ПЕРЕМЕННЫХ УСЛОВИЯ ***" 410 FOR I“1 TO 8:PRINT”yC7IOBHE ";I 420 FOR J-l TO 4:PRINT "ПЕРЕМЕННАЯ";! 423 K-4*(I-1)+J 424 PRINT CV$(K) 430 NEXT! 432 IF 1-4 THEN INPUT"ДЛЯ ПРОДОЛЖЕНИЯ НАЖМИТЕ BK";Z 435 NEXT I 450 REM ****** БЛОК ЛОГИЧЕСКОГО ВЫВОДА ***************** 465 REM ЩРиТ'ВВЕДИТЕ ПЕРЕМЕННУЮ ЛОГИЧЕСКОГО ВЫВОДА",C$ 470 REM ЗАМЕНА ПЕРЕМЕННОЙ УСЛОВИЯ (С$) В ОЧЕРЕДИ ПЕРЕМЕННЫХ ВЫВОДА <Q$) 475 Q$(BP)-C$: ВР-ВР+1 476 REM ПЕРЕДВИНУТЬ НАЗАД УКАЗАТЕЛЬ КОННА ОЧЕРЕДИ 480 REM УСТАНОВИТЬ УКАЗА! ЕЛЬ ПЕРЕМЕННЫХ УСЛОВИЯ, СОСТОЯЩИЙ 482 REM ИЗ НОМЕРА ПРЕДЛОЖЕНИЯ (SN) И НОМЕРА УСЛОВИЯ (CN) 485SN-1:CN-1 490 REM ПОИСК НОМЕРА СЛЕДУЮЩЕГО ПРАВИЛА, СОДЕРЖАЩЕГО 491 REM ПЕРЕМЕННУЮ УСЛОВИЯ, КОТОРАЯ 492 REM НАХОДИТСЯ В НАЧАЛЕ ОЧЕРЕДИ [Q$(FP>]. ПОМЕР ПРАВИЛА 494 REM РАСПОЛОЖЕН В СПИСКЕ ПЕРЕМЕННЫХ УСЛОВИЯ (CV$> 495 F-l: REM ПОВТОРИТЬ С НАЧАЛА 496 GOSUB 3000: CN-1: REM УКАЗЫВАЕТ НА ПЕРВОЕ УСЛОВИЕ ПРАВИЛА 500 IF SN-0 THEN GOSUB 700: REM ПРАВИЛ БОЛЬШЕ НЕТ 505I-4*(SN-1)+CN: REM АДРЕС УСЛОВИЯ ПРАВИЛА 510 V$-CV$(I): REM ПЕРЕМЕННАЯ УСЛОВИЯ 560 REM ПРАВИЛО СОДЕРЖИТ ДРУГИЕ УСЛОВИЯ ? 565 IF V$-"" THEN GOTO 580: REM В ПРАЬИЛЕ УСЛОВИЙ БОЛЬШЕ НЕТ 570 GOSUB 2400 571 REM ПРОВЕРИТЬ, ПРИСВОЕНО ЛИ 3IIA4EI1ИЕ ПЕРЕМЕННОЙ 575 CN-CN+1: GOTO 505: REM ПРОВЕРИТЬ СЛЕДУЮЩЕЕ УСЛОВИЕ ПРАВИЛА 580 REM УСЛОВИЙ В ПРАВИЛЕ БОЛЬШЕ НЕТ 585 S-0: ON SN GOSUB 1500,1520,1540,1560,1580,1600 590 REM ВЫПОЛНИТЬ ЧАСТЬ ТО ПРАВИЛА ?, Т Е. S-1 600 IF S-l Т1IEN GOTO 630: REM ПЕРЕХОД К ЧАСТИ ТО ПРАВИЛА 605 REM ВЫБОР СЛЕДУЮЩЕГО ЭЛЕМЕНТА ИЗ 607 REM СПИСКА ПЕРЕМЕННЫХ УСЛОВИЯ 610 F-SN+1; GOTO 496 630 REM ЕСЛИ УСЛОВИЕ ИСТИННО - ВЫПОЛНИТЬ ЧАСТЬ ТО ПРАВИЛА 635 ON SN GOSUB 1510,1530,1550,1570,1590,1610 650 F-SN+1: GOTO 496: REM ПРАВИЛ БОЛЬШЕ НЕТ 700 REM СПИСОК ПЕРЕМЕННЫХ УСЛОВИЯ ПУСТ (CV$) 705 REM ЕСЛИ В НАЧАЛЕ ОЧЕРЕДИ | Q$ (FP) ] ЕСТЬ ПЕРЕМЕННАЯ —ОНА 710 REM УДАЛЯЕТСЯ И НА ЕЕ МЕСТО ПОМЕЩАЕТСЯ СЛЕДУЮЩАЯ 712 REM ПЕРЕМЕННАЯ [Q$(FP+1)J. 720 REM ЕСЛИ В ОЧЕРЕДИ НЕТ ПЕРЕМЕННЫХ, ЗАКОНЧИТЬ ПРОГРАММУ 725 FP-FP+1: REM СЛЕДУЮЩАЯ ПЕРЕМЕННАЯ ИЗ ОЧЕРЕДИ 730 IF FP-BP THEN STOP
МЕХАНИЗМ ВЫВОДА.СРЕДСТВО МАШИННОГО МЫШЛЕНИЯ 51 731 REM REM ОЧЕРЕДЬ ПЕРЕМЕННЫХ ВЫВОДА ПУСТА —КОНЕЦ 735 GOTO 495: REMJIPOBEPKA ТЕКУЩЕЙ ПЕРЕМЕННОЙ УСЛОВИЯ 1490 REM УСЛОВНЫЕ ЧАСТИ ПРАВИЛ НАЧИНАЮТСЯ С 1500 »»»»*»*» 1492 REM ПРИМЕРЫ «ПРАВИЛ БАЗЫ ЗНАНИЙ ФОНДОВОЙ БИРЖИ 1494 REM ДЛЯ ТОГО ЧТОБЫ ПРИМЕР БЫЛ СОВМЕСТИМ СО ВСЕМИ 1496 REM ВЕРСИЯМИ БЕЙСИКА ИСПОЛЬЗУЮТСЯ ИМЕНА ПЕРЕМЕННЫХ, 1497 REM СОСТОЯЩИЕ ИЗ ДВУХ БУКВ. 1498 REM DOLLAR — DO, STOCK — ST, FEDINT — FT, FEDMON — FM 1499 REM *** ПРАВИЛО 1 1500 IF Щ$-"ПАДАЕТ" THEN S-l 1502 RETURN 1505 REM ПЕРЕМЕННАЯ ПОМЕЩАЕТСЯ В ОЧЕРЕДЬ ПЕРЕМЕННЫХ ВЫВОДА 1510 ST$-РАСТЕТ”: PRINT "ST-PACTET”: V$-"ST": GOSUB 3100: RETURN 1519 REM *** ПРАВИЛО 2 1520 IF IN$-"PACTET" THEN S-l 1522 RETURN 1530 8Т$-"ПАДАЕТ": PRINT "ST-ПАДАЕТ": GOSUB 3100: RETURN 1539 REM ** ПРАВИЛО 3 1540 IF ОО$-"ПАДАЕТ" THEN S-l 1542 RETURN 1545 REM ПОМЕСТИТЬ ПЕРЕМЕННУЮ В ОЧЕРЕДЬ ПЕРЕМЕННЫХ ВЫВОДА 1550 IN$-”PACTET”: PRINT "IN-РАСТЕТ": V$-"IN":GOSUB 3100:RETURN 1559 REM ♦* ПРАВИЛО 4 1560 IF DO$-"PACTET" THEN S-l 1562 RETURN 1565 REM ПОМЕСТИТЬ ПЕРЕМЕННУЮ В ОЧЕРЕДЬ ПЕРЕМЕННЫХ ВЫВОДА 1570 Щ$-"ПАДАЕТ": PRINT IN-ПАДАЕТ”: V$-”IN": GOSUB 3100: RETURN 1579 REM ** ПРАВИЛО 5 1580 IF (ЕТ$-"ПАДАЕТ”> AND (ЕМ$- 'ДОБАВИТЬ"> THEN S-l 1582 RETURN 1585 REM ПОМЕСТИТЬ ПЕРЕМЕННУЮ В ОЧЕРЕДЬ ВЫВОДА 1590 Щ$-”ПАДАЕТ”: PRINT "IN-ПАДАЕТ”: V$-"IN": G6SUB 3NX):RETURN 1599 REM ** ПРАВИЛО 6 1600 IF (QU$-’7IA") AND (GR 3.5) THEN S-l 1602 RETURN 1610 РО$-"ДА": PRINT "PO-ДА": RETURN 1611 REM **»**» КОНЕЦ БАЗЫ ЗНАНИЙ »***»»»»»*»»»»»♦♦»»***»****« 1690 REM *** С МЕТКИ 1700 РАСПОЛОЖЕНЫ ПРЕДЛОЖЕНИЯ ВВОДА *** 1699 REM ПРЕДЛОЖЕНИЯ ВВОДА ДЛЯ БАЗЫ ЗНАНИЙ ПРИМЕРА 1700 INPUT "КУРС ДОЛЛАРА ПАДАЕТ ИЛИ PACTET”;DO$: P.ETURN 1705 INPUT "ПРОЦЕНТНЫЕ СТАВКИ РЕЗЕРВА ПАДАЮТ ИЛИ РАСТУТ";ЕГ$: RETURN 1710 INPUT "ДОБАВИТЬ ИЛИ ИЗЪЯТЬ PE3EPB";FM$: RETURN 1715 INPUT "ПРОЦЕНТНЫЕ СТАВКИ ПАДАЮТ ИЛИ РАСТУТ";Щ$ 1720 INPUT "УРОВЕНЬ ЦЕН ПАДАЕТ ИЛИ PACTET ';ST$: RETURN 1750 REM » КОНЕЦ БЛОКА ВВОДА В БАЗУ ЗНАНИЙ ** 1999 REM *** БЛОК ПОДПРОГРАММ *»*»**»*»»*»»*♦**»♦»***»*»***»♦*»»♦»»** 2400 REM ПОДПРОГРАММА ПРИСВАИВАЕТ ЗНАЧЕНИЯ ПЕРЕМЕННОЙ (У$) 2402 REM IN — ПРИЗНАК ИНИЦИАЛИЗАЦИИ ПЕРЕМЕННЫХ 2404 REM IN-0—ПЕРЕМЕННОЙ НЕ ПРИСВОЕНО ЗНАЧЕНИЕ, 2405 REM IN-1 —ПРИСВОЕНО 2405 REM СПИСОК ПЕРЕМЕННЫХ (VL$) СОДЕРЖИТ ПЕРЕМЕННУЮ (У$) 2420 FOR 1-1 ТО 10: REM ВЫБОР ПЕРЕМЕННОЙ ИЗ СПИСКА
52 ПРЯМАЯ ЦЕПОЧКА РАССУЖДЕНИЙ 2430 IF V$-V$(I> THEN GOTO 2445: I$M ПЕРЕМЕННАЯ НАЙДЕНА 2440 NEXTK 2445 IF IN(I)-1 THEN RETURN: REM ПЕРЕМЕННОЙ УЖЕ ПРИСВОЕНО ЗНАЧЕ- НИЕ 2450 IF IN(I)-1 THEN RETURN: REM ПЕРЕМЕННОЙ УЖЕ ПРИСВОЕНО ЗНАЧЕ- НИЕ 2460 REM ВВОД ЗНАЧЕНИЙ ПЕРЕМЕННЫХ НАЧИНАЕТСЯ С МЕТКИ 1700 2464 REM ПОСЛЕ КАЖДОГО ПРЕДЛОЖЕНИЯ INPUT СТОИТ RETURN 2465 IN(I)-1: REM ПРИЗНАК ТОГО. ЧТО ПЕРЕМЕННОЙ ПРИСВОЕНО ЗНАЧЕ- НИЕ 2470 ON I GOSUB 1700,1705,1710,1715,1720 2480 RETURN 3000 REM ПОИСК В СПИСКЕ ПЕРЕМЕННЫХ УСЛОВИЯ (CV$) ИМЕНИ ПЕРЕ- МЕННОЙ, СТОЯЩЕЙ 3005 REM В НАЧАЛЕ ОЧЕРЕДИ (Q$). ЕСЛИ ТАКОЙ ПЕРЕМЕННОЙ НЕТ, ТО ЗОЮ REM ВОЗВРАЩАЕТСЯ НОМЕР ПРЕДЛОЖЕНИЯ (SN), НАПРИМЕР SN-O. 3015 REM ПОИСК НАЧИНАЕТСЯ С ПРЕДЛОЖЕНИЯ С НОМЕРОМ F 3025 FOR SN-F ТО 10 3030 FOR CN-1 ТО 4 3035 K-(SN-1)*4+CN - 3040 IF CV$(K)-Q$(FP) THEN RETURN 3045 NEXT CN \ 3050 NEXT SN. 3055 SN-O: RETURN “ 3100 REM ПОДПРОГРАММА ПРИСВАИВАЕТ ЗНАЧЕНИЕ ПЕРЕМЕННОЙ (V$> И ПОМЕЩАЕТ ЕЕ В ' ’ 3105 REM ОЧЕРЕДЬ Q$(BP),’ ЕСЛИ ЕЕ ТАМ НЕТ. 3110REM ПОИСК ПЕРЕМЕННОЙ В СПИСКЕ ПЕРЕМЕННЫХ [V$( 10) ] 3115 FOR 1-1 ТО 10 3117 IF V$-V$ (I) THEN GOTO 3125 3120 NEXT I 3125 IN(I)-1: REM ПЕРЕМЕННОЙ ПРИСВОЕНО ЗНАЧЕНИЕ 3130 REM ОПРЕДЕЛИТЬ, ЕСТЬ ЛИ ПЕРЕМЕННАЯ V$ В ОЧЕРЕДИ <Q$) 3135 FOR 1-1 ТО 10: IF V$-Q$ (I) THEN RETURN 3140 NEXT I 3155 REM ПЕРЕМЕННОЙ НЕТ В ОЧЕРЕДИ, ПОЭТОМУ ОНА ТУДА ПОМЕЩА- ЕТСЯ 3160 Q$(BP)-V$:BP-BP+1 3170 FOR 1-1 ТО 10 3176 NEXTI 3180 RETURN Примеры выполнения программы Программа на Бейсике выполняется по команде RUN. Ниже при- водится результат выполнения программы. RUN < ***** СПИСОК ПЕРЕМЕННЫХ***** ’ ВВЕДИТЕ ПЕРЕМЕННУЮ 1 DO ВВЕДИТЕ ПЕРЕМЕННУЮ 2 FT ВВЕДИТЕ ПЕРЕМЕННУЮ 3 FM ВВЕДИТЕ ПЕРЕМЕННУЮ 4 IN ВВЕДИТЕ ПЕРЕМЕННУЮ 5 ST ВВЕДИТЕ ПЕРЕМЕННУЮ 6
МЕХАНИЗМ ВЫВОДА:СРЕДСТВО МАШИННОГО МЫШЛЕНИЯ 53 ВВЕДИТЕ ПЕРЕМЕННУЮ 7 ВВЕДИТЕ ПЕРЕМЕННУЮ 8 ВВЕДИТЕ ПЕРЕМЕННУЮ 9 ВВЕДИТЕ ПЕРЕМЕННУЮ 10 ДЛЯ ПРОДОЛЖЕНИЯ НАЖМИТЕ ВК *** СПИСОК ПЕРЕМЕННЫХ УСЛОВИЯ *** ** УСЛОВИЕ 1 ПЕРЕМЕННАЯ 1 IN ПЕРЕМЕННАЯ 2 ПЕРЕМЕННАЯ 3 ПЕРЕМЕННАЯ4 ** УСЛОВИЕ 2 ПЕРЕМЕННАЯ 1 IN ПЕРЕМЕННАЯ 2 ПЕРЕМЕННАЯ 3 ПЕРЕМЕННАЯ 4 ** УСЛОВИЕ 3 ПЕРЕМЕННАЯ 1 DO ПЕРЕМЕННАЯ 2 ПЕРЕМЕННАЯ 3 ПЕРЕМЕННАЯ 4 ** УСЛОВИЕ 4 ПЕРЕМЕННАЯ 1 DO ПЕРЕМЕННАЯ 2 ПЕРЕМЕННАЯ 3 ПЕРЕМЕННАЯ 4 ** УСЛОВИЕ 5 ПЕРЕМЕННАЯ 1 FT ПЕРЕМЕННАЯ 2 FM ПЕРЕМЕННАЯ 3 ПЕРЕМЕННАЯ 4 ** УСЛОВИЕ 6 ПЕРЕМЕННАЯ 1 ПЕРЕМЕННАЯ 2 ПЕРЕМЕННАЯ 3 ПЕРЕМЕННАЯ 4 ** УСЛОВИЕ 7 ПЕРЕМЕННАЯ 1 ПЕРЕМЕННАЯ 2 ПЕРЕМЕННАЯ 3 ПЕРЕМЕННАЯ 4 ** УСЛОВИЕ 8 ПЕРЕМЕННАЯ 1 ПЕРЕМЕННАЯ 2 ПЕРЕМЕННАЯ 3 ПЕРЕМЕННАЯ 4 Рассмотрим пример диалога системы с пользователем ВВЕДИТЕ УСЛОВНУЮ ПЕРЕМЕННУЮ: DO КУРС ДОЛЛАРА РАСТЕТ ИЛИ ПАДАЕТ ? РАСТЕТ IN-ПАДАЕТ ST-PACTET Break in 730 Ok
54 ПРЯМАЯ ЦЕПОЧКА РАССУЖДЕНИЙ ВВЕДИТЕ ПЕРЕМЕННУЮ УСЛОВИЯ: DO КУРС ДОЛЛАРА РАСТЕТ ИЛИ ПАДАЕТ ? ПАДАЕТ IN-PACTET ST-ПАДАЕТ Break in 730 Ok ВВЕДИТЕ ПЕРЕМЕННУЮ УСЛОВИЯ: IN ПРОЦЕНТНАЯ СТАВКА РАСТЕТ ИЛИ ПАДАЕТ ? ПАДАЕТ ST-PACTET Break in 730 Ok ВВЕДИТЕ ПЕРЕМЕННУЮ УСЛОВИЯ: FM ПРОЦЕНТНЫЕ СТАВКИ РЕЗЕРВА РАСТУТ ИЛИ ПАДАЮТ ? РАСТУТ ДОБАВИТЬ ИЛИ ИЗЪЯТЬ РЕЗЕРВ ? ДОБАВИТЬ Break in 730 Ok Для последних приведенных условий нет выводов, поскольку им не удовлетворяет ни одно правило, т.е. ЕСЛИ FT-ПАДАЕТ, FM-ДОБАВИТЬ, ТО IN - ПАДАЕТ ВВЕДИТЕ ПЕРЕМЕННУЮ УСЛОВИЯ: FM ПРОЦЕНТНЫЕ СТАВКИ РЕЗЕРВА РАСТУТ ИЛИ ПАДАЮТ ? ПАДАЮТ IN-ПАДАЕТ ST-PACTET Break in 730 Ok Вспомогательные таблицы Для формирования новой базы знаний или модификации сущест- вующей полезно использовать приведенную ниже таблицу. Таблица упрощает проверку корректности отношений базы знаний и структур данных экспертной системы. В принципе можно создать специальный компилятор для обработки таких таблиц и автоматически преобразо- вывать базу знаний в нужные структуры данных. Но эта задача требует полного понимания механизма работы экспертной системы. С по- мощью таблицы проще создавать и преобразовывать переменные (пе- ременная 11, переменная 12 и т.д.) и значения (значение 11, значение 12 и т.д.) новой базы знаний в предложения программы. В одном пра- виле можно использовать до трех переменных. Для того чтобы сформи- ровать первую таблицу, необходимо записать правила в форме
МЕХАНИЗМ ВЫВОДА’.СРЕДСТВО МАШИННОГО МЫШЛЕНИЯ 55 ЕСЛИ-TO. Затем можно преобразовывать их в другие таблицы и пол- учать фрагменты программы. IF AND AND Переменная 11 — Значение 11 Переменная 12 Значение 12 Переменная 13 Значение 13 THEN Переменная 14 Значение 14 IF AND Переменная 21 Значение 21 AND Переменная 22 Значение 22 THEN Переменная 23 Значение 23 Переменная 24 Значение 24 IF AND Переменная 31 Значение 31 AND Переменная 32 Значение 32 THEN Переменная 33 Значение 33 Переменная 34 Значение 34
56 ПРЯМАЯ ЦЕПОЧКА РАССУЖДЕНИЙ IF AND Переменная 41 Значение 41 AND Переменная 42 Значение 42 Переменная 43 Значение 43 THEN _ Переменная 44 Значение 44 IF „ AND Переменная 51 Значение 51 я. AND Переменная 52 Значение 52 Переменная 53 Значение 53 THEN Переменная 54 Значение 54 Ниже приводится рабочая таблица списка переменных условия (предложения 407 и 408 программы). CV$(1) Переменная 11 CVS (2) Переменная 12 CV$(3) Переменная 13 CV$ (5) Переменная 21 CV$ (6) Переменная 22 CVS (7) Переменная 23
МЕХАНИЗМ ВЫВОДА:СРЕДСТВО МАШИННОГО МЫШЛЕНИЯ 57 CV$(9) Переменная 31 CV$(10) Переменная 32 CV$(11) Переменная 33 CV$(13) Переменная 41 CVS (14) Переменная 42 CVS (15) Переменная 43 CV$(17) Переменная 51 CV$(18) Переменная 52 CVS (19) Переменная 53 Теперь рассмотрим рабочую таблицу списка переменных (предло- жение 367 программы). Имена переменных должны быть уникальны. V$(l) - ------------------------;------ Переменная * V$<2> - ------------------------------- Переменная ____________ V$(3) - _______________________________ Переменная_____________ V$(4) - ------------------------------- Переменная ____________ У$(5) - _______________________________ Переменная ____________ Рабочая таблица правил, записанных на Бейсике (предложения 1490 — 1611 программы). Сначала приводятся заготовки для условных частей правил, а потом для констатирующих.
58 ПРЯМАЯ ЦЕПОЧКА РАССУЖДЕНИЙ Условные части (ЕСЛИ) правил: 1500 IF и AND Переменная 11 > " $ - “ Значение 11 и AND Переменная 12 С - “ Значение 12 и THEN S » 1 Переменная 13 - ф Значение 13 1520 IF _ и AND Переменная 21 $ “ Значение 21 и AND Переменная 22 с - Значение 22 и THEN S « 1 1540 Переменная 23 ф € — “ — Значение 23 и AND IF Переменная 31 — ф Значение 31 и AND Переменная 32 Значение 32 и THEN S - 1 Переменная 33 — ф - Значение 33 1560 IF и AND Переменная 41 _ $ _ Значение 41 и AND Переменная 42 _ $ _ Значение 42 и THEN S - 1 1580 IF Переменная 43 Значение 43 и AND Переменная 51 — $ Значение 51 и AND Переменная 52 — $ Значение 52 и THEN S - 1 Переменная 53 Значение 53 Констатирующие части (ТО) правил: 1580 -------------------- $ ---------------- Переменная 14 Значение 14 :PRINT" --------------------- - ------------- Переменная 14 Значение 14 1530 -------------------- $ ---------------- Переменная 14 Значение 14 :PRINT"-------------------------------------- Переменная 24 Значение 24 ":RETURN ":RETURN
МЕХАНИЗМ ВЫВОДА:СРЕДСТВО МАШИННОГО МЫШЛЕНИЯ 59 1550 ------------------- $ “ Переменная 34 Значение 34 :PRINT" - --------------------------------------- ":RETURN Переменная 34 Значение 34 1570 -------------------$ - “--------------------“ Переменная 44 Значение 44 :PRINT” ------------------- - -----.--------------”:RETURN Переменная 44 Значение 44 1590 ------------------- $ - ---------------------- “ Переменная 54 Значение 54 :PRINT" - "-.RETURN Переменная 54 Значение 54 ГЛАВА 6 ОБРАТНАЯ ЦЕПОЧКА РАССУЖДЕНИЙ Предположим, что автомобиль не удалось стронуть с места. В чем же дело — сел аккумулятор или неисправен стартер ? Рассмотрим задачу в более общем виде: по известному результату (автомобиль не тронулся с места) нужно определить условия, которые к нему приве- ли, т.е. по симптомам найти причины. Она отличается от задачи в предыдущей главе (прямая цепочка рассуждений) тем, что там уже были известны условия (перегрев двигателя), но последствия, к кото- рым они приведут, известны не были. Задача заключалась в предска- зании возможного результата. Здесь же результат известен, и нужно найти вызвавшие его причины. Для решения задачи опять понадобятся правила. Приведем не- сколько подходящих для выбранного примера правил. Правило 1: ЕСЛИ автомобиль не заводится И сел аккумулятор, ТО не подается ток в стартер Правило 2: ЕСЛИ в стартер не подается ток, ТО автомобиль не тронется с места Каким же образом можно найти условия, при которых автомобиль не тронется с места ? С помощью обратной цепочки рассуждений. Известный результат (автомобиль не трогается с места) повлечет за собой цепочку рассуждений, которая приведет нас к вызвавшим его
60 ОБРАТНАЯ ЦЕПОЧКА РАССУЖДЕНИЙ причинам. Причины возникают раньше следствий, поэтому в процессе обратной цепочки рассуждений просматриваются логические выводы, устанавливаются условия, которые к ним привели, и определяется, связаны ли эти условия с предыдущими логическими выводами. На- пример, в приведенной задаче сначала надо обратиться ко второму правилу, поскольку содержащийся в нем логический вывод: «ТО авто- мобиль не тронется с места» соответствует реально возникшей ситуа- ции. Обратная цепочка рассуждений всегда начинается со следствия (часть ТО правила). Причина, по которой автомобиль не трогается с места, содержится в условной части правила 2; «ЕСЛИ в стартер не подается ток». Рассуждения продолжаются, так как надо выяснить, почему же в стартер не подается ток. Ответ на этот вопрос дает правило 1. В условной части правила записано: «ЕСЛИ автомобиль не заводится И сел аккумулятор». Если эти условия выполняются, то можно выявить причину, по которой автомобиль не трогается с места. В противном случае придется проверить другие правила, относящиеся к этой ситуа- ции, проследить еще одну цепочку. Если в правилах, относящихся к проблемной области, не удается найти условную часть с выполняющимися условиями, необходимо об- ратиться к специалистам и запросить дополнительную информацию. Другими словами, если условные части всех входящих в систему ИИ правил имеют значение «ложь», то в систему надо добавить логические выводы, которые могут помочь при решении задачи. Теперь понятно, что здесь слово «цепочка» означает процедуру логической связи ряда правил. В приведенном примере цепочка рас- суждений начинается со второго правила и заканчивается на первом. Давайте посмотрим, почему же такая цепочка рассуждений называет- ся обратной. До того как автомобиль не смог стронуться с места, он не завелся и у него сел аккумулятор. Последствия выполнения некоторых условий известны —автомобиль не поехал, осталось определить эти условия, т.е. найти причины, по которым автомобиль не тронулся с места. Обратной цепочка рассуждений называется потому, что начи- нается с уже происшедшего события и идет к его истокам. Программные средства, работающие по принципу обратной цепочки рассуждений, предназначены для поиска причин по уже известному результату. Ни- же приведен пример создания базы знаний и обработки хранящейся в ней информации с использованием обратной цепочки рассуждений. Цепочка выполняется с помощью серии вопросов, которые система ИИ задает человеку. Система, реализующая прямую цепочку рассужде- ний, на основании имеющихся условий делает возможные логические выводы; система, реализующая обратную цепочку рассуждений по имеющимся выводам, ищет необходимые для них условия.
МЕХАНИЗМ ВЫВОДА.СРЕДСТВО МАШИННОГО МЫШЛЕНИЯ 61 Хотя реализация обратной цепочки рассуждений не сложнее реа- лизации прямой цепочки рассуждений, в этой главе приводится пол- ный цикл разработки системы ИИ от алгоритма до программы, которую можно применять в реальной экспертной системе. Разработка базы знаний: дерево решений Прежде всего поставим задачу, для решения которой будет разра- батываться экспертная система. Подходящей задачей, при решении которой можно использовать обратную цепочку рассуждений, может быть задача, вытекающая из следующей ситуации: к директору круп- ной технической фирмы пришел человек, желающий устроиться на работу. Директор располагает сведениями о его квалификации, о по- требностях фирмы в специалистах и общем положении дел в фирме. Ему нужно решить, какую должность в фирме может занять посети- тель. На первый взгляд задача не очень сложная, но на решение дирек- тора влияет много факторов. Допустим, претендент работает в данной области недавно, но уже сделал важное открытие или он закончил учебное заведение с посредственными оценками, но несколько лет работал по специальности. В данной ситуации люди ведут себя по— разному, и хотя для того, чтобы получить работу необходимо, удовлет- ворять определенным критериям, в биографии претендента могут быть самые различные факты, анализ которых поможет подобрать для него соответствующую должность. Поскольку в задаче надо выбрать один из нескольких возможных вариантов (должностей), для ее решения можно воспользоваться об- ратной цепочкой рассуждений. В действительности ответ уже сущест- вует. Перед директором сидит человек и всеми силами старается произвести на него хорошее впечатление. Если директора этот чело- век устраивает, для него нужно подобрать подходящую должность. Директору необходимо задать посетителю такие вопросы, ответы на которые дадут возможность сделать правильный выбор. Итак, задача поставлена. Теперь нужно наглядно ее представить. Для описания подобных задач обычно используются диаграммы, кото- рые называются деревьями решений. Деревья решений дают необходи- мую наглядность и позволяют проследить ход рассуждений. Диаграммы называются деревьями решений потому, что, подобно настоящему дереву, имеют ветви. Ветви деревьев решений заканчива- ются логическими выводами. Для рассматриваемого примера вывод заключается в том, предложит ли директор должность поступающему на работу, и если да, то какую. Многие задачи сложны, и их непросто
62 ОБРАТНАЯ ЦЕПОЧКА РАССУЖДЕНИЙ представить (или для их решения не собираются использовать экспер- тную систему). Дерево решений помогает преодолеть эти трудности. На рис. 6.1 показано дерево решений для примера с приемом на работу. Видно, что диаграмма состоит из кружков и прямоугольников, которые называются вершинами. Каждой вершине присваивается но- мер. На вершины можно ссылаться по этим номерам. Линии, соединя- ющие вершины, называются дугами или ветвями. Кружки, содержащие вопросы, называются вершинами решений. Прямоуголь- ники содержат цели диаграммы и означают логические выводы. Линии показывают направление диаграммы. Многие вершины имеют сразу по нескольку ветвей, связывающих их с другими вершинами. Выбор вы- ходящей из вершины ветви определяется проверкой условия, содержа- щегося в вершине. Рис. 6.1. Дерево решений для выбора должности Например, вершина 5 (см.рис.6.2) содержит вопрос, на который есть два возможных ответа, и поэтому у нее два пути в зависимости от среднего балла посетителя за время учебы, т.е. возможен выбор одной
МЕХАНИЗМ ВЫВОДА:СРЕДСТВО МАШИННОГО МЫШЛЕНИЯ 63 из двух ветвей. Если средний балл равен 3,1, то будет выбран первый путь, так как 3,1 меньше 3,5. В программе под средний балл сначала отводится переменная, а затем ей присваивается значение. Можно сказать, что вершины содержат переменные, а пути —это условия, в соответствии с которыми переменным присваиваются значения. После того как для проблемной области сформулированы правила, эти усло- вия становятся условными частями (ЕСЛИ) правила. Прямоугольники содержат частные или общие выводы. Например, прямоугольник на рис. 6.3 может содержать ответ на вопрос, будет ли посетителю пред- ложена работа. Общая цель системы, в которой реализованы обратные рассуждения, —получить окончательный ответ. Локальной целью мо- жет быть содержащийся в прямоугольнике на рис. 6.4 ответ на вопрос, будет ли посетителю предложена должность. Однако эта вершина име- ет и исходящие ветви, и, следовательно, через нее может проходить путь к следующему логическому выводу. В последнем случае, посколь- ку исходящая ветвь не содержит условия и она только одна, говорят, что вершина содержит локальный вывод для другой цели. Локальный вывод — это также составляющая условной части правила. Ниже будет приведен пример, содержащий локальные выводы. Рис. 6.2. Определение пути к вершине решения Посетителю отказать Рис. 6.3 Логический вывод
64 ОБРАТНАЯ ЦЕПОЧКА РАССУЖДЕНИЙ Преобразование дерева решений в правила Как мы уже говорили, правило ЕСЛИ-TO состоит из двух частей. Часть ЕСЛИ может включать несколько условий, которые связывают- ся между собой логическими операторами И, ИЛИ и НЕ. Часть ТО правила включается в работу только в том случае, если истинны все условия в условной части. В дереве решений обеим частям правила соответствуют связанные между собой вершина решения (кружок) и вершина логического вывода (прямоугольник). Условная часть содер- жит все вершины решения, находящиеся на пути к логическому выво- ду, т.е. каждая вершина решения на пути к выводу — это одно условие части ЕСЛИ. Вывод же составляет часть ТО правила (см. рис.6.5). Рис. 6.4. Пример логического вывода Рис. 6.5. Преобразования части дерева в правило Для того чтобы найти условия, при которых посетителю может быть предложена работа, нужно просмотреть все пути, ведущие к пря- моугольнику 3. К нему ведет только один путь от вершины решения 1, которая содержит вопрос: «Посетитель имеет ученое звание ?». Прави- ло, соответствующее этому пути, имеет вид: ЕСЛИ посетитель имеет ученое звание - да, ТО посетитель, возможно, будет принят на работу - да
МЕХАНИЗМ ВЫВОДА’.СРЕДСТВО МАШИННОГО МЫШЛЕНИЯ 65 Длинную фразу «посетитель имеет ученое звание» можно заменить переменной, принимающей значения «да» или «нет». В действительно- сти все вершины содержат переменные, имеющие уникальные имена. Список имен переменных, текст, который они заменяют, и номера вершин приведены в табл. 6.1. Использование переменных вместо пол- ного текста упрощает формирование и запись правил. Процесс формирования правил для всех возможных логических выводов состоит из следующих шагов: 1. Выбрать из дерева решений вершину вывода (прямоугольник) и зафиксировать ее. 2. Найти вершину решения (кружок), расположенную слева от выбранной вершины вывода и сязанную с ней ветвью, и зафиксировать ее. Таблица 6.1 Таблица имен переменных Имя переменной Условия Вершина (ы) DEGREE DESCOVERY EXPERIENCE GRADE POSITION QUALIFY Посетитель имеет ученое звание ? Посетитель сделал важное открытие ? Каков опыт работы в этой области ? Каков средний балл посетителя за время учебы ? Какая должность предложена посетителю ? Возможно, посетитель будет принят на работу 1 4 7 5 2,6,8,9,10 3 3. Повторять шаг 2 до тех пор, пока не будут исчерпаны все верши- ны решения, расположенные левее зафиксированной вершины вывода, или не встретится новая вершина вывода. Если встретилась вершина вывода, то ее надо зафиксировать и прекратить выполнение шага 2. Выполнение также прекращается, если исчерпаны все вершины. 4. Каждая вершина решения, составляющая путь, —это одна из переменных части ЕСЛИ правила. Значение, связанное с ветвью, пред- ставляет собой условие. Переменные условной части правила объеди- няются логическим оператором И. 5. Выбранный логический вывод перенести в часть ТО правила. Создание правил В качестве примера рассмотрим путь, показанный на рис. 6.6. Выполнив описанные шаги, получим: Вершина вывода 6 Путь 6,4,1 3 Заказ №476
66 ОБРАТНАЯ ЦЕПОЧКА РАССУЖДЕНИЙ Поскольку используются обратные рассуждения, то выполнение начинается с вывода и дерево решения просматривается в обратную сторону. Применив полученный путь и имена переменных из табл. 6.1, можно создать правило: ЕСЛИ DEGREE - ДА И DESCOVERY - ДА, ТО POSITION - НАУЧНЫЙ СОТРУДНИК Таким образом, если посетитель имеет ученое звание и сделал важное открытие, то ему будет предложена должность научного со- трудника. Воспользовавшись уже известными принципами, приступим к раз- работке базы знаний. Читатель может построить базу знаний для своей проблемной области аналогично; ему только надо учесть, что должно быть хотя бы одно правило для каждого пути, ведущего к цели. В табл. 6.2 собраны все правила для дерева решений, показанного на рис.6.1. Номера правил выбраны произвольно и служат только для удобства идентификации. Правила соответствуют всем шести путям, ведущим к шести воз- можным целям дерева решений. Рис. 6.6. Пример пути Таблица 6.2 Правила ЕСЛИ-ТО Правило Путь 10 ЕСЛИ DEGREE - НЕТ, ТО POSITION-НЕТ 1,2 20 ЕСЛИ DEGREE - ДА, ТО QUALIFY-ДА 1,3 30 ЕСЛИ DEGREE - ДА И DISCOVERY - ДА, ТО POSITION - НАУЧНЫЙ СОТРУДНИК 1,4,6 40 ЕСЛИ QUALIFY- ДА И AVERAGE 3.5 И EXPERIENCE - 2, ТО POSITION - ИНЖЕНЕР ПО ЭКСПЛУАТАЦИИ 3,5,7,10 50 ЕСЛИ QUALIFY - ДА И AVERAGE - 3.5 И EXPERIENCE 2, ТО POSITION-НЕТ 3,5,7,9 60 ЕСЛИ QUALIFY - ДА И AVERAGE - 3.5, ТО POSITION - ИНЖЕНЕР-КОНСТРУКТОР 3,5,8
МЕХАНИЗМ ВЫВОДА:СРЕДСТВО МАШИННОГО МЫШЛЕНИЯ 67 Из приведенного примера видно, как удобно применять деревья решений. Они позволяют просто и наглядно формировать правила для базы знаний, а без базы знаний экспертную систему не построить. Работа с базой знаний Приступим к реализации обратной цепочки рассуждений. База знаний должна использоваться для определения пути, ведущего к ка- кому-либо логическому выводу. Например, если путь завершается в вершине 9 дерева решений, вывод будет: «Отказать посетителю в работе». Выводы, содержащиеся в вершинах решения, представляют собой переменные частей ТО правил. Путь, который надо проделать для получения вывода, помогает понять, почему сделан именно такой вывод. Иными словами, часть ТО является решением, а условия части ЕСЛИ — причинами, приведшими к решению. 10 ЕСЛИ DEGREE - НЕТ, ТО POSITION - НЕТ 20 ЕСЛИ DEGREE - ДА, ТО QUALIFY-ДА 30 ЕСЛИ DEGREE - ДА И DISCOVERY-ДА, ТО POSITION - НАУЧНЫЙ СОТРУДНИК 40 ЕСЛИ QUALIFY - ДА И GRADE < 3.5 И EXPERIENCE - 2, ТО POSITION - ИНЖЕНЕР ПО ЭКСПЛУАТАЦИИ 50 ЕСЛИ QUALIFY - ДА И GRADE < 3.5 И EXPERIENCE - 2, ТО POSITION - НЕТ 60 ЕСЛИ QUALIFY - ДА И GRADE >- 3.5, ТО POSITION - ИНЖЕНЕР- КОНСТРУКТОР 1 POSITION 2 QUALIFY 3 POSITION 4 POSITION 5 POSITION 6 POSITION Список логических выводов DEGREE DISCOVERY EXPERIENCE GRADE Список переменных 1 DEGREE 2 3 4 5 DEGREE 6 7 8 9DEGREE 10DISCOVERY 11 12 13 QUALIFY 14 GRADE 15 EXPERIENCE 16 17QUALIFY 18 GRADE 19 EXPERIENCE 20 21 QUALIFY 22 GRADE Вершина стека База знаний Номер правила Номер условия Стек логических выводов Список переменных условия Рис. 6.7. База знаний и структуры данных 3*
68 ОБРАТНАЯ ЦЕПОЧКА РАССУЖДЕНИЙ При создании экспертной системы для упрощения ответа на вопро- сы и решения поставленной задачи в систему включается ряд полезных таблиц или структур данных. Структуры данных нужны для работы с базой знаний. На рис. 6.7 показаны база знаний и необходимые струк- туры данных. После определения метода решения выбранного круга задач можно приступить к разработке системы. Прежде чем начать писать программы, нужно составить алгоритм и создать некоторые специальные структуры данных. Список логических выводов Список логических выводов — это структура данных, содержащая упорядоченный список возможных логических выводов. Список состо- ит из номера правила, логического вывода, связанного с этим прави- лом, и условий, которые формируют вывод. На каждое правило базы знаний в списке приходится одна запись. На рис. 6.8 приведен полно- стью сформированный список логических выводов для всех правил базы знаний. Создание записи списка поясним на примере правила 10. Часть ТО правила 10 содержит переменную POSITION, т.е. перемен- ная POSITION связана с логическим выводом правила 10. Список 10 ЕСЛИ DEGREE - НЕТ, ТО POSITION- НЕТ 20 ЕСЛИ DEGREE - ДА, ТО QUALIFY-ДА 30 ЕСЛИ DEGREE - ДА И DISCOVERY-ДА, ТО POSITION - НАУЧНЫЙ СОТРУДНИК 40 ЕСЛИ QUALIFY - ДА И GRADE < 3.5 И EXPERIENCE - 2, ТО POSITION - ИНЖЕНЕР ПО ЭКСПЛУАТАЦИИ 50 ЕСЛИ QUALIFY - ДА И GRADE < 3.5 И EXPERIENCE - 2, ТО POSITION- НЕТ 60 ЕСЛИ QUALIFY - ДА И GRADE >- 3.5, ТО POSITION - ИНЖЕНЕР- КОНСТРУКТОР 1 POSITION 2 QUALIFY 3 POSITION 4 POSITION 5 POSITION 6 POSITION Список логических выводов База знаний Рис. 6.8. Список логических выводов
МЕХАНИЗМ ВЫВОДАгСРЕДСТВО МАШИННОГО МЫШЛЕНИЯ 69 считается сформированным, когда логический вывод каждого правила помещен в запись с номером, совпадающим с номером правила. Список логических выводов используется исключительно для по- иска вывода по номеру правила. Когда условия части ЕСЛИ истинны, вызывается часть ТО, тем самым переменной логического вывода при- сваива значение. Например, если надо узнать, будет ли посетите- лю предложена работа, в списке ищется переменная POSITION. Она содержится в первой же записи, т.е. в правиле 10: ЕСЛИ DEGREE-НЕТ, ТО POSITION-НЕТ Посетитель не будет принят на работу, если переменная DEGREE имеет значение НЕТ. Если же переменная DEGREE имеет значение ДА, обращаться к части ТО правила нельзя, поскольку не выполняется условие части ЕСЛИ (DEGREE«flA). Поэтому надо продолжить поиск правила, содержащего в части ТО переменную POSITION. Однако не будем торопиться, сначала рассмотрим другие структуры данных, а потом опишем их взаимодействие. Список переменных Список переменных содержит имена переменных для всех услов- ных частей правил базы знаний и признак их инициализации. При- знак инициализации показывает, присвоено ли переменной значение. Список переменных приведен на рис. 6.9. Независимо от того, в сколь- ких условиях встречается переменная, в список переменных она включается всего один раз. В этот список также нельзя включать пере- менные логического вывода, поскольку их значения определяются с помощью правил. Первоначально предполагается, что переменным значения еще не присвоены и признак инициализации для всех пере- менных равен NI. По мере того как полученная от посетителя инфор- мация передается системе и переменным присваиваются значения, признак инициализации меняется на I. До того, как правило включено в работу, все переменные, входя- щие в его условную часть, должны быть проинициализированы. Опре- делить, присвоено ли переменной условия значение, можно, просмотрев список переменных. Если переменная отмечена как NI, то прежде, чем начать работать с правилом, ей надо присвоить значение. Как только от посетителя получена информация и переменной присво- ено значение, она помечается как I. После этого значение переменной сравнивается с правой частью соответствующего условия, в которое входит эта переменная. Рассмотрим, например, правило 10:
70 ОБРАТНАЯ ЦЕПОЧКА РАССУЖДЕНИЙ 10 ЕСЛИ DEGREE - НЕТ, ТО POSITION- НЕТ 20 ЕСЛИ DEGREE - ДА, ТО QUALIFY-ДА 30 ЕСЛИ DEGREE - ДА И DISCOVERY-ДА, ТО POSITION - НАУЧНЫЙ СОТРУДНИК 40 ЕСЛИ QUALIFY-ДА И GRADE < 3.5 И EXPERIENCE - 2, ТО POSITION - ИНЖЕНЕР ПО ЭКСПЛУАТАЦИИ 50 ЕСЛИ QUALIFY - ДА И GRADE < 3.5 И EXPERIENCE - 2, ТО POSITION- НЕТ 60 ЕСЛИ QUALIFY - ДА И GRADE >- 3.5, ТО POSITION-ИНЖЕНЕР- КОНСТРУКТОР DEGREE DISCOVERY EXPERIENCE GRADE Значение NI NI NI NI Список переменных База знаний Рис. 6.9. Список переменных 10 ЕСЛИ DEGREE - НЕТ, ТО POSITION-НЕТ Переменная DEGREE находится в первой строке списка, но ей еще не присвоено значение (NI), и, значит, обратиться к условной части правила нельзя. Для того чтобы присвоить значение переменной DE- GREE, нужно узнать у посетителя, имеет ли он ученое звание. Ответ посетителя и будет значением переменной. Теперь можно приступить к работе с условной частью правила: ЕСЛИ DEGREE-НЕТ Часть ТО можно выполнить, если переменная DEGREE имеет зна- чение НЕТ. В любом случае после присвоения переменной DEGREE значения для нее в соответствующей строке списка переменных N1 заменяется на I: Имя переменной Признак Значение DEGREE I НЕТ С этого момента, в каком бы правиле в условной части не встрети- лась переменная DEGREE, она будет считаться проинициализирован- ной. Это означает, как только от посетителя получена информация, ее можно использовать для работы с любыми правилами.
МЕХАНИЗМ ВЫВОДАгСРЕДСТВО МАШИННОГО МЫШЛЕНИЯ 71 Список переменных условия Условная часть правила (ЕСЛИ) может содержать несколько пере- менных. В проектируемой системе в правиле может быть до четырех переменных условия. Хотя переменные могут быть связаны любым из логических операторов (И, ИЛИ, НЕ), здесь рассматривается лишь оператор И как наиболее распространенный. Например, правило 30 состоит из двух условий, связанных оператором И: ЕСЛИ DEGREE - ДА И DESCO VERY - ДА А правила 40,50 и т.д. содержат по три условия. Необходимо твердо помнить, если условия части ЕСЛИ правила связаны оператором И, то обратиться к части ТО можно только, когда все переменные условия проинициализированы. Например, в правиле 30: 30 ЕСЛИ DEGREE - ДА И DESCOVERY - ДА, ТО POSITION - НАУЧНЫЙ СОТРУДНИК прежде чем обратиться к части ТО, нужно присвоить значения пере- менным DEGREE и DESCOVERY. Поэтому следует сформировать для 10 ЕСЛИ DEGREE- НЕТ, ТО POSITION - НЕТ 20 ЕСЛИ DEGREE - ДА, ТО QUALIFY-ДА 30 ЕСЛИ DEGREE - ДА И DISCOVERY-ДА, ТО POSITION - НАУЧНЫЙ СОТРУДНИК 40 ЕСЛИ QUALIFY - ДА И GRADE < 3.5 И EXPERIENCE-2, ТО POSITION - ИНЖЕНЕР ПО ЭКСПЛУАТАЦИИ 50 ЕСЛИ QUALIFY - ДА И GRADE < 3.5 И EXPERIENCE - 2, ТО POSITION- НЕТ 60 ЕСЛИ QUALIFY - ДА И GRADE >- 3.5, ТО POSITION-ИНЖЕНЕР- КОНСТРУКТОР 1 DEGREE 2 3 4 5 DEGREE 6 7 8 9 DEGREE 10 DISCOVERY 11 12 13 QUALIFY 14 GRADE 15 EXPERIENCE 16 17 QUALIFY 18 GRADE 19 EXPERIENCE 20 21 QUALIFY 22 GRADE База знаний Список переменных условия Рис. 6.10. Список переменных условия
72 ОБРАТНАЯ ЦЕПОЧКА РАССУЖДЕНИЙ всех правил список переменных, входящих в их условные части, чтобы можно было проверить, проинициализирована переменная или нет и только потом приступить к работе с правилом. Структура данных, содержащая перечень всех переменных для всех условных частей пра- вил, называется списком переменных условия. На рис. 6.10 показан список переменных условия для шести правил рассматриваемой базы знаний. Для простоты программирования предполагается, что каждое правило не может содержать больше четырех переменных условия. Слева от имен переменных даны числа (1-22), указывающие индекс элемента массива (по четыре на правило), в который помещается имя соответствующей переменной. Незанятые элементы массива, отведен- ные правилу, остаются пустыми. В принципе можно запрограммиро- вать любое число переменных для каждого правила. Однако при отведении места под переменные условия лучше для каждого правила резервировать одинаковое число элементов массива. Это упростит вычисление индекса первого элемента, отведенного пра- вилу в списке. Его можно вычислить с помощью простой формулы: 4* (номер правила/10— 1)+1 Например, переменные правила 50 будут размещаться, начиная с 17-го элемента массива: 4 ♦ (50/10 — П+1-17 Теперь посмотрим, каким образом три описанные структуры дан- ных соотносятся с мыслительной деятельностью человека в процессе обратной цепочки рассуждений. Прежде всего человек просматривает все возможные пути, способные привести к решению задачи (список логических выводов). Затем он выделяет условия, составляющие эти пути (список переменных и список переменных условия). Такие струк- туры данных позволяют быстро обрабатывать информацию, не повто- ряя одни и те же шаги по нескольку раз, потому что значения переменных можно использовать в определенной ситуации для различ- ных логических выводов. Если же при разговоре с человеком, устраи- вающимся на работу, у директора нет не только компьютера, но даже карандаша и бумаги, ему придется много раз переспрашивать, ведь сразу просто невозможно запомнить. Конечно, в конце концов он при- мет решение, но затратит много сил и времени. Стек логических выводов Обсудим последнюю, четвертую структуру данных — стек логиче- ских выводов. Это главная структура, так как в экспертной системе, реализующей обратную цепочку рассуждений, она связывает осталь- ные структуры данных. В стеке логических выводов хранится инфор-
МЕХАНИЗМ ВЫВОДА:СРЕДСТВО МАШИННОГО МЫШЛЕНИЯ 73 мация о нужных пользователю логических выводах и о переменных условия, инициализацию которых необходимо проверить. Для того чтобы понять, что такое стек логических выводов, вернемся к правилу 40: 40 ЕСЛИ QUALIFY - ДА условие 1 И AVERAGE < 3.5 условие 2 EXPERIENCE - 2, условие 3 ТО POSITION- ИНЖЕНЕР ПО ЭКСПЛУАТАЦИИ Правило состоит из условной части с тремя условиями (1,2,3) и части ТО. Для того чтобы выяснить, можно ли вызвать часть ТО, необходимо проверить все условия. Если все условия истинны, в работу включается часть ТО, согласно которой посетителя предлагается назначить инже- нером по эксплуатации оборудования. Правило надо отбросить, если хоть одно из условий не выполняется. Каким же образом сохранить трассу проверяемых правил и содержащихся в них условий ? На рис. 6.11 показано как это сделать, используя стек логических выводов. 10 ЕСЛИ DEGREE - НЕТ, 1 DEGREE ТО POSITION - НЕТ 20 ЕСЛИ DEGREE - ДА, ТО QUALIFY-ДА 30 ЕСЛИ DEGREE - ДА И DISCOVERY-ДА, ТО POSITION - НАУЧНЫЙ СОТРУДНИК 40 ЕС ЛИ QUALIFY - ДА И GRADE < 3.5 И EXPERIENCE-2, ТО POSITION - ИНЖЕНЕР ПО ЭКСПЛУАТАЦИИ 50 ЕСЛИ QUALIFY - ДА И GRADE < 3.5 И EXPERIENCE - 2, ТО POSITION - НЕТ 60 ЕСЛИ QUALIFY - ДА И GRADE >- 3.5, ТО POSITION-ИНЖЕНЕР- КОНСТРУКТОР База знаний Номер правила Номер условия 3 4 5 DEGREE 6 7 8 9 DEGREE 10 DISCOVERY 11 12 13 QUALIFY 14 GRADE 15 EXPERIENCE 16 17 QUALIFY 18 GRADE 19 EXPERIENCE 20 21 QUALIFY 22 GRADE Список переменных ---------------------------- условия Стек логических выводов 2 Рис. 6.11. Стек логических выводов
74 ОБРАТНАЯ ЦЕПОЧКА РАССУЖДЕНИЙ Видно, что в настоящий момент проверяется первое условие прави- ла 40: QUALIFY-ДА Но значение переменной QUALIFY присваивается в правиле 20: ЕСЛИ DEGREE - ДА, условие 1 ТО QUALIFY-ДА Поэтому для определения значения переменной QUALIFY надо обратиться к правилу 20. Правило 20 помещается в стек (см. рис. 6.12). Номер условия указывает, что нужно посмотреть первое условие пра- вила 20: DEGREE-ДА Значение переменной DEGREE (ДА или НЕТ) присваивается со- гласно данным, полученным от посетителя. Переменной QUALIFY можно присвоить значение ДА только, если DEGREE = ДА (таково условие в части ЕСЛИ). Предположим, у посетителя есть ученое зва- 10 ЕСЛИ DEGREE - НЕТ, ТО POSITION- НЕТ 20 ЕСЛИ DEGREE - ДА, ТО QUALIFY-ДА 30 ЕСЛИ DEGREE - ДА И DISCOVERY-ДА, ТО POSITION - НАУЧНЫЙ СОТРУДНИК 40 ЕСЛИ QUALIFY-ДА И GRADE < 3.5 И EXPERIENCE-2, ТО POSITION - ИНЖЕНЕР ПО ЭКСПЛУАТАЦИИ 50 ЕСЛИ QUALIFY - ДА И GRADE < 3.5 И EXPERIENCE -2, ТО POSITION- НЕТ 60 ЕСЛИ QUALIFY - ДА И GRADE >- 3.5, ТО POSITION-ИНЖЕНЕР- КОНСТРУКТОР База знаний Номер правила Номер условия 1 DEGREE 2 3 4 5DEGREE 6 7 8 9DEGREE 10 DISCOVERY 11 12 13 QUALIFY 14 GRADE 15 EXPERIENCE 16 17 QUALIFY 18 GRADE 19 EXPERIENCE 20 21 QUALIFY 22 GRADE Стек логических выводов Список переменных условия Рис. 6.12. Стек логических выводов при работе с дополнительным правилом
МЕХАНИЗМ ВЫВОДА:СРЕДСТВО МАШИННОГО МЫШЛЕНИЯ 75 ние (DEGREE = ДА), тогда QUALIFY = ДА. После этого правило 20 можно удалить из стека. Поскольку QUALIFY = ДА, можно перейти от первого ко второму условию правила 40 (рис,6.13). Такое взаимодей- ствие стека выводов с базой знаний продолжается на протяжении всей цепочки обратных рассуждений. В заключение повторим, что стек логических выводов хранит ин- формацию о том, какое условие какого правила проверяется в опреде- ленный момент времени. Пример использования базы знаний Для того чтобы свести воедино все выше сказанное, рассмотрим полный цикл обработки экспертной системой запроса пользователя. Работа начинается с ввода пользователем логического вывода в форме вопроса: Будет ли посетитель принят на работу ? 10 ЕСЛИ DEGREE - НЕТ, ТО POSITION- НЕТ 1 DEGREE 20 ЕСЛИ DEGREE-ДА, ТО QUALIFY-ДА 30 ЕСЛИ DEGREE - ДА И DISCOVERY-ДА, ТО POSITION - НАУЧНЫЙ СОТРУДНИК 40 ЕСЛИ QUALIFY - ДА И GRADE < 3.5 И EXPERIENCE-2, ТО POSITION - ИНЖЕНЕР ПО ЭКСПЛУАТАЦИИ 50 ЕСЛИ QUALIFY - ДА И GRADE < 3.5 И EXPERIENCE - 2, ТО POSITION- НЕТ 60 ЕСЛИ QUALIFY - ДА И GRADE >- 3.5, ТО POSITION-ИНЖЕНЕР- КОНСТРУКТОР База знаний 3 4 5 DEGREE 6 7 8 9 DEGREE 10 DISCOVERY 11 12 13 QUALIFY 14GRADE 15 EXPERIENCE 16 17 QUALIFY 18 GRADE 19 EXPERIENCE 20 21 QUALIFY 22 GRADE Номер правила Номер условия Список переменных 2 ------------------------------- условия Стек логических выводив Рис. 6.13. Обновленный стек логических выводов
76 ОБРАТНАЯ ЦЕПОЧКА РАССУЖДЕНИЙ . Система выбирает из таблицы переменных переменную логическо- го вывода POSITION. Затем в стек помещается номер правила, в кото- ром есть такая переменная логического вывода. Список логических выводов просматривается с самого начала (с правила 10), так как переменная POSITION встретилась в первый раз. Система сразу же находит переменную POSITION в правиле 10 и помещает в стек один элемент (см. рис. 6.14). В правиле 10 система находит переменную условия DEGREE и просмотрев список переменных, обнаруживает, что она еще не проинициализирована. Переменной DEGREE нет и в списке переменных логического вывода, поскольку она не входит в часть ТО какого-либо правила. Система запросит информацию: Посетитель имеет ученое звание ? Как только полученный ответ будет передан системе, переменной DEGREE присваивается значение, а в списке переменных для нее проставляется признак инициализации (рис.6.15). Пусть посетитель 10 ЕСЛИ DEGREE- НЕТ, ТО POSITION - НЕТ *“ 20 ЕСЛИ DEGREE - ДА, ТО QUALIFY-ДА 30 ЕСЛИ DEGREE - ДА И DISCOVERY-ДА, ТО POSITION - НАУЧНЫЙ СОТРУДНИК 40 ЕСЛИ QUALIFY-ДА И GRADE < 3.5 И EXPERIENCE-2, ТО POSITION - ИНЖЕНЕР ПО ЭКСПЛУАТАЦИИ 50 ЕСЛИ QUALIFY - ДА И GRADE < 3.5 И EXPERIENCE -2, ТО POSITION - НЕТ 60 ЕСЛИ QUALIFY - ДА И GRADE >- 3.5, ТО POSITION-ИНЖЕНЕР- КОНСТРУКТОР База знаний Вершина стека 1 DEGREE 2 3 4 5DEGREE 6 7 8 9DEGREE 10 DISCOVERY 11 12 13 QUALIFY 14 GRADE 15 EXPERIENCE 16 17 QUALIFY 18 GRADE 19 EXPERIENCE 20 21 QUALIFY 22 GRADE Номер правила Номер условия Список переменных ------------------------------- условия Стек логических выводов Рис. 6.14. Начальное состояние стека логических выводов
МЕХАНИЗМ ВЫВОДАгСРЕДСТВО МАШИННОГО МЫШЛЕНИЯ 77 ответил на вопрос «ДА», тогда правило 10 ЕСЛИ DEGREE-НЕТ, ТО POSITION-НЕТ из-за противоречия в условии исключается, а соответствующий ему логический вывод удаляется из стека. В поисках нового правила с переменной логического вывода POSITION просмотр списка логиче- ских выводов продолжается. Следующим система выбирает правило 30 30 ЕСЛИ DEGREE - ДА И DISCOVERY - ДА, ТО POSITION - НАУЧНЫЙ СОТРУДНИК и помещает его в стек (см.рис. 6.16). Теперь система попытается при- 10 ЕСЛИ DEGREE- НЕТ, ТО POSITION - НЕТ 20 ЕСЛИ DEGREE-ДА, ТО QUALIFY-ДА 30 ЕСЛИ DEGREE - ДА И DISCOVERY-ДА, ТО POSITION - НАУЧНЫЙ СОТРУДНИК 40 ЕСЛИ QUALIFY - ДА И GRADE < 3.5 И EXPERIENCE-2, ТО POSITION - ИНЖЕНЕР ПО ЭКСПЛУАТАЦИИ 50 ЕСЛИ QUALIFY - ДА И GRADE < 3.5 И EXPERIENCE - 2, ТО POSITION - НЕТ 60 ЕСЛИ QUALIFY - ДА И GRADE >- 3.5, ТО POSITION - ИНЖЕНЕР- КОНСТРУКТОР Список переменных DEGREE DISCOVERY EXPERIENCE GRADE Значение I ДА NI NI NI База знаний Рис.6.15 Скорректированный список переменных своить значения всем переменным условия, входящим в правило 30; список переменных условия приведен на рис.6.17. Номер условия, хра нящийся в стеке для правила 30, указывает на переменную DEGREE, которой уже присвоено значение (в списке переменных она отмече’ а как I), поэтому для первого элемента стека номер условия будет уве личен на единицу. Второй в списке переменных условия для правила 30 стоит переменная DISCOVERY (рис. 6.18).
78 ОБРАТНАЯ ЦЕПОЧКА РАССУЖДЕНИЙ В списке переменных условия отмечено, что переменной DISCOVERY значение еще не присвоено,а так как DISCOVERY не входит в переменные логического вывода, система опять запросит ин- формацию: Посетитель сделал важное открытие ? 10 ЕСЛИ DEGREE- НЕТ, ТО POSITION- НЕТ 20 ЕСЛИ DEGREE - ДА, ТО QUALIFY-ДА 30 ЕСЛИ DEGREE - ДА И DISCOVERY-ДА, ТО POSITION - НАУЧНЫЙ СОТРУДНИК 40 ЕСЛИ QUALIFY-ДА И GRADE < 3.5 И EXPERIENCE - 2, ТО POSITION - ИНЖЕНЕР ПО ЭКСПЛУАТАЦИИ 50 ЕСЛИ QUALIFY - ДА И GRADE < 3.5 И EXPERIENCE - 2, ТО POSITION- НЕТ 60 ЕСЛИ QUALIFY - ДА И GRADE >- 3.5, ТО POSITION - ИНЖЕНЕР- КОНСТРУКТОР 1 DEGREE 2 3 4 5 DEGREE 6 7 8 9 DEGREE 10 DISCOVERY 11 12 13 QUALIFY 14 GRADE 15 EXPERIENCE 16 17 QUALIFY 18 GRADE 19 EXPERIENCE 20 21 QUALIFY 22 GRADE Список переменных условия База знаний Номер правила Номер условия Стек логических выводов Рис. 6.16. Управление стеком логических выводов Предположим, система получит ответ «Нет», тогда список пере- мен*иых будет скорректирован (см. рис. 6.19). Поскольку первые две переменные уже проинициализированы, номер условия в стеке будет увеличен до 3. В правиле 30 третьей переменной условия нет, и, значит, можно приступить к его анализу: 30 ЕСЛИ DEGREE - ДА И DESCOVERY - ДА, ТО POSITION - НАУЧНЫЙ СОТРУДНИК Но второе условие правила не выполняется, и, следовательно, ло- гический вывод опять удаляется из стека.
МЕХАНИЗМ ВЫВОДАгСРЕДСТВО МАШИННОГО МЫШЛЕНИЯ 79 10 ЕСЛИ DEGREE - НЕТ, ТО POSITION- НЕТ 20 ЕСЛИ DEGREE - ДА, ТО QUALIFY-ДА 30 ЕСЛИ DEGREE - ДА И DISCOVERY-ДА, ТО POSITION - НАУЧНЫЙ СОТРУДНИК 40 ЕСЛИ QUALIFY - ДА И GRADE < 3.5 И EXPERIENCE - 2, ТО POSITION - ИНЖЕНЕР ПО ЭКСПЛУАТАЦИИ 50 ЕСЛИ QUALIFY - ДА И GRADE < 3.5 И EXPERIENCE - 2, ТО POSITION - НЕТ 60 ЕСЛИ QUALIFY - ДА И GRADE >- 3.5, ТО POSITION - ИНЖЕНЕР- • КОНСТРУКТОР 1 DEGREE 2 3 4 5 DEGREE 6 7 8 9 DEGREE 10 DISCOVERY 11 12 13 QUALIFY 14 GRADE 15 EXPERIENCE 16 17 QUALIFY 18 GRADE 19 EXPERIENCE 20 21 QUALIFY 22 GRADE База знаний Список переменных условия Рис. 6.17. Список переменных условия 10 ЕСЛИ DEGREE - НЕТ, ТО POSITION- НЕТ 20 ЕСЛИ DEGREE - ДА, ТО QUALIFY-ДА 30 ЕСЛИ DEGREE - ДА И DISCOVERY-ДА, — ТО POSITION - НАУЧНЫЙ СОТРУДНИК 40 ЕСЛИ QUALIFY - ДА И GRADE < 3.5 И EXPERIENCE-2, ТО POSITION - ИНЖЕНЕР ПО ЭКСПЛУАТАЦИИ 50 ЕСЛИ QUALIFY - ДА И GRADE < 3.5 Номер правила Номер условия И EXPERIENCE - 2, ТО POSITION - НЕТ --------------------------- 60 ЕСЛИ QUALIFY - ДА И Стек логических GRADE >- 3.5, выводов ТО POSITION-ИНЖЕНЕР- КОНСТРУКТОР Вершина стека 1 DEGREE 2 3 4 5 DEGREE 6 7 8 9 DEGREE 10 DISCOVERY 11 12 13 QUALIFY 14 GRADE 15 EXPERIENCE 16 17 18 GRADE 19 EXPERIENCE 20 21 QUALIFY 22 GRADE База знаний Список переменных условия Рис. 6.18. Очередное изменение стека логических выводов
80 ОБРАТНАЯ ЦЕПОЧКА РАССУЖДЕНИЙ 10 ЕСЛИ DEGREE - НЕТ, ТО POSITION - НЕТ 20 ЕСЛИ DEGREE-ДА, ТО QUALIFY-ДА 30 ЕСЛИ DEGREE - ДА И DISCOVERY-ДА, ТО POSITION - НАУЧНЫЙ СОТРУДНИК 40 ЕСЛИ QUALIFY-ДА И GRADE < 3.5 И EXPERIENCE-2, ТО POSITION - ИНЖЕНЕР ПО ЭКСПЛУАТАЦИИ 50 ЕСЛИ QUALIFY-ДА И GRADE < 3.5 И EXPERIENCE - 2, ТО POSITION - НЕТ 60 ЕСЛИ QUALIFY - ДА И GRADE >- 3.5, ТО POSITION-ИНЖЕНЕР- КОНСТРУКТОР Список переменных DEGREE DISCOVERY EXPERIENCE GRADE Значение I ДА I НЕТ NI NI База знаний Рис. 6.19. Список переменных Поиск правила с переменной логического вывода POSITION будет продолжен. Следующим система выбирает правило 40: 40 ЕСЛИ QUALIFY - ДА И GRADE < 3.5 И EXPERIENCE - 2, ТО POSITION - ИНЖЕНЕР ПО ЭКСПЛУАТАЦИИ и помещает его в стек (см. рис. 6.20). Просмотрев условия правила и список переменных, система обнаруживает, что переменной QUALIFY значение еще не присвоено и что, кроме того, эта переменная есть в списке логического вывода правила 20. Система заносит в стек новый элемент (см.рис. 6.21). Правило 20 содержит только одну переменную условия — DEGREE и его можно выполнить, так как переменная DEGREE уже проинициализирована (DEGREE = ДА): 20 ЕСЛИ DEGREE - ДА, ТО QUALIFY-ДА Согласно правилу 20 переменной QUALIFY присваивается значе- ние ДА (QUALIFY= ДА), и отработанный логический вывод удаляется из стека. Система вернется к правилу 40, увеличит на единицу номер условия (см.рис.6.22) и приступит к работе с переменной GRADE. Переменной GRADE нет в списке выводов, и значение ей еще не при- своено. Система задаст новый вопрос:
МЕХАНИЗМ ВЫВОДА:СРЕДСТВО МАШИННОГО МЫШЛЕНИЯ 81 10 ЕСЛИ DEGREE - НЕТ, ТО POSITION - НЕТ 20 ЕСЛИ DEGREE - ДА, ТО QUALIFY-ДА 30 ЕСЛИ DEGREE - ДА И DISCOVERY-ДА, ТО POSITION - НАУЧНЫЙ СОТРУДНИК 40 ЕСЛИ QUALIFY - ДА И Вершина ГТР1ГЯ И EXPERIENCE-2, ТП POSITION - ИНЖЕНЕР ПО ЭКСПЛУАТАЦИИ 50 ЕСЛИ QUALIFY - ДА И GRADE < 3.5 1 40 1 ?oEpoPsmoN“нет Номер "равила Номер условия 60 ЕСЛИ QUALIFY - ДА И GRADE >- 3.5, Стек логических ТО POSITION-ИНЖЕНЕР- выводов КОНСТРУКТОР База знаний 1 DEGREE 2 3 4 5 DEGREE 6 7 8 9 DEGREE 10 DISCOVERY 11 12 13 QUALIFY 14 GRADE 15 EXPERIENCE 16 17 QUALIFY 18 GRADE 19 EXPERIENCE 20 21 QUALIFY 22 GRADE Список переменных условия Рис. 6.20. Стек выводов после очередного изменения 10 ЕСЛИ DEGREE - НЕТ, ТО POSITION- НЕТ 20 ЕСЛИ DEGREE - ДА, ТО QUALIFY-ДА 30 ЕСЛИ DEGREE - ДА И DISCOVERY-ДА, ТО POSITION - НАУЧНЫЙ СОТРУДНИК 40 ЕСЛИ QUALIFY - ДА И GRADE < 3.5 *~ И EXPERIENCE-2, ТО POSITION - ИНЖЕНЕР ПО ЭКСПЛУАТАЦИИ 50 ЕСЛИ QUALIFY - ДА И GRADE < 3.5 И EXPERIENCE - 2, ТО POSITION - НЕТ Вершина стека 20 40 60 ЕСЛИ QUALIFY - ДА И Номер правила Номер условия GRADE >- 3.5, ТО POSITION-ИНЖЕНЕР- КОНСТРУКТОР Стек логических 1 DEGREE 2 3 4 5 DEGREE 6 7 8 9 DEGREE 10 DISCOVERY 11 12 13 QUALIFY 14 GRADE 15 EXPERIENCE 16 17 QUALIFY 18 GRADE 19 EXPERIENCE 20 21 QUALIFY 22 GRADE База знаний выводов Список переменных условия Рис. 6.21. Стек логических выводов с несколькими элементами
82 ОБРАТНАЯ ЦЕПОЧКА РАССУЖДЕНИЙ 10 ЕСЛИ DEGREE - НЕТ, ТО POSITION- НЕТ 20 ЕСЛИ DEGREE-ДА, ТО QUALIFY-ДА 30 ЕСЛИ DEGREE - ДА И DISCOVERY - ДА, ТО POSITION - НАУЧНЫЙ СОТРУДНИК 40 ЕСЛИ QUALIFY - ДА И GRADE < 3.5 И EXPERIENCE-2, ТО POSITION - ИНЖЕНЕР ПО ЭКСПЛУАТАЦИИ 50 ЕСЛИ QUALIFY - ДА И GRADE < 3.5 И EXPERIENCE - 2, ТО POSITION- НЕТ 60 ЕСЛИ QUALIFY - ДА GRADE >- 3.5, ТО POSITION-ИНЖЕНЕР- КОНСТРУКТОР Вершина стека Номер правила Номер условия И Стек логических выводов 1 DEGREE 2 3 4 5 DEGREE 6 7 8 9 DEGREE 10 DISCOVERY 11 12 13 QUALIFY 14 GRADE 15 EXPERIENCE 16 17 QUALIFY 18 GRADE 19 EXPERIENCE 20 21 QUALIFY 22 GRADE База знаний Список переменных условия Рис. 6.22. Стек логических выводов после очередного изменения Каков был средний балл посетителя в учебном заведении ? Ответ посетителя, скажем 3,0, и задает значение переменной GRADE. На рис. 6.23 показаны список переменных и стек логических выводов после того, как номер условия продвинут до трех. Переменной EXPERIENCE нет в списке логических выводов, и она не проинициализирована, поэтому система опять спросит: Сколько лет посетитель работал по специальности ? Пусть системе передан ответ посетителя: 4. Тогда переменной EXPERIENCE присваивается значение 4, признак ее инициализации изменяется на I, а номер условия в стеке продвигается до 4. В правиле 40 переменных условия больше нет, и, значит, можно приступить к проверке условий. Все условия правила 40 ЕСЛИ QUALIFY “ ДА И GRADE- 3.0 И ЕХР - 2 истинны, так как QUALIFY-ДА GRADE-3.0 EXPERIENCE-2
МЕХАНИЗМ ВЫВОДА:СРЕДСТВО МАШИННОГО МЫШЛЕНИЯ 83 10 ЕСЛИ DEGREE - НЕТ, ГО POSITION- НЕТ 20 ЕСЛИ DEGREE-ДА, ТО QUALIFY-ДА 30 ЕСЛИ DEGREE - ДА И DISCOVERY-ДА, ТО POSITION - НАУЧНЫЙ СОТРУДНИК 40 ЕСЛИ QUALIFY - ДА И GRADE < 3.S И EXPERIENCE-2, ТО POSITION - ИНЖЕНЕР ПО ЭКСПЛУАТАЦИИ 50 ЕСЛИ QUALIFY - ДА И GRADE < 3 5 Вершина стека Номер условия И EXPERIENCE - 2, ТО POSITION - НЕТ Номер правила 60 ЕСЛИ QUALIFY - ДА И — GRADL >- 3.5, ТО POSITION - ИНЖЕНЕР- КОНСТРУКТОР Стек логических выводов 1 DEGREE 2 3 4 5 DEGREE 6 7 8 9 DEGREE 10 DISCOVERY 11 12 13 QUALIFY 14 GRADE 15 EXPERIENCE 16 17 QUALIFY 18 GRADE 19 EXPERIENCE 20 21 QUALIFY 22 GRADE База знаний Список переменных условия DEGREE DISCOVERY EXPERIENCE GRADE Значение I ДА I НЕТ NI I 3,0 Список переменных Рис. 6.23. Состояние задачи и в соответствии с частью ТО ТО POSI1ION - ИНЖЕНЕР ПО ЭКСПЛУАТАЦИИ переменной POSITION присваивается значение ИНЖЕНЕР ПО ЭКС- ПЛУАТАЦИИ. Цель достигнута, посетителю будет предложена долж- ность в отделе эксплуатации оборудования. Замечания по разработке системы Система, реализующая обратную цепочку рассуждений, должна выполнять следующие шаги: 1. Определить переменную логического вывода.
84 ОБРАТНАЯ ЦЕПОЧКА РАССУЖДЕНИЙ 2. В списке логических выводов искать первое вхождение этой’ переменной. Если переменная найдена, в стек логических выводов поместить номер соответствующего правила и установить номер усло- вия равным 1. Если переменная не найдена, сообщить пользователю, что ответ найти невозможно. 3. Присвоить значения всем переменным условия из данного пра- вила. 4. Если в списке переменных указано, что какой-либо переменной условия не присвоено значение и ее нет среди переменных логического вывода (ее нет в списке логических выводов), запросить ее значение у пользователя. 5. Если какая-либо переменная условия входит в переменные ло- гического вывода, поместить в стек номер правила, в логический вывод которого она входит, и вернуться к шагу 3. 6. Если из правила нельзя определить значение переменной, уда- лить соответствующий ему элемент из стека и в списке логических выводов продолжить поиск правила с этой переменной логического вывода. 7. Если такое правило найдено, перейти к шагу 3. 8. Если переменная не найдена ни в одном из оставшихся правил в логическом выводе, правило для предыдущего вывода не верно. Если предыдущего вывода не существует, сообщить пользователю, что ответ получить невозможно. Если предыдущий вывод существует, вернуться к шагу 6. 9. Определить значение переменной из правила, расположенного в начале стека; правило из стека удалить. Если есть еще переменные логического вывода, увеличить значение номера условия и для провер- ки оставшихся переменных вернуться к шагу 3. Если больше нет пере- менных логического вывода, сообщить пользователю окончательный вывод. Экспертная система Приведенный выше алгоритм можно использовать для разработки программы на Бейсике, реализующей обратную цепочку рассуждений, которую можно включить в экспертную систему. База знаний должна состоять из правил. Для того чтобы разобраться в описанных выше идеях, нужно подробно изучить программу, приведенную на листинге 6.1.
МЕХАНИЗМ ВЫВОДАгСРЕДСТВО МАШИННОГО МЫШЛЕНИЯ 85 Пример программы Давайте рассмотрим как можно настроить приведенную в настоя- щей главе программу, реализующую обратную цепочку рассуждений, на любую базу знаний. Программа разработана так, что пользователь может вставить в нее свои правила, начиная с предложения 1500 по 1680. Запустить программу можно с помощью команды RUN. Пояснения к программе В программе используется база знаний из примера с приемом на работу. Например, предложения программы 1500 и 1510 описывают правило 10 ЕСЛИ DEGREE - НЕТ, ТО POSITION-НЕТ А предложения 1560 — 1570 описывают правило: ЕСЛИ (QUALIFY-ДА) И (GRADE 3,5) И (EXPERIENCE-2), ТО POSITION - ИНЖЕНЕР ПО ЭКСПЛУАТАЦИИ Все переменные, входящие в список переменных (V$), —перемен- ные условия, а не логического вывода. Список переменных формиру- ется в предложении 367. Система должна присвоить значения всем переменным из списка (предложения программы 1700-1715). Список переменных определен в предложении 367. В предложении 305 форми- руется список логических выводов, а в предложениях 407-409 —спи- сок переменных условия. Листинг программы Листинг программы сопровождается примерами ее выполнения. Обратите внимание на то, что ответы системы приводятся в сокращен- ном виде. Например, РО - НАУЧНЫЙ СОТРУДНИК (или ИНЖЕ- НЕР-КОНСТРУКТОР, или ИНЖЕНЕР ПО ЭКСПЛУАТАЦИИ) означает «Предложить посетителю должность в соответствующем от- деле»^ РО=НЕТ —’’Посетителю отказать’’; QUALIFY=flA означает «Посетитель, возможно, будет принят на работу, но пока не известно на какую должность». Листинг 6.1_____________________________________________ 1 REM ♦♦♦♦ СИСТЕМА ОБРАТНЫХ РАССУЖДЕНИЙ ♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦»♦ 10 REM НОВЫЕ УСЛОВИЯ ПРАВИЛ ЗАПИСЫВАЮТСЯ В ПРЕДЛОЖЕНИЯХ
86 ОБРАТНАЯ ЦЕПОЧКА РАССУЖДЕНИЙ 11 REM 1500,1520,... 20 REM НАПРИМЕР, 1500 IF(Al-2) AND (A2-6) OR (А3$-”ДА") THEN S-l 22 REM 1502 RETURN 30 REM 1520 IF (J$-"HET") THEN S-l 32 REM 1522 RETURN 40 REM ЧАСТЬ TO ПРИВЕДЕННЫХ ВЫШЕ ПРАВИЛ ВСЕГДА СОДЕРЖИТ 41 REM THEN S-l 50 REM ПРЕДЛОЖЕНИЯ 1510,1530.1550 ПРОГРАММЫ — 51 REM ЧАСТИ TO ПРАВИЛ ПОЛЬЗОВАТЕЛЯ, 60 REM НАПРИМЕР, 1510 РО-"ДА"....RETURN 200 REM •♦♦♦ БЛОК ИНИЦИАЛИЗАЦИИ ПЕРЕМЕННЫХ ******* 210 REM СПИСОК ВЫВОДОВ (GL$),СПИСОК ПЕРЕМЕННЫХ (V$>, ПРИЗНАКИ 220 REM ИНИЦИАЛИЗАЦИИ (IN),СТЕК ПРАВИЛ (SS$) 221 REM И СТЕК УСЛОВИЙ (CS$), 230 REM СПИСОК ПЕРЕМЕННЫХ УСЛОВИЯ (CV$) И УКАЗАТЕЛЬ CTEKA(SP) 240 DIM GL$ (10),V$ (10) ,CV$ (40) ,IN (10) ,SS (10) ,CS (10) 250 SP-11: REM РАЗМЕР СТЕКА —10 ЭЛЕМЕНТОВ, SP - 10+1 260 FOR I-1 TO 10 270 GL$(I)-" ": V$(I)-"IN(I)-0: SS(I)-O: CS(I)-0 280 NEXT I 29(1 REM ВВОД ПЕРЕМЕННЫХ ЛОГИЧЕСКОГО ВЫВОДА 295 REM ПЕРЕМЕННЫЕ ВВОДЯТСЯ В ПОРЯДКЕ ПОЯВЛЕНИЯ В ПРАВИЛАХ 300 REM НАЖАТИЕ КЛАВИШИ ВОЗВРАТ ЗАВЕРШАЕТ ВВОД 305 GL$(1)-"PO": GL$(2)-"QU": GL$(3)-"PO": GL$(4)-"PO": GL$(5)-"PO" 306 GL$(6)-"PO" 307 PRINT"*** СПИСОК ЛОГИЧЕСКИХ ВЫВОДОВ ***" 3IOFORI-1 TO 10 320 PRINT “ЛОГИЧЕСКИЙ ВЫВОД ";I; 325 PRINT GL$ (I) 335 NEXT I 338 PRINT "ДЛЯ ПРОДОЛЖЕНИЯ НАЖМИТЕ КЛАВИШУ ВОЗВРАТ”# 340 REM ФОРМИРОВАНИЕ СПИСКА ПЕРЕМЕННЫХ 350 REM ИМЕНА ПЕРЕМЕННЫХ ВВОДЯТСЯ В ПОРЯДКЕ ИХ ПОЯВЛЕНИЯ В 351 REM ПРАВИЛАХ, НЕ БОЛЕЕ 3 ДЛЯ ПРАВИЛА. 360 REM ПЕРЕМЕННЫЕ ИМЕЮТ УНИКАЛЬНЫЕ ИМЕНА 365 REM НАЖАТИЕ КЛАВИШИ ВК ЗАВЕРШАЕТ ВВОД ПЕРЕМЕННЫХ 366INPUT"*** СПИСОК ПЕРЕМЕННЫХ ***" 367 V$(1)-"DE":V$(2)-”DI":V$(3)-"EX":V$(4)-"GR" 370 FOR 1-1 ТО 10 380 PRINT "ПЕРЕМЕННАЯ ";1; 385 PRINT V$(I) 395 NEXT I 396 INPUT "ДЛЯ ПРОДОЛЖЕНИЯ НАЖМИТЕ КЛАВИШУ ВОЗВРАТ"# 400 REM ФОРМИРОВАНИЕ СПИСКА ПЕРЕМЕННЫХ УСЛОВИЯ (ИМЕНА 401 REM ПЕРЕМЕННЫХ ЗАПИСЫВАЮТСЯ В ПОРЯДКЕ ИХ ПОЯВЛЕНИЯ 402 REM В ЧАСТЯХ ЕСЛИ ПРАВИЛ, НЕ БОЛЕЕ 3 ДЛЯ ПРАВИЛА). 405 REM НАЖАТИЕ КЛАВИШИ ВК ЗАВЕРШАЕТ ВВОД 406 PRINT"*** СПИСОК ПЕРЕМЕННЫХ УСЛОВИЯ ***" 407 CV$(1)-"DE": CV$(5)-"DE":CV$(9)-"DE':CV$(10)-"DI":CV$(13)-"QU" 408 CV$(14)-"GR": CV$(15)-”EX": CV$(17)-"QU": CV$(18)-"GR": 409 CV$(19)-”EX": CV$(21)-"QU":CV$(22)-"GR" 410 FOR 1-1 TO 8:PRINT"** УСЛОВИЕ ";I 420 FOR J-l TO 4:PRINT"nEPEMEHHAB ";J
МЕХАНИЗМ ВЫВОДА:СРЕДСТВО МАШИННОГО МЫШЛЕНИЯ 87 423 К-4* (1-1)+J 424 PRINT CV$(K) 430 NEXT J 432 IF 1-4 THEN INPUT-ДЛЯ ПРОДОЛЖЕНИЯ НАЖМИТЕ BK" 435 NEXT I 500 REM »»»»»»»»»»»*»»» БЛОК ВЫВОДА »»»***»»»»*»»»»»»»»»»♦»»»»»»• 505 INPUT”** ВВЕДИТЕ ИМЯ ПЕРЕМЕННОЙ ЛОГИЧЕСКОГО ВЫВОДА" ;У$ 510 REM ИЗ СПИСКА ЛОГИЧЕСКИХ ВЫВОДОВ (GL$) ПОЛУЧИТЬ НОМЕР 511 REM ПРАВИЛА, СОДЕРЖАЩЕГО ЭТОТ ВЫВОД (SN) 520 F-l: GOSUB 2200: REM НАЧАТЬ ПОИСК С ПЕРВОГО ПРАВИЛА 525 IF SN-0 THEN STOP: REM НЕТ ТАКОГО ЛОГИЧЕСКОГО ВЫВОДА 530 REM В СТЕК ПОМЕЩАЕТСЯ НОМЕР ПРАВИЛА (SN) И НОМЕР 535 REM УСЛОВИЯ-1, (СТЕК СОДЕРЖИТ НОМЕРА ПРАВИЛ (SS) 537 REM И НОМЕРА УСЛОВИЙ (CS>) 540 GOSUB 2000 545 REM НАЙТИ УСЛОВИЕ В СПИСКЕ ПЕРЕМЕННЫХ УСЛОВИЯ 550I-(SS(SP)-1)*4+CS(SP) 555 V$-CV$(I): REM ПЕРЕМЕННАЯ УСЛОВИЯ 560 REM ПОСЛЕДНЕЕ УСЛОВИЕ ДАННОГО ПРАВИЛА? 565 IF THEN GOTO 580: REM ПОСЛЕДНЕЕ УСЛОВИЕ: 566 REM —ВЫПОЛНИТЬ ПРАВИЛО 567 REM ПЕРЕМЕННАЯ УСЛОВИЯ ЯВЛЯЕТСЯ ВЫВОДОМ ? 568 F-l: GOSUB 2200: IF SN 0 THEN GOTO 520 569 REM ПОМЕСТИТЬ ВЫВОД В СТЕК 570 GOSUB 2400: 571 REM ПРОИНИЦИАЛИЗИРОВАНА ЛИ ПЕРЕМЕННАЯ УСЛОВИЯ ? 575 CS(SP)-CS(SP+1): GOTO 545:REM ПРОВЕРИТЬ СЛЕДУЮЩЕЕ УСЛОВИЕ 580 REM В ЧАСТИ ЕСЛИ ПРАВИЛА БОЛЬШЕ НЕТ УСЛОВИЙ 582 SN-SS(SP) 585 S-0: ON SN GOSUB 1500,1520,1540,1560.1580,1600 590 REM МОЖНО ЛИ ВЫЗВАТЬ ЧАСТЬ ТО, Т.Е. S-1 ? 600 IF S-1 THEN GOTO 630: REM ВЫЗВАТЬ ЧАСТЬ ТО 605 REM НЕУДАЧА... ПРОДОЛЖИТЬ ПОИСК В ОСТАВШИХСЯ ПРАВИЛАХ 6101-SS(SP): V$-GL$(I):REM ПОЛУЧИТЬ ЛОГИЧЕСКИЙ ВЫВОД 615 F-SS(SP)+1: REM ПОИСК ВЫВОДА В ОСТАВШИХСЯ ПРАВИЛАХ 620 GOSUB 2200 625 SP-SP+1 :GOTO 525 626 REM ВЫБРАТЬ ИЗ СТЕКА СТАРЫЙ ВЫВОД И ПОМЕСТИТЬ НОВЫЙ 630 REM ЧАСТЬ ЕСЛИ ИСТИННА, ВЫЗВАТЬ ЧАСТЬ ТО 635 ON SN GOSUB 1510,1530.1550,1570,1590,1610 650 REM ВЫБРАТЬ ЭЛЕМЕНТ СТЕКА; ЕСЛИ БОЛЬШЕ НЕТ —ОТВЕТ ПОЛ- УЧЕН 655 REM ЕСЛИ СТЕК НЕ ПУСТ —ПРОВЕРИТЬ ПРЕДЫДУЩИЙ ВЫВОД 660 SP-SP+1 :REM ВЫБРАТЬ ИЗ СТЕКА 670 IF SP 11 THEN GOTO 690: REM СТЕК HE ПУСТ 680 PRINT"*** НОРМАЛЬНОЕ 3ABEPIUEHHE”:REM КОНЕЦ 685 STOP 690 REM СТЕК ПУСТ —ВЫБРАТЬ СЛЕДУЮЩЕЕ УСЛОВИЕ И ПРОДОЛЖИТЬ 695 CS(SP)-CS(SP)+1 700 GOTO 545 1490 REM »»»»»»*»»» ПРАВИЛА ЕСЛИ-TO »»»»*»**»»» 1492 REM ПРАВИЛА ВЗЯТЫ ИЗ БАЗЫ ЗНАНИЙ О ДОЛЖНОСТЯХ 1494 REM ИМЯ ПЕРЕМЕННОЙ СОСТОИТ ИЗ 2 БУКВ ДЛЯ СОВМЕСТИМОСТИ
88 ОБРАТНАЯ ЦЕПОЧКА РАССУЖДЕНИЙ 1496 REM С РАЗНЫМИ ВЕРСИЯМИ БЕЙСИКА (DEG СОКРАЩЕНО ДО DE, 1498 REM A QUAL —ДО QU) 1499 REM *» ПРАВИЛО 1 1500 IF DE$-"HET" THEN S-l 1502RETURN 1510 PO$-"HET":PRINT"PO-HET": RETURN 1519 REM »♦ ПРАВИЛО 2 1520 IF ОЕ$-"ДА” THEN S-l 1522 RETURN 1530 QU$-"flA": PRINT-QU-ДА" :RETURN 1539 REM *» ПРАВИЛО 3 1540 IF (ОЕ$-"ДА”) AND <О1$-"ДА") THEN S-l 1542 RETURN 1550 РО$-"ДА":РЕ1КГРО-НАУЧНЫЙ COTPYUHHK”:RENURN 1559 REM »» ПРАВИЛО 4 1560 IF (QU$-"flA") AND (GR 3.5) AND (EX-2) THEN S-l 1562 RETURN 1570 PO$-71A”:PRINT"PO-HHXEHEP ПО ЭКСПЛУАТАЦИИ": RETURN 1579 REM »♦ ПРАВИЛО 5 1580 IF (QU$-"flA”) AND (GR 3.5) AND (EX 2) THEN S-l 1582 RETURN 1590 PO$-"HET”:PRINT"PO-HET": RETURN 1599 REM ♦♦ ПРАВИЛО 6 1600 IF (QU$—"ДА") AND (GR - 3.5) THEN S-l 1602 RETURN 1610 РО$-"ДА":РЕП4Т"РО-ИНЖЕНЕР-КОНСТРУКТОР": RETURN 1611 REM ♦*** КОНЕЦ БАЗЫ ЗНАНИЙ ♦***♦ 1690 REM ВВОД ДАННЫХ **»• 1699 REM ВВОД ВЫПОЛНЯЕТСЯ ДЛЯ БАЗЫ ЗНАНИЙ "ДОЛЖНОСТЬ" 1700 ШРиТ ПОСЕТИТЕЛЬ ИМЕЕТ УЧЕНОЕ ЗВАНИЕ ? ";DE$: RETURN 1705 INPUT! ЮСРЗТИТЕЛЬ СДЕЛАЛ ОТКРЫТИЕ ?";DI$: RETURN 17101\РиТ"СКОЛЬКО ЛЕТ ПОСЕТИТЕЛЬ РАБОТАЛ ПО СПЕЦИАЛЬНОСТИ ?";ЕХ: RETURN 1715 INPUT"KAKOB СРЕДНИЙ БАЛЛ ПОСЕТИТЕЛЯ В УЧЕБНОМ ЗАВЕДЕ- НИИ”^: RETURN 1750 REM **»♦ КОНЕЦ ВВОДА ДАННЫХ »**♦ 1999 REM БЛОК ПОДПРОГРАММ *♦»» 2000 REM ПОДПРОГРАММА ЗАПИСИ НОМЕРА ПРАВИЛА (SN) НОМЕРА 2002 REM УСЛОВИЯ-1 В СТЕК ВЫВОДОВ, СОСТОЯЩЕГО ИЗ НОМЕРОВ 2003 REM ПРАВИЛ (SS) ИЗ НОМЕРОВ УСЛОВИЙ (CS) 2004 REM ДЛЯ ЭТОГО УКАЗАТЕЛЬ СТЕКА (SP) УМЕНЬШАЕТСЯ НА ЕДИНИЦУ 2020 SP-SP-1: SS(SP)-SN: CS(SP)-1 2030 RETURN 2099 REM ************************************************************** 2200 REM ПОДПРОГРАММА ИЩЕТ В СПИСКЕ ЛОГИЧЕСКИХ ВЫВОДОВ 2201 REM ПЕРЕМЕННУЮ V$ (I), ЕСЛИ ПЕРЕМЕННАЯ ЕСТЬ В СПИСКЕ, 2202 REM ТО ВОЗВРАЩАЕТСЯ SNO, НЕТ- SN-0 2220 SN-O: REM SN СНАЧАЛА ОБНУЛЯЕТСЯ 2230 FOR I-F ТО 8: REM В СПИСКЕ ВЫВОДОВ ИЩЕТСЯ F 2240 IF V$-GL$(D THEN GOTO 2270: REM ПРОВЕРКА РАБОЧЕЙ ТАБЛИЦЫ 2250 NEXT I 2260 RETURN: REM НЕТ В СПИСКЕ 2270 SN-I: REM ЕСТЬ В СПИСКЕ
МЕХАНИЗМ ВЫВОДА:СРЕДСТВО МАШИННОГО МЫШЛЕНИЯ 89 2280RETURN 2299 REM *************************************************** 2400 REM ПОДПРОГРАММА ИНИЦИАЛИЗАЦИИ ПЕРЕМЕННОЙ V$ 2402 REM IN-1 — ПЕРЕМЕННОЙ ПРОИНИЦИАЛИЗИРОВАНА, IN-0 —НЕТ 2404 REM V$ ЕСТЬ В СПИСКЕ ПЕРЕМЕННЫХ 2420 FOR 1-1 ТО 10: REM ПОИСК ПЕРЕМЕННОЙ В СПИСКЕ 2430 IF V$-V$(I) THEN GOTO 2445: REM ПЕРЕМЕННАЯ НАЙДЕНА 2440 NEXT I 2445 IF IN(I)-1 THEN RETURN: REM ПЕРЕМЕННАЯ ПРОИНИЦИАЛИЗИРОВАНА 2450 IF IN(I)-1 THEN RETURN: REM ПЕРЕМЕННАЯ ПРОИНИЦИАЛИЗИРОВАНА 2460 REM В ПРОГРАММЕ БЛОК ИНИЦИАЛИЗАЦИИ ПЕРЕМЕННОЙ 2462 REM НАЧИНАЕТСЯ С ПРЕДЛОЖЕНИЯ 1700 2464 REM ИХ ФОРМАТ: ПРЕДЛОЖЕНИЕ INPUT И ВК 2465 IN (I)-l: REM ВЗВЕСТИ ПРИЗНАК ИНИЦИАЛИЗАЦИИ 2470 ON I GOSUB 1700,1705,1710,1715 2480 RETURN Примеры выполнения программы RUN *** СПИСОК ЛОГИЧЕСКИХ выводов *** ЛОГИЧЕСКИЙ ВЫВОД1 РО ЛОГИЧЕСКИЙ ВЫВОД2 QU ЛОГИЧЕСКИЙ ВЫВОДЗ РО ЛОГИЧЕСКИЙ ВЫВОД4 РО ЛОГИЧЕСКИЙ ВЫВОД5 РО ЛОГИЧЕСКИЙ выводе РО ЛОГИЧЕСКИЙ ВЫВОД7 логический выводе ЛОГИЧЕСКИЙ ВЫВОД9 ЛОГИЧЕСКИЙ ВЫВОД10 ДЛЯ ПРОДОЛЖЕНИЯ НАЖМИТЕ ВК *** СПИСОК ПЕРЕМЕННЫХ*** ПЕРЕМЕННАЯ 1 DE ПЕРЕМЕННАЯ 2 DI ПЕРЕМЕННАЯЗЕХ ПЕРЕМЕННАЯ 4GR ПЕРЕМЕННАЯ 5 ПЕРЕМЕННАЯ 6 ПЕРЕМЕННАЯ? ПЕРЕМЕННАЯ 8 ПЕРЕМЕННАЯ 9 ПЕРЕМЕННАЯ 10 ДЛЯ ПРОДОЛЖЕНИЯ НАЖМИТЕ ВК *** СПИСОК ПЕРЕМЕННЫХ УСЛОВИЯ *** ** УСЛОВИЕ 1 ПЕРЕМЕННАЯ 1 DE ПЕРЕМЕННАЯ 2 ПЕРЕМЕННАЯ 3 ПЕРЕМЕННАЯ 4
90 ОБРАТНАЯ ЦЕПОЧКА РАССУЖДЕНИЙ ** УСЛОВИЕ 2 ПЕРЕМЕННАЯ 1 DE ПЕРЕМЕННАЯ 2 ПЕРЕМЕННАЯ 3 ПЕРЕМЕННАЯ 4 ** УСЛОВИЕ 3 ПЕРЕМЕННАЯ 1 DE ПЕРЕМЕННАЯ 2 DI ПЕРЕМЕННАЯ 3 ПЕРЕМЕННАЯ 4 ** УСЛОВИЕ 4 ПЕРЕМЕННАЯ 1 QU ПЕРЕМЕННАЯ 2 GR ПЕРЕМЕННАЯ ЗЕХ ПЕРЕМЕННАЯ 4 ** УСЛОВИЕ 5 ПЕРЕМЕННАЯ 1 QU ПЕРЕМЕННАЯ 2GR ПЕРЕМЕННАЯЗЕХ ПЕРЕМЕННАЯ 4 ** УСЛОВИЕ 6 ПЕРЕМЕННАЯ 1 QU ПЕРЕМЕННАЯ 2 GR ПЕРЕМЕННАЯ 3 ПЕРЕМЕННАЯ 4 ** УСЛОВИЕ 7 ПЕРЕМЕННАЯ 1 ПЕРЕМЕННАЯ 2 ПЕРЕМЕННАЯ 3 ПЕРЕМЕННАЯ 4 ** УСЛОВИЕ 8 ПЕРЕМЕННАЯ 1 ПЕРЕМЕННАЯ 2 ПЕРЕМЕННАЯ 3 ПЕРЕМЕННАЯ 4 Примеры диалогов с программой Пример 1: *** ВВЕДИТЕ ИМЯ ПЕРЕМЕННОЙ ЛОГИЧЕСКОГО ВЫВОДА ? РО ПОСЕТИТЕЛЬ ИМЕЕТ ЛИ УЧЕНОЕ ЗВАНИЕ ? НЕТ РО-НЕТ ' *** НОРМАЛЬНОЕ ЗАВЕРШЕНИЕ Break in 685 Ok Пример 2: *** ВВЕДИТЕ ИМЯ ПЕРЕМЕННОЙ ЛОГИЧЕСКОГО ВЫВОДА ? РО ПОСЕТИТЕЛЬ ИМЕЕТ УЧЕНОЕ ЗВАНИЕ? ДА ПОСЕТИТЕЛЬ СДЕЛАЛ ОТКРЫТИЕ ? НЕТ - QU-ДА КАКОВ СРЕДНИЙ БАЛЛ ПОСЕТИТЕЛЯ В УЧЕБНОМ ЗАВЕДЕНИИ? 3.0
МЕХАНИЗМ ВЫВОДА:СРЕДСТВО МАШИННОГО МЫШЛЕНИЯ 91 СКОЛЬКО ЛЕТ ПОСЕТИТЕЛЬ РАБОТАЛ ПО СПЕЦИАЛЬНОСТИ ? 2.8 РО-ИНЖЕНЕР ПО ЭКСПЛУАТАЦИИ *** НОРМАЛЬНОЕ ЗАВЕРШЕНИЕ Break in 685 Ok Пример 3: *** ВВЕДИТЕ ИМЯ ПЕРЕМЕННОЙ ЛОГИЧЕСКОГО ВЫВОДА ? РО ПОСЕТИТЕЛЬ ИМЕЕТ ЛИ УЧЕНОЕ ЗВАНИЕ ? ДА ПОСЕТИТЕЛЬ СДЕЛАЛ ОТКРЫТИЕ ? НЕТ КАКОВ СРЕДНИЙ БАЛЛ ПОСЕТИТЕЛЯ В УЧЕБНОМ ЗАВЕДЕНИИ ? 2.0 СКОЛЬКО ЛЕТ ПОСЕТИТЕЛЬ РАБОТАЛ ПО СПЕЦИАЛЬНОСТИ ? 4.0 РО-ИНЖЕНЕР ПО ЭКСПЛУАТАЦИИ *** НОРМАЛЬНОЕ ЗАВЕРШЕНИЕ Break in 685 Ok Пример 4: * ** ВВЕДИТЕ ИМЯ ПЕРЕМЕННОЙ ЛОГИЧЕСКОГО ВЫВОДА ? QU ПОСЕТИТЕЛЬ ИМЕЕТ УЧЕНОЕ ЗВАНИЕ ? НЕТ Break in 525 Ok В последнем примере для условия DE = НЕТ нет правила, в которое переменная QU входила бы в качестве переменной логического вывода. Пример 5: * ** ВВЕДИТЕ ИМЯ ПЕРЕМЕННОЙ ЛОГИЧЕСКОГО ВЫВОДА ? QU ПОСЕТИТЕЛЬ ИМЕЕТ УЧЕНОЕ ЗВАНИЕ? ДА QU-ДА * ** НОРМАЛЬНОЕ ЗАВЕРШЕНИЕ Break in 685 Ok Рабочие таблицы системы обратных рассуждений Приведенная ниже таблица предназначена для упрощения процес- са разработки новой базы знаний и замены уже существующей. Она позволит читателю проверить взаимосвязи базы знаний и структур данных экспертной системы. В дальнейшем можно разработать вход- ной компилятор, который будет читать базу знаний и автоматически преобразовывать ее в структуры данных. Однако это рекомендуется делать после того, как будут полностью усвоены все изложенные здесь идеи. Рабочая таблица поможет создать и преобразовать переменные (переменная И, переменная 12 и т.д.) и значения (значение И, зна- чение 12 и т.д.) новой базы знаний в предложения программы. Сначала создаются правила, затем они преобразуются в рабочую таблицу.
92 ОБРАТНАЯ ЦЕПОЧКА РАССУЖДЕНИЙ IF AND Переменная 11 Значение 11 AND Переменная 12 Значение 12 THEN Переменная 13 Значение 13 IF Переменная 14 Значение 14 AND Переменная 21 Значение 21 AND Переменная 22 Значение 22 THEN Переменная 23 — Значение 23 IF Переменная 24 Значение 24 AND Переменная 31 Значение 31 _ AND Переменная 32 Значение 32 THEN Переменная 33 а. Значение 33 IF Переменная 34 Значение 34 AND Переменная 41 ж. Значение 41 AND Переменная 42 а. Значение 42 THEN Переменная 43 а. Значение 43 IF Переменная 44 Значение 44 AND Переменная 51 Значение 51 AND Переменная 52 а. Значение 52 THEN Переменная 53 а. Значение 53 Переменная 54 Значение 54 Следующая таблица содержит список переменных условия (пред- ложения 407 — 409).
МЕХАНИЗМ ВЫВОДА:СРЕДСТВО МАШИННОГО МЫШЛЕНИЯ 93 CV$(1) - __________________________ Переменная 11 CV$(2) - _______________________ Переменная 12 CV$(3) - __________________________ Переменная 13 CV$(5) - _________________________ Переменная 21 CV$(6) - _______________________ Переменная 22 CV$(7) - _________________________ Переменная 23 CV$(9) - _______________________ Переменная 21 CV$(10) - _______________________ Переменная 32 С V $ < 11) - _______________________ Переменная 33 С V$ (13) - _________________________ Переменная 41 CV$(14) - _________________________ Переменная 42 CV$(15) " _________________________ Переменная 43 CV$(17) - _________________________ Переменная 51 CV$(18) - _________________________ Переменная 52 CV$(19) “ _________________________ Переменная 53 Следующую таблицу можно использовать для включения пере- менных в список переменных (предложение 367). Имя переменной может быть занесено в список только один раз. V$(l) - -------------------------------- Переменная ____________ V $(2) - -------------------------------- Переменная ____________ V $(3) -_________________________________ Переменная------------- V $(4) - -------------------------------- Переменная ____________ V$(5) - -------------------------------- Переменная ____________
94 ОБРАТНАЯ ЦЕПОЧКА РАССУЖДЕНИЙ Следующая таблица предназначена для включения в программу правил (предложения 1490—1611). Части IF правила: 1500 IF __________________ Переменная 11 Переменная 12 Переменная 13 1520 IF____________________ Переменная 21 Переменная 22 Переменная 23 '1540 IF ------------------- Переменная 31 Переменная 32 Переменная 33 1560 IF ___________________ Переменная 41 Переменная 42 Переменная 43 1580 IF ___________________ Переменная 51 Переменная 52 Переменная 53 $ ---------------------- Значение 11 $ --------------------- Значение 12 $ ---------------------- Значение 13 $ ---------------------- Значение 21 $ ---------------------- Значение 22 $ --------------------- Значение 23 $ __________________ Значение 31 $ _____________________ Значение 32 $ --------------------- Значение 33 $ ---------------------- Значение 41 $ ---------------------- Значение 42 $ --------------------- Значение 43 $ --------------------- Значение 51 $ --------------------- Значение 52 $ _____________________ Значение 53 AND AND THEN S - 1 AND AND THEN S - 1 AND AND THEN S - 1 AND AND THEN S-l AND AND THEN S - 1 Части THEN правила: 1580 ------------ $ ----------- Переменная 14 Значение 14 :PRINT"— ---------- ’^RETURN Переменная 14 Значение 14 1530 ------------ $ ----------- Переменная 14 Значение 14 ’PRINT”— --------------------—— ":RETURN Переменная 24 Значение 24
МЕХАНИЗМ ВЫ ВОДА: СРЕДСТВО МАШИННОГО МЫШЛЕНИЯ 95 1550 ------------------- $ “ Переменная 34 Значение 34 :PRINT" ----------------------- ------------------ ”:RETURN Переменная 34 Значение 34 1570 ------------------- $ “ Переменная 44 Значение 44 :PRINT” ----------------—- - ---------------------’.RETURN Переменная 44 Значение 44 1590 ------------------- $ “ Переменная 54 Значение 54 :PRINT’ ------------------- - -------------------- : ”:RETURN Переменная 54 Значение 54 ГЛАВА 7 ВЕРОЯТНОСТЬ И НЕЧЕТКАЯ ЛОГИКА В ЭКСПЕРТНЫХ СИСТЕМАХ В гл. 3 было введено понятие эвристического правила, т.е. правила, сформулированного экспертом. В основе многих эвристических правил лежит вероятность появления определенного события, вычислить ко- торую может только эксперт. Другими словами, эксперт делает обос- нованные предположения в своей проблемной области. В действительности это означает, что существуют статистические данные, позволяющие делать какие-либо предположения. Это могут быть, например, медицинские диагнозы, которые врач ставит на осно- вании своих наблюдений над пациентом. Опыт врача во многих случа- ях с большой точностью позволяет определить заболевание пациента. Конечно, есть вероятность, что врач ошибся, поэтому часто рассматри- ваются и другие диагнозы. Компания, занимающаяся добычей нефти, может на основе дан- ных, полученных в результате проведенных исследований, сделать вывод, что найдено месторождение нефти и вынести решение — бу- рить скважину. Но может оказаться, что в скважине нефти нет. Байес разработал вероятностную методику, основанную на утвер- ждении, что какое-то событие произойдет, потому что раньше уже произошло какое-то другое событие. Теория Байеса входит в теорию вероятностей в раздел, названный «Условная вероятность». В экспер-
96 ВЕРОЯТНОСТЬ И НЕЧЕТКАЯ ЛОГИКА В ЭКСПЕРТНЫХ СИСТЕМАХ тных системах широко применяются статистические решения, опира- ющиеся на теорию Байеса, использование которой описано ниже. Рассмотрим сначала другой аспект теории вероятностей. Не всегда можно описать событие с помощью точно определенных правил. На- пример, можно сказать, что у человека легкое недомогание, если у него температура больше 37°, но меньше 38°, а при большей температуре заболевание может оказаться серьезным. Люди не всегда могут отве- тить на вопросы точно. Можно ли узнать, какая у человека температу- ра, если он говорит, что слегка заболел ? Скорее всего нет. Такие слова, как высокий, горячий и легкий, представляют собой лингвистические переменные, которые нельзя определить одним значением. Использо- вание этих понятий при формулировании правил называется нечеткой логикой. Применение нечеткой логики в экспертных системах рассматрива- ется в других разделах. Основные понятия теории вероятностей Теория вероятностей изучает случайные события. Очень часто человек, сам того не замечая, высказывает предположение или делает вывод, пользуясь терминологией теории вероятностей. Например, «Я на 80 процентов уверен, что все в порядке». Число экспериментов, исходом которых является какое-то событие р -------------------------------------------------------- . Общее число экспериментов Вероятность можно определить следующим образом: Предположим, что эксперимент заключается в двукратном броса- нии монеты. Возможны различные исходы этих экспериментов. Первый бросок Второй бросок 1. Орел Орел 2. Орел Решка 3. Решка Орел 4. Решка Решка Вероятность выпадания решки вычисляется как Число экспериментов, в которых выпадет решка 3 р------------------------------------------- Общее число экспериментов 4 т.е. решка выпадает во втором, третьем и четвертом эксперименте.
МЕХАНИЗМ ВЫВОДАгСРЕДСТВО МАШИННОГО МЫШЛЕНИЯ 97 Другой пример: вероятность того, что в первом броске выпадет решка, равна 2/4 (третий и четвертый эксперимент). Вероятность того, что решка вообще не выпадет, равна 1/4 (первый эксперимент). Как видно из примеров, в уравнении вероятностей знаменатель всегда больше или равен числителю, так как число всех экспериментов всегда больше или равняется числу экспериментов, исходом которых будет конкретное событие. Поэтому вероятность появления какого-либо со- бытия больше или равна 0, но меньше или равна 1. Вероятность Байеса Байес занимался разработкой теории условной вероятности. Ус- ловная вероятность учитывает уже известные исходы экспериментов. Например, рассмотрим все тот же эксперимент двукратного бросания монеты. Решка выпадает после орла только во втором эксперименте, и вероятность этого события равна 1 / 4. Но вероятность выпадания решки во втором броске с учетом того, что в первом уже выпал орел, равна 1/2. Вероятность в этом случае считается с учетом другого набора экспериментов: Первый бросок Второй бросок 1.0рел Орел 2. Орел Решка Из рассмотренных ранее экспериментов удалены те, в которых при первом броске выпадает решка, потому что известно о выпадании орла в первом броске. Из двух оставшихся экспериментов только во втором после выпадания орла выпадает решка. Следовательно, условная ве- роятность выпадания орла во втором броске с учетом выпадания орла в первом равняется 1/2. Условная вероятность — это вероятность наступления какого-то события s при условии, что уже наступило какое-то другое событие е. Условная вероятность обозначается P(sle). Вероятность наступления двух событий вычисляется следующим образом: Р(е иs) -P(sle)*P(e) Уравнение читается так: вероятность того, что произойдут два со- бытия е и s, причем е произойдет первым, равна вероятности наступ- ления события s, если известно, что произошло событие е, умноженной на вероятность появления события е. Рассмотрим пример использования этого уравнения. Предположим, что из набора букв ПОО случайным образом выбирается либо буква I, либо О. 4 Заказ № 476
98 ВЕРОЯТНОСТЬ И НЕЧЕТКАЯ ЛОГИКА В ЭКСПЕРТНЫХ СИСТЕМАХ Применяя уравнение условной вероятности, можно вычислить ве- роятность того, что в двух попытках сначала попадется буква О, а потом I. Подставив в уравнение О и I, получим: Р(О и I) - P(I I О) * Р(О). Вероятность выбора буквы О, Р(О), равна 2/4, так как в наборе букв две буквы I и две буквы О. Вероятность того, что после буквы О будет выбрана I, Р(1,О), равна 2/3. Чтобы понять, почему это так, рассмотрим случай, когда буква О уже выбрана и остались три буквы: ПО. Вероятность выбора буквы I составляет 2/3, поскольку из трех оставшихся букв две I. Вероятность Р (I и О) равна: Р(ПО) *Р(О) -2/3 *2/4-1/3. В экспертных системах используется еще одно уравнение условной вероятности: P(s)-P(sle) ♦ Р(е)+P(slNOTe) *P(NOTe). (1) Уравнение читается так: вероятность появления события s, P(s), равняется вероятности появления события s при условии появления события е, P(sl е), умноженной на вероятность появления события е, Р (е), плюс вероятность появления события s при условии, что событие е не произошло, P(s I NOT е), умноженная на вероятность, что событие е не произошло, P(NOT е). В последующих примерах это уравнение будет называться уравнением 1. Пример Рассмотрим использование условной вероятности на примере пра- вил, описывающих экспертную систему фондовой биржи (предполо- жим, что эти правила относятся только к фондовой бирже). 10 ЕСЛИ ПРОЦЕНТНЫЕ СТАВКИ - ПАДАЮТ, ТО УРОВЕНЬ ЦЕН - РАСТЕТ 20 ЕСЛИ ПРОЦЕНТНЫЕ СТАВКИ - РАСТУТ, ТО УРОВЕНЬ ЦЕН - ПАДАЕТ 30 ЕСЛИ ВАЛЮТНЫЙ КУРС ДОЛЛАРА - ПАДАЕТ, ТО ПРОЦЕНТНЫЕ СТАВКИ - РАСТУТ 40 ЕСЛИ ВАЛЮТНЫЙ КУРС ДОЛЛАРА - РАСТЕТ, ТО ПРОЦЕНТНЫЕ СТАВКИ - ПАДАЮТ Надо определить вероятность повышения уровня цен. Цель приме- ра не в описании реальной ситуации, а просто в иллюстрации подхода к решению задачи. Система, реализующая обратные рассуждения в
МЕХАНИЗМ ВЫВОДАгСРЕДСТВО МАШИННОГО МЫШЛЕНИЯ 99 части ТО правил, будет искать вывод УРОВЕНЬ ЦЕН « РАСТЕТ. Подойдет правило 10: УРОВЕНЬ ЦЕН = РАСТЕТ при условии, что ПРОЦЕНТНЫЕ СТАВКИвПАДАЮТ. Используя уравнение 1 услов- ной вероятности, можно оценить эти условия. Перейдем к перемен- ным (см. гл. 5) и заменим s на STOCK=PACTET и е на ШТ=ПАДАЮТ, в результате получим уравнение 2: Р (STOCK-PACTET) - Р (STOCK-PACTETIINT-ПАДАЮТ) (2) ♦Р (INT-ПАДАЮТ)-»- Р (STOCK-PACTET IINT-HE ПАДАЮТ) *Р (INT-HE ПАДАЮТ) Для того чтобы определить, присвоено ли переменной INT значе- ние ПАДАЮТ, надо вернуться к правилу 40: 40 ЕСЛИ DOLLAR - РАСТЕТ, ТО INT-ПАДАЮТ Правило 40 преобразуется в уравнение 3: Р (INT - ПАДАЮТ) - Р (INT - ПАДАЮТ I DOLLAR - РАСТЕТ) (3) * Р (DOLLAR - РАСТЕТНР (INT - ПАДАЮТ I DOLLAR - НЕ РАСТЕТ) ) * Р (DOLLAR - НЕ РАСТЕТ) Поскольку ни в одном из правил в части ТО нет переменной DOLLAR, т.е. значение вероятности для нее определить нельзя, это значение должно быть введено пользователем. По этой же причине условную вероятность также должен задать пользователь (она не вхо- дит в часть ТО правил). Давайте установим вероятности появления некоторых событий исходя из собственных обоснованных соображе- ний: Р (DOLLAR - РАСТЕТ) - 0.6 Согласно теории вероятностей сумма вероятностей появления и непоявления какого-либо события равна 1. В дальнейшем это свойство вероятностей будет часто использоваться. Исходя из сказанного можно записать: Р (DOLLAR - НЕ РАСТЕТ) - 1 -Р (DOLLAR - РАСТЕТ) - 1 -0.6 - 0.4 Присвоим значения всем условным вероятностям: Р (INT - ПАДАЕТ I DOLLAR - РАСТЕТ) - 0.8 Р (INT - ПАДАЕТ I DOLLAR - НЕ РАСТЕТ) - 0.1 Отметим, что сумма условных вероятностей для противоположных событий не равняется 1. Противоположными в условной вероятности будут события DOLLAR=PACTET и DOLLAR = НЕ РАСТЕТ. Подста- вив присвоенные значения в уравнение 3, получим: 4*
100 ВЕРОЯТНОСТЬ И НЕЧЕТКАЯ ЛОГИКА В ЭКСПЕРТНЫХ СИСТЕМАХ Р (INT-ПАДАЕТ)-0.8 * 0.6+ 0.1 *0.4-0.52 Из основного свойства вероятности находим: Р (INT - НЕ ПАДАЕТ) - 1 -0.52 - 0.48 Для того чтобы найти P(STOCK=PACTET) пользователь должен задать значения условных вероятностей: Р (STOCK - РАСТЕТ IINT - ПАДАЕТ) - 0.85 Р (STOCK - РАСТЕТ IINT - НЕ ПАДАЕТ) - 0.1 Вероятность Р (STOCK » РАСТЕТ) можно вычислить по уравне- нию 2: Р(STOCK - РАСТЕТ) - 0.85*0.52 + 0.1*0.48 - 0.49 или 49% Получив все значения вероятностей, пользователь может опреде- лить свою политику на бирже. Интересно отметить, что в данном при- мере вероятность повышения уровня цен меньше 50%. Это прямо обусловлено выбором вероятностей. Если пользователь повысит услов- ную вероятность роста уровня цен на бирже при условии, что процен- тные ставки не будут падать, т.е. P(STOCK « РАСТЕТ I INT в НЕ ПАДАЕТ), повысится вероятность Р (STOCK - РАСТЕТ). Нечеткая логика До сих пор использовались такие понятия, как «растет» или «пада- ет». Эти понятия относились к различным переменным. Например, понятие «растет» относилось к переменным STOCK и DOLLAR. Одна- ко применительно к переменной STOCK понятие роста может означать повышение уровня цен на бирже на 10 — 30 пунктов по среднему Доу Джонса, а применительно к переменной DOLLAR означает повышение курса доллара по сравнению с японской йеной в 20 —30 раз. В таком контексте слово «растет» называется лингвистической переменной. Лингвистическая переменная может принимать различные значения из некоторого интервала, границы которого могут меняться в зависи- мости от обстоятельств. Например, границы интервала для лингвисти- ческой переменной «холодный» могут меняться в зависимости от того, идет ли речь о зиме или весне. Понятие «падает» —также лингвистическая переменная, исполь- зующаяся в правилах, описывающих фондовую биржу. Применяя лингвистические переменные, можно вычислить значения некоторых вероятностей, не обременяя пользователя лишними вопросами. Для этого необходимо несколько конкретизировать лингвистические пе- ременные. Пользователю экспертной системы нужно позволить до-
МЕХАНИЗМ ВЫВОДА:СРЕДСТВО МАШИННОГО МЫШЛЕНИЯ 101 бавлять к этим переменным определения, например маленький или средний. Пользователь может задать маленькое повышение курса дол- лара, и экспертная система должна точно знать, что под этим подразу- мевается. Посмотрим на примере с фондовой биржей,как вычисляются вероятности. Таблица вероятностей Для оценки повышения уровня цен на бирже будем пользоваться двумя правилами: 10 ЕСЛИ INT - ПАДАЮТ, ТО STOCK- РАСТЕТ 40 ЕСЛИ DOLLAR - РАСТЕТ, ТО INT-ПАДАЮТ и соответствующими им уравнениями вероятностей: Р (STOCK-PACTET) - Р (STOCK-PACTETI INTEREST-ПАДАЮТ) ♦ Р (INTEREST-) + Р (STOCK-PACTET IINTEREST-HE ПАДАЮТ) ♦ PUNTEREST-HE ПАДАЮТ) Р (INT - ПАДАЮТ) - Р (INT - ПАДАЮТ I DOLLAR - РАСТЕТ) ♦ P(DOLLAR - РАСТЕТ) + P(INT - ПАДАЮТ I DOLLAR - НЕ РАСТЕТ) ♦ Р (DOLLAR - НЕ РАСТЕТ) В решении этих уравнений обязательно участие эксперта, который должен построить для пользователя таблицу вероятностей. Эта табли- ца будет содержать уточняющие слова, используемые для конкретиза- ции необходимых пользователю понятий (например, «средний рост»). В одной строке с уточняющими словами записывается процент измене- ния лингвистической переменной, а также вероятность и условная вероятность, что это изменение произойдет. Ниже приводится такая таблица с пояснениями. Столбец 1 Столбец 2 Столбец 3 Лингвистическая переменная Маленький Средний Большой Курс доллара растет в соответствии со значе- нием из таблицы 1-2% 3-4% свыше 4% Р (INT-ПАДАЮТ! Р (DOLLAR- РАС- ТЕТ) 0.2 0.5 0.8 P(DOLLAR -РАСТЕТ) 0.5 0.3 0.1
102 ВЕРОЯТНОСТЬ И НЕЧЕТКАЯ ЛОГИКА В ЭКСПЕРТНЫХ СИСТЕМАХ Предположим, эксперт считает, что курс доллара или растет в соответствии с числами столбца 1, или не растет вообще. Никаких других вариантов нет. Следовательно, эксперт должен определить ве- роятность для двух случаев. В первом случае, когда курс доллара по- вышается, вероятность записывается прямо в таблицу. Во втором случае при условии, что курс доллара не повышается, эксперт записы- вает условную вероятность падения процентных ставок: Р (INT - ПАДАЮТ I DOLLAR - НЕ РАСТЕТ) - 0.07 Вероятность роста уровня цен при сохранении процентных ставок (процентные ставки падают) эксперт записывает как P(STOCK - РАСТЕТ IINT - ПАДАЮТ) - 0.2 если же процентные ставки не падают, эта вероятность записывается как Р (STOCK - РАСТЕТ IINT - НЕ ПАДАЮТ) - 0.1 Такие таблицы создаются и заполняются экспертом. Они становят- ся частью базы знаний и время от времени могут меняться. Эксперт должен вносить изменения в таблицы в том случае, если изменятся вероятности, относящиеся к процентным ставкам или курсу доллара. Исправления в таблицу может вносить вместо человека другая экспер- тная система. Когда пользователь экспертной системы пытается узнать вероят- ность повышения уровня цен на бирже, система задает ему вопрос: ПОСЧИТАТЬ РЕЗУЛЬТАТ. ЕСЛИ ПОВЫШЕНИЕ КУРСА ДОЛЛАРА: 1 —МАЛЕНЬКОЕ 2 —СРЕДНЕЕ 3 — БОЛЬШОЕ ВВЕДИТЕ НОМЕР—? 2 Допустим, что пользователь выбрал второй номер, т.е. СРЕДНЕЕ. Из таблицы видно, что пользователь ожидает повышение курса долла- ра на 3-4%. Все данные, необходимые для решения, можно найти в таблице: Вероятность Источник Р (DOLLAR - РАСТЕТ)-О.З Р(DOLLAR-НЕ РАСТЕТ)-1-0.3“0.7 Р (INT “ ПАДАЮТ 1 DOLLAR-РАСТЕТ) - 0.5 Р (INT - ПАДАЮТ 1 DOLLAR- НЕ РАСТЕТ) - 0.07 P(INT - ПАДАЮТ) - 0.5*0.3 + 0.07*0.7 Строка 2, столбец 3 таблицы Основное правило Строка 2,столбец 2 таблицы Эксперт Уравнение 3 в 0.199
МЕХАНИЗМ ВЫВОДА:СРЕДСТВО МАШИННОГО МЫШЛЕНИЯ ЮЗ Теперь можно посчитать Р(STOCK - РАСТЕТ). Для этого нужно воспользоваться предыдущим результатом: Вероятность Источник Р (INT - ПАДАЮТ) - 0.199 P(INT- НЕ ПАДАЮТ) - 1-0.199-0.811 Р (STOCK-Р АСТЕТ 1 INT-ПАДАЮТ)-0.2 Р (STOCK-Р АСТЕТ 1 INT-НЕ ПАДАЮТ) -0.1 Предыдущее вычисление Основное правило Эксперт Эксперт Из уравнения 3 можно вычислить вероятность повышения уровня цен: Р (STOCK-Р АСТЕТ) - 0.2*0.199 + 0.1 *0.811 - 0.121 т.е. вероятность равна 12,1 %. Пользователь освобожден от создания таблицы и заполнения ее значениями, этой тяжелой работой занимается эксперт. Резюме Основные концепции этой главы. 1. Вероятность появления некоторого события вычисляется по сле- дующей формуле: число экспериментов с желаемым исходом, деленное на число всех экспериментов. Вероятность Байеса —это шаг вперед. Она представляет собой условную вероятность, т.е. вероятность появ- ления одного события при условии, что другое событие уже произошло. Системы, реализующие обратную цепочку рассуждений, используют основные соотношения теории вероятностей, при работе с правилами базы знаний. 2. При вероятностном анализе интересующих пользователя вели- чин может применяться нечеткая логика. При этом анализируются лингвистические переменные, т.е. слова типа «растет» и «падает», при- менительно к уровню цен фондовой биржи. Лингвистические перемен- ные используются в базе знаний для выполнения логических выводов. Для их анализа применяются формулы теории вероятностей. При этом в оценке значений переменных присутствуют такие понятия, как ма- ленький, средний, большой. Следует помнить, что значения вероятностей, участвующие в вы- числениях, определяются согласно конкретной ситуации и работают только в ее рамках.
104 ВЕРОЯТНОСТЬ И НЕЧЕТКАЯ ЛОГИКА В ЭКСПЕРТНЫХ СИСТЕМАХ Пример программы Ниже приведена программа на Бейсике, иллюстрирующая основ- ные концепции байесовской вероятности. Пояснение к программе В программе используются те же правила, что и в концептуальном примере. Они показаны в предложениях 10 — 60. Соответствующие вероятностные уравнения приведены в предложениях с 70 по 105. Про- грамма запрашивает у пользователя значения всех вероятностей, вхо- дящих в уравнения и оценивает вероятность повышения уровня цен на бирже. Листинги программ Листинг 7.1. Вероятности Байеса 1 REM *»»»»»**»***» ВЕРОЯТНОСТИ БАЙЕСА »»**»»»»»**»**»** 5 REM В ПРИМЕРЕ ИСПОЛЬЗУЮТСЯ ПРАВИЛА: 10 REM 10 ЕСЛИ INT-ПАДАЮТ 15REM ТО STOCK-PACTET 20 REM 40 ЕСЛИ DOLLAR-РАСТЕТ 25 REM ТО INT-ПАДАЮТ 30 REM УРАВНЕНИЯ БАЙЕСА: 35 REM ДЛЯ ПРАВИЛА 10 40 REM Р (STOCK-PACTET)-P (STOCK-PACTET I INT-ПАДАЮТ) 45 REM »P (1ЫТ-ПАДАЮТ)+ P (STOCK-PACTET IINT-HE ПАДАЮТ) (1) 46 REM »P (INT-HE ПАДАЮТ) 50 REM ДЛЯ ПРАВИЛА 40 55 REM P (ЩТ-ПАДАЮТ)-Р (INT-ПАДАЮТ I DOLLAR-РАСТЕТ) * 56 REM P(DOLLAR-PACTET) +P (INT-ПАДАЮТ I DOLLAR-НЕ РАСТЕТ) 60 REM *P(DOLLAR-HE РАСТЕТ) (2) 65 REM ИСПОЛЬЗУЕТСЯ СЛЕДУЮЩАЯ АББРЕВИАТУРА 70 REM 11-P (INT-ПАДАЮТ) I2-P(INT-HE ПАДАЮТ) 75 REM 13-P (INT-ПАДАЮТ I DOLLAR-РАСТЕТ) 76 REM 14-P (INT-ПАДАЮТ I DOLLAR-НЕ РАСТЕТ) 80 REM Sl-P (STOCK-PACTET) S2-P(STOCK-PACTET I INT-ПАДАЮТ) 85 REM S3-P (STOCK-PACTET I INT-HE ПАДАЮТ) 90 REM D1 -P (DOLLAR-РАСТЕТ) D2-P (DOLLAR-НЕ РАСТЕТ) 95 REM ПЕРЕЗАПИСЬ ВЕРОЯТНОСТИ ДЛЯ ПОЛУЧЕННЫХ ПРАВИЛ 100 REM S1-S2*I1+S3*I2 (3) 105 REM I1-I3*D1+I4*D2 (4) 110 REM *♦***»«**»*» МЕХАНИЗМ ВЫВОДА ***»*»»*»»***»»**** 115 REM ДЛЯ ДАННОГО ПРИМЕРА НАДО ОПРЕДЕЛИТЬ ВЕРОЯТНОСТЬ 120 REM «STOCK-PACTET». ОБРАТНАЯ ЦЕПОЧКА РАССУЖДЕНИЙ 125 REM ПРИВОДИТ К ПРАВИЛУ 10. УСЛОВНАЯ ЧАСТЬ ПРАВИЛА 135 REM 10 СОДЕРЖИТ ПЕРЕМЕННУЮ INT. ОБРАТНАЯ ЦЕПОЧКА
МЕХАНИЗМ ВЫВОДА.СРЕДСТВО МАШИННОГО МЫШЛЕНИЯ 105 140 REM ПРИВОДИТ К ПРАВИЛУ 40. УСЛОВНАЯ ЧАСТЬ ПРАВИЛА 40 145 REM СОДЕРЖИТ ПЕРЕМЕННУЮ DOLLAR, КОТОРАЯ НЕ ВХОДИТ В 146 REM ДРУГИЕ ПРАВИЛА, СЛЕДОВАТЕЛЬНО ПОЛЬЗОВАТЕЛЬ ЗАДАЕТ 157 REM ЗНАЧЕНИЕ ВЕРОЯТНОСТЕЙ В УРАВНЕНИЕ 3. 150 INPUT КАКОВА ВЕРОЯТНОСТЬ РОСТА КУРСА ДОЛЛАРА";Ш 155 D2-1-D1: REM ВЕРОЯТНОСТЬ ТОГО, ЧТО КУРС ДОЛЛАРА НЕ РАСТЕТ 160 PRINT КАКОВА ВЕРОЯТНОСТЬ ПАДЕНИЯ ПРОЦЕНТНЫХ СТАВОК, " 165 ШРиТ 'ЕСЛИ КУРС ДОЛЛАРА РАСТЕТ",13 170 PRINT’KAKOBA ВЕРОЯТНОСТЬ ПАДЕНИЯ ПРОЦЕНТНЫХ СТАВОК," 175 INPUT-ЕСЛИ КУРС ДОЛЛАРА НЕ РАСТЕТ ’’; 14 180 I1-I3*D1+I4*D2 185 PRINT"*** ВЕРОЯТНОСТЬ ПАДЕНИЯ ПРОЦЕНТНЫХ СТАВОК ";11 190 INPUT’KAKOBA ВЕРОЯТНОСТЬ РОСТА УРОВНЯ ЦЕН. ЕСЛИ ПРОЦЕНТ- НЫЕ СТАВКИ ПАДАЮТ ";S2 195 12-1-11 197 REM ВЕРОЯТНОСТЬ ТОГО, ЧТО ПРОЦЕНТНЫЕ СТАВКИ НЕ ПАДАЮТ 200 PRINT’ KAKOBA ВЕРОЯТНОСТЬ РОСТА УРОВНЯ ЦЕН, ЕСЛИ " 205 INPUT’ПРОЦЕНТНЫЕ СТАВКИ НЕ ПАДАЮТ ”;S3 210 S1-S2*I1+S3*I2 215 PRINT"*** ВЕРОЯТНОСТЬ ПОВЫШЕНИЯ УРОВНЯ ЦЕН ";S3 220 STOP Примеры работы программ RUN КАКОВА ВЕРОЯТНОСТЬ РОСТА КУРСА ДОЛЛАРА ? 0.6 КАКОВА ВЕРОЯТНОСТЬ ПАДЕНИЯ ПРОЦЕНТНЫХ СТАВОК, ЕСЛИ КУРС ДОЛЛАРА РАСТЕТ ? 0.5 КАКОВА ВЕРОЯТНОСТЬ ПАДЕНИЯ ПРОЦЕНТНЫХ СТАВОК, ЕСЛИ КУРС ДОЛЛАРА НЕ РАСТЕТ ? 0.5 *** ВЕРОЯТНОСТЬ ПАДЕНИЯ ПРОЦЕНТНЫХ СТАВОК 0.5 КАКОВА ВЕРОЯТНОСТЬ РОСТА УРОВНЯ ЦЕН, ЕСЛИ ПРОЦЕНТНЫЕ СТАВ- КИ ПАДАЮТ? 0.7 КАКОВА ВЕРОЯТНОСТЬ РОСТА УРОВНЯ ЦЕН, ЕСЛИ ПРОЦЕНТНЫЕ СТАВКИ НЕ ПАДАЮТ ? 0.5 * ** ВЕРОЯТНОСТЬ ПОВЫШЕНИЯ УРОВНЯ ЦЕН 0.5 Break In 220 RUN КАКОВА ВЕРОЯТНОСТЬ РОСТА КУРСА ДОЛЛАРА ? 0.7 КАКОВА ВЕРОЯТНОСТЬ ПАДЕНИЯ ПРОЦЕНТНЫХ СТАВОК, ЕСЛИ КУРС ДОЛЛАРА РАСТЕТ ? 0.4 КАКОВА ВЕРОЯТНОСТЬ ПАДЕНИЯ ПРОЦЕНТНЫХ СТАВОК, ЕСЛИ КУРС ДОЛЛАРА НЕ РАСТЕТ ? 0.5 * ** ВЕРОЯТНОСТЬ ПАДЕНИЯ ПРОЦЕНТНЫХ СТАВОК 0.43 КАКОВА ВЕРОЯТНОСТЬ РОСТА УРОВНЯ ЦЕН, ЕСЛИ ПРОЦЕНТНЫЕ СТАВ- КИ ПАДАЮТ ? 0.5 КАКОВА ВЕРОЯТНОСТЬ РОСТА УРОВНЯ ЦЕН, ЕСЛИ ПРОЦЕНТНЫЕ СТАВКИ НЕ ПАДАЮТ ? 0.7 * ** ВЕРОЯТНОСТЬ ПОВЫШЕНИЯ УРОВНЯ ЦЕН 0.614 Break in 220
106 ВЕРОЯТНОСТЬ И НЕЧЕТКАЯ ЛОГИКА В ЭКСПЕРТНЫХ СИСТЕМАХ Листинг 7.2 Байесовская обратная цепочка_____________________ 1 REM ***** СИСТЕМА ОБРАТНЫХ РАССУЖДЕНИЙ »»*»»»*«**** 10 REM НОВЫЕ УСЛОВИЯ ПРАВИЛ ЗАПИСЫВАЮТСЯ В ПРЕДЛОЖЕНИЯХ 11REM 1500,1520,... 20 REM НАПРИМЕР, 1500 IF(Al-2) AND (А2-6) OR (А3$-"ДА") THEN S-l 22 REM 1502 RETURN 30 REM 1520 IF (J$-"HET') THEN S-l 32 REM 1522 RETURN 40 REM ЧАСТЬ TO ПРИВЕДЕННЫХ ВЫШЕ ПРЕДЛОЖЕНИЙ ВСЕГДА 41 REM СОДЕРЖИТ THEN S-l 50 REM СТРОКИ 1510,1530,...,1550 ПРОГРАММЫ—ЧАСТИ TO 51 REM ПОЛЬЗОВАТЕЛЯ, 60 REM НАПРИМЕР, 1510 РО-”ДА "...:RETURN 200 REM »♦«»*»*»»*»* БЛОК ИНИЦИАЛИЗАЦИИ ПЕРЕМЕННЫХ *♦*..... 210 REM СПИСОК ВЫВОДОВ (GLS),СПИСОК ПЕРЕМЕННЫХ (V$),СПИСОК 211 REM ПРИЗНАКОВ ИНИЦИАЛИЗАЦИИ 220 REM ПЕРЕМЕННЫХ (IN),СТЕК ПРАВИЛ (SS$> И СТЕК УСЛОВИЙ (CS$), 230 REM СПИСОК ПЕРЕМЕННЫХ УСЛОВИЯ (CVS) И УКАЗАТЕЛЬ CTEKA(SP) 240 DIM GL$(10),V$(10),CV$(40),IN(10),SS(10),CS( 10) 250 SP-11: REM РАЗМЕР СТЕКА —10 ЭЛЕМЕНТОВ, SP ПРИСВАИВАЕТСЯ 251 REM ЗНАЧЕНИЕ 10+1 260FORI-1 ТОЮ 270 GL$(1)-”": V$(I)-"'": IN(I)-0: SS(I)-O: CS(I)-0 280 NEXT I 290 REM ВВОД ПЕРЕМЕННЫХ ИЗ ЧАСТИ ТО ПРАВИЛ (ВЫВОДОВ) 295 REM ПЕРЕМЕННЫЕ ВВОДЯТСЯ В ПОРЯДКЕ ИХ ПОЯВЛЕНИЯ В 300 REM ПРАВИЛАХ НАЖАТИЕ КЛАВИШИ ВОЗВРАТ ЗАВЕРШАЕТ ВВОД 305 GL$(1)-"ST": GL$(2)-"ST": GL$(3)-"IN": GL$(4)-"1N"' 307 PRINT "*♦ СПИСОК ЛОГИЧЕСКИХ ВЫВОДОВ **" 310 FOR 1-1 ТО 10 320 PRINT "ЛОГИЧЕСКИЙ ВЫВОД ";1; 325 PRINT GL$(D 335 NEXT I 338 PRINT "ДЛЯ ПРОДОЛЖЕНИЯ НАЖМИТЕ КЛАВИШУ ВОЗВРАТ ";Z 340 REM ВВОД ПЕРЕМЕННЫХ ИЗ ЧАСТИ ЕСЛИ ПРАВИЛ 350 REM ПЕРЕМЕННЫЕ ВВОДЯТСЯ В ПОРЯДКЕ ИХ ПОЯВЛЕНИЯ В 351 REM ПРАВИЛАХ, НЕ БОЛЕЕ 3 ДЛЯ ПРАВИЛА. 360 REM ИМЕНА ПЕРЕМЕННЫХ НЕ ДОЛЖНЫ ПОВТОРЯТЬСЯ 365 REM НАЖАТИЕ КЛАВИШИ ВОЗВРАТ ЗАВЕРШАЕТ ВВОД ПЕРЕМЕННЫХ 366 INPUT ’"*** СПИСОК ПЕРЕМЕННЫХ **♦"’ 367 V$(1)-""DO” 370 FOR 1-1 ТО 10 380 PRINT " ПЕРЕМЕННАЯ ";I; 385 PRINT V$ (I) 395 NEXT I 396 INPUT "ДЛЯ ПРОДОЛЖЕНИЯ НАЖМИТЕ КЛАВИШУ ВОЗВРАТ"# 400 REM ВВОД ИМЕН ПЕРЕМЕННЫХ В ПОРЯДКЕ ИХ ПОЯВЛЕНИЯ В ЧАСТИ 401 REM ЕСЛИ ПРАВИЛ, НЕ БОЛЕЕ 3 В ОДНОМ ПРАВИЛЕ 405 REM НАЖАТИЕ КЛАВИШИ ВОЗВРАТ —КОНЕЦ ВВОДА 406 PRINT"*** СПИСОК ПЕРЕМЕННЫХ УСЛОВИЯ ***" 407 CV$(1)-"IN": CV$(5)-"IN":CV$(9)-"DO":CV$(13)-"DO"
МЕХАНИЗМ ВЫВОДА:СРЕДСТВО МАШИННОГО МЫШЛЕНИЯ 107 410 FOR 1-1 ТО 8:PRINT"** УСЛОВИЕ ";1 420 FOR J-l ТО 4:РЯШТ"ПЕРЕМЕННАЯ ";J 423 K-4*(I-1)+J 424 PRINTCV$(K) 430 NEXT J 432 IF 1-4 THEN INPUT 'ZUIfl ПРОДОЛЖЕНИЯ НАЖМИТЕ ВВОД” 435 NEXT I 500 REM »•»*»••*♦»»•• БЛОК ВЫВОДА »»*•»»»»»»*»»♦•»*»»»»»• 505 INPUT"»* ВВЕДИТЕ ИМЯ ПЕРЕМЕННОЙ ЛОГИЧЕСКОГО ВЫВОДА ";У$ 510 REM ИЗ СПИСКА ВЫВОДОВ <GL$> ПОЛУЧИТЬ НОМЕР ПРАВИЛА 511 REM С ЭТИМ ВЫВОДОМ (SN) 520 F-l: GOSUB 2200: REM НАЧАТ ПОИСК В ПЕРВОМ ПРЕДЛОЖЕНИИ 525 IF SN-0 THEN STOP: REM НЕТ ТАКОГО ВЫВОДА 530 REM В СТЕК ПОМЕЩАЕТСЯ НОМЕР ПРАВИЛА (SN) И 1 531 REM ВМЕСТО НОМЕРА УСЛОВИЯ, 535 REM ТАК КАК СТЕК СОСТОИТ ИЗ СТЕКА НОМЕРОВ ПРАВИЛ (SS) 536 REM И НОМЕРОВ УСЛОВИЙ (CS) 540 GOSUB 2000 545 REM НАЙТИ УСЛОВИЕ В СПИСКЕ ПЕРЕМЕННЫХ УСЛОВИЯ 550I-(SS(SP)-1)*4+CS(SP) 555 V$-CV$(I): REM ПЕРЕМЕННАЯ УСЛОВИЯ 560 ПОСЛЕДНЕЕ УСЛОВИЕ ДАННОГО ПРАВИЛА? 565 IF V$-”" THEN GOTO 580: REM ПОСЛЕДНЕЕ УСЛОВИЕ: 566 REM ВЫПОЛНИТЬ ПРАВИЛО 567 REM ПЕРЕМЕННАЯ УСЛОВИЯ ЯВЛЯЕТСЯ ВЫВОДОМ ? 568 F-l: GOSUB 2200: IF SN 0 THEN GOTO 520: 569 REM ПОМЕСТИТЬ ЛОГИЧЕСКИЙ ВЫВОД В СТЕК 570 GOSUB 2400 REM ПРИСВОЕНО ЛИ ЗНАЧЕНИЕ ПЕРЕМЕННОЙ УСЛОВИЯ ? 575 CS (SP)-CS (SP+1): GOTO 545:REM ПРОВЕРИТЬ СЛЕДУЮЩЕЕ УСЛОВИЕ 580 REM В ЧАСТИ ЕСЛИ ПРАВИЛА БОЛЬШЕ НЕТ УСЛОВИЙ 582 SN-SS(SP) 585 S-0: ON SN GOSUB 1500,1520,1540,1560.1580,1600 590 REM МОЖНО ЛИ ВЫЗВАТЬ ЧАСТЬ ТО, Т.Е. S-1 ? 600 IF S-l THEN GOTO 630: REM ВЫЗВАТЬ ЧАСТЬ TO 605 REM НЕУДАЧА... ВЫВОД ИЩЕТСЯ В ОСТАВШИХСЯ ПРАВИЛАХ 6101-SS(SP): V$-GL$(I):REM ПОЛУЧИТЬ ВЫВОД 615 F-SS(SP)+1: REM ИСКАТЬ ВЫВОД В ОСТАВШИХСЯ ПРАВИЛАХ 620 GOSUB 2200 625 SP-SP+1 :GOTO 525 626 REM ВЫБРАТЬ ИЗ СТЕКА СТАРЫЙ ВЫВОД И ПОМЕСТИТЬ НОВЫЙ 630 REM ЧАСТЬ ЕСЛИ ИСТИННА, ВЫЗВАТЬ ЧАСТЬ ТО 635 ON SN GOSUB 1510,1530.1550,1570,1590,1610 650 REM ВЫБРАТЬ ЭЛЕМЕНТ СТЕКА; ЕСЛИ НЕТ —ОТВЕТ ПОЛУЧЕН: 655 REM ЕСЛИ ЕСТЬ ЭЛЕМЕНТЫ —ПРОВЕРИТЬ ПРЕДЫДУЩИЙ ВЫВОД 660 SP-SP+1 :REM ВЫБРАТЬ ИЗ СТЕКА 670 IF SP 11 THEN GOTO 690: REM СТЕК HE ПУСТ 680 PRINT”*** УСПЕШНОЕ ЗАВЕРШЕНИЕ”:РЕМ КОНЕЦ 685 STOP 690 REM СТЕК ПУСТ —ВЫБРАТЬ СЛЕДУЮЩЕЕ УСЛОВИЕ И ПРОДОЛЖИТЬ 695 CS(SP)-CS(SP)+1 700 GOTO 545 1490 REM »»***»*»»» ПРАВИЛА ЕСЛИ—ТО »»»**»*»*** 1492 REM ЗДЕСЬ ИСПОЛЬЗОВАНЫ ПРАВИЛА ИЗ БАЗЫ ЗНАНИЙ О
108 ВЕРОЯТНОСТЬ И НЕЧЕТКАЯ ЛОГИКА В ЭКСПЕРТНЫХ СИСТЕМАХ 1494 REM ДОЛЖНОСТЯХ. ИМЯ ПЕРЕМЕННОЙ СОСТОИТ ИЗ 2 БУКВ ДЛЯ 1496 REM СОВМЕСТИМОСТИ С РАЗНЫМИ ВЕРСИЯМИ БЕЙСИКА. 1498 REM (DEG СОКРАЩЕНО ДО DE, A QUAL —ДО QU) 1499 REM ♦♦ ПРАВИЛО 1 1500 IF Ш$-"ПАДАЮТ" THEN S-1 1502 RETURN 1510I2-1-I1: PRINVP(ПРОЦЕНТНЫЕ СТАВКИ-ПАДАЮТ)- ”;12 1512INPUT'KAKOBA ВЕРОЯТНОСТЬ ПОВЫШЕНИЯ УРОВНЯ ЦЕН, ЕСЛИ ПРОЦЕНТНЫЕ СТАВКИ ПАДАЮТ ";S4 1514 INPUT’ KAKOBA ВЕРОЯТНОСТЬ ПОВЫШЕНИЯ УРОВНЯ ЦЕН, ЕСЛИ ПРОЦЕНТНЫЕ СТАВКИ НЕ ПАДАЮТ ";S5 1516 S1-S4*11+S5*I2 1518 ST$-“РАСТЕТ”: PRINT "Р (УРОВЕНЬ ЦЕН-РАСТЕТ)-” :RETURN 1519 REM ♦♦ ПРАВИЛО 2 1520 IF IN$-"PACTET" THEN S-1 1522RETURN 153012-1-I1:PRINT"P (ПРОЦЕНТНЫЕ СТАВКИ-HE РАСТУТ)-";12 1532 INPUT'KAKOBA ВЕРОЯТНОСТЬ ПОВЫШЕНИЯ УРОВНЯ ЦЕН, ЕСЛИ ПРОЦЕНТНЫЕ СТАВКИ РАСТУТ ";S4 1534 INPUT'KAKOBA ВЕРОЯТНОСТЬ ПОВЫШЕНИЯ УРОВНЯ ЦЕН, ЕСЛИ ПРОЦЕНТНЫЕ СТАВКИ НЕ РАСТУТ ";S5 1536 Sl-S4*Il+S5*I2:PRINT"P(yPOBEHb ЦЕН-ПАДАЮТ) - ";S1 1538 ST$-"nAJIAK)T”:PRINT"ST-I IAflAlOT”:RETUR.N 1539 REM ♦» ПРАВИЛО 3 1540 IF DO$-"ПАДАЮТ” THEN S-1 1542 RETURN 1550 INPUT' KAKOBA ВЕРОЯТНОСТЬ ПАДЕНИЯ КУРСА ДОЛЛАРА ";I1 155212-1 -Il :PRINT"P (КУРС ДОЛЛАРА- HE ПАДАЕТ)-”;12 1554 INPUT"KAKOBA ВЕРОЯТНОСТЬ РОСТА ПРОЦЕНТНЫХ СТАВОК, ЕСЛИ КУРС ДОЛЛАРА ПАДАЕТ';84 1556 INPUT'KAKOBA ВЕРОЯТНОСТЬ РОСТА ПРОЦОЕНТНЫХ СТАВОК, ЕСЛИ КУРС ДОЛЛАРА НЕ ПАДАЕТ ";S5 1558 S1 -S4‘11 +S5*I2:PRINT'P (ПРЕЦЕНТНЫЕ СТАВКИ-РАСТУТ)-";81:11-S4: IN$-"PACTET-: PRINT"IN-PACTET":RETURN 1559 REM ♦* ПРАВИЛО 4 1560 IF DOS-"РАСТЕТ- THEN S-1 1562 RETURN 1570 INPUT"KAKOBA ВЕРОЯТНОСТЬ РОСТА КУРСА ДОЛЛАРА ";I1 157212-1 -Il :PRINT"P(KyPC ДОЛЛАРА HE PACTET)-";I2 1574 INPUT'KAKOBA ВЕРОЯТНОСТЬ ПАДЕНИЯ ПРОЦЕНТНЫХ СТАВОК, ЕС- ЛИ КУРС ДОЛЛАРА РАСТЕТ ";S4 1576 INPUT-КАКОВА ВЕРОЯТНОСТЬ ПАДЕНИЯ ПРОЦЕНТНЫХ СТАВОК, ЕС- ЛИ КУРС ДОЛЛАРА НЕ PACTET';S5 1578 Sl-S4*Il+S5*I2:PRINT'P(nPOHEHTHbIE СТАВКИ-ПАДАЮТ)-";81:11-S1 1579 INS- ПАДАЮТ": PRINTTN - nAflAIOT":RETURN 1611 REM КОНЕЦ БАЗЫ ЗНАНИЙ 1690 REM ВВОД ДАННЫХ 1699 REM ВВОД ВЫПОЛНЯЕТСЯ ДЛЯ БАЗЫ ЗНАНИЙ "ДОЛЖНОСТЬ" 1700 INPUT-КУРС ДОЛЛАРА БУДЕТ РАСТИ ИЛИ ПАДАТЬ ”;DO$:RETURN 1750 REM КОНЕЦ ВВОДА ДАННЫХ 1999 REM БЛОК ПОДПРОГРАММ **»* 2000 REM ПОДПРОГРАММА ЗАПИСИ НОМЕРА ПРАВИЛА (SN) 2001 REM И 1 ВМЕСТО НОМЕРА УСЛОВИЯ
МЕХАНИЗМ ВЫВОДА:СРЕДСТВО МАШИННОГО МЫШЛЕНИЯ 109 2004 REM ДЛЯ ЭТОГО УКАЗАТЕЛЬ СТЕКА (SP) УМЕНЬШАЕТСЯ НА ЕДИНИЦУ 2020 SP-SP-1: SS(SP)-SN: CS(SP)-1 2030 RETURN 2099 rum************************************************ 2200 REM ПОДПРОГРАММА ИЩЕТ В СПИСКЕ ВЫВОДОВ ПЕРЕМЕННУЮ V$(I) 2202 REM ЕСЛИ ПЕРЕМЕННАЯ ЕСТЬ В СПИСКЕ, ТО ВОЗВРАЩАЕТСЯ SN0, 2203 REM НЕТ- SN-0 2220 SN-O: REM SN СНАЧАЛА ОБНУЛЯЕТСЯ 2230 FOR I-F ТО 8: REM В СПИСКЕ ВЫВОДОВ ИЩЕТСЯ F 2240 IF V$-GL$(I) THEN GOTO 2270: REM ПРОВЕРКА РАБОЧЕЙ ТАБЛИЦЫ 2250 NEXT I 2260 RETURN. REM НЕТ В СПИСКЕ 2270 SN-I: REM ЕСТЬ В СПИСКЕ 2280 RETURN 2299 REM************************************************* 2400 REM ПОДПРОГРАММА ПРИСВОЕНИЯ ЗНАЧЕНИЯ ПЕРЕМЕННОЙ V$ 2402 REM IN-l — ПЕРЕМЕННОЙ ПРИСВОЕНО ЗНАЧЕНИЕ, IN-0 —НЕТ 2404 REM V$ ЕСТЬ В СПИСКЕ ПЕРЕМЕННЫХ 2420 FOR 1-1 ТО 10: REM ПОИСК ПЕРЕМЕННОЙ В СПИСКЕ 2430 IF V$-V$(I) THEN GOTO 2445: REM ПЕРЕМЕННАЯ НАЙДЕНА 2440 NEXT I 2445 IF INID-l THEN RETURN: REM ПЕРЕМЕННАЯ ПРОИНИЦИАЛИЗИРОВАНА 2450 IF IN(I)-1 THEN RETURN: REM ПЕРЕМЕННАЯ ПРОИНИЦИАЛИЗИРОВАНА 2460 REM В ПРОГРАММЕ БЛОК ПРИСВОЕНИЯ ЗНАЧЕНИЯ ПЕРЕМЕННОЙ 2462 REM С ПРЕДЛОЖЕНИЯ 1700 2464 REM ФОРМАТ: ПРЕДЛОЖЕНИЕ ВВОДА И ВОЗВРАТ (INPUT И RETURN) 2465 IN(I)-1: REM ВЗВЕСТИ ПРИЗНАК ИНИЦИАЛИЗАЦИИ 2470 ON I GOSUB 1700,1705,1710,1715 2480 RETURN Пример работы программы RUN *** СПИСОК ЛОГИЧЕСКИХ ВЫВОДОВ *** ЛОГИЧЕСКИЙ ВЫВОД 1 ST ЛОГИЧЕСКИЙ ВЫВОД 2 ST ЛОГИЧЕСКИЙ ВЫВОД 3 IN ЛОГИЧЕСКИЙ ВЫВОД 4 IN ЛОГИЧЕСКИЙ ВЫВОД 5 ЛОГИЧЕСКИЙ выводе ЛОГИЧЕСКИЙ ВЫВОД 7 ЛОГИЧЕСКИЙ выводе ЛОГИЧЕСКИЙ ВЫВОД 9 ЛОГИЧЕСКИЙ ВЫВОД 10 ДЛЯ ПРОДОЛЖЕНИЯ НАЖМИТЕ КЛАВИШУ ВОЗВРАТ *** СПИСОК ПЕРЕМЕННЫХ*** ПЕРЕМЕННАЯ 1 DO ПЕРЕМЕННАЯ 2 ПЕРЕМЕННАЯ 3 ПЕРЕМЕННАЯ 4 ПЕРЕМЕННАЯ 5
110 ВЕРОЯТНОСТЬ И НЕЧЕТКАЯ ЛОГИКА В ЭКСПЕРТНЫХ СИСТЕМАХ ПЕРЕМЕННАЯ 6 ПЕРЕМЕННАЯ? ПЕРЕМЕННАЯ 8 ПЕРЕМЕННАЯ 9 ПЕРЕМЕННАЯ 10 ДЛЯ ПРОДОЛЖЕНИЯ НАЖМИТЕ КЛАВИШУ ВОЗВРАТ *** СПИСОК ПЕРЕМЕННЫХ УСЛОВИЯ *** * * УСЛОВИЕ 1 ПЕРЕМЕННАЯ 1 IN ПЕРЕМЕННАЯ 2 ПЕРЕМЕННАЯ 3 ПЕРЕМЕННАЯ 4 * * УСЛОВИЕ 2 ПЕРЕМЕННАЯ 1 IN ПЕРЕМЕННАЯ 2 ПЕРЕМЕННАЯ 3 ПЕРЕМЕННАЯ 4 * * УСЛОВИЕ 3 ПЕРЕМЕННАЯ 1 DO ПЕРЕМЕННАЯ 2 ПЕРЕМЕННАЯ 3 ПЕРЕМЕННАЯ 4 * * УСЛОВИЕ 4 ПЕРЕМЕННАЯ 1 DO ПЕРЕМЕННАЯ 2 ПЕРЕМЕННАЯ 3 ПЕРЕМЕННАЯ 4 ДЛЯ ПРОДОЛЖЕНИЯ НАЖМИТЕ КЛАВИШУ ВОЗВРАТ ** УСЛОВИЕ 5 ПЕРЕМЕННАЯ 1 ПЕРЕМЕННАЯ 2 ПЕРЕМЕННАЯ 3 ПЕРЕМЕННАЯ 4 ** УСЛОВИЕ 6 ПЕРЕМЕННАЯ 1 ПЕРЕМЕННАЯ 2 ПЕРЕМЕННАЯ 3 ПЕРЕМЕННАЯ 4 * * УСЛОВИЕ 7 ПЕРЕМЕННАЯ 1 ПЕРЕМЕННАЯ 2 ПЕРЕМЕННАЯ 3 ПЕРЕМЕННАЯ 4 * * УСЛОВИЕ 8 ПЕРЕМЕННАЯ 1 ПЕРЕМЕННАЯ 2 ПЕРЕМЕННАЯ 3 ПЕРЕМЕННАЯ 4 *** ВВЕДИТЕ ПЕРЕМЕННУЮ ЛОГИЧЕСКОГО ВЫВОДА ? ST КУРС ДОЛЛАРА РАСТЕТ ИЛИ ПАДАЕТ ? РАСТЕТ КАКОВА ВЕРОЯТНОСТЬ РОСТА КУРСА ДОЛЛАРА ? 0.6
МЕХАНИЗМ ВЫВОДА:СРЕДСТВО МАШИННОГО МЫШЛЕНИЯ 111 КУРС ДОЛЛАРА РАСТЕТ ИЛИ ПАДАЕТ ? РАСТЕТ КАКОВА ВЕРОЯТНОСТЬ РОСТА КУРСА ДОЛЛАРА ? 0.6 Р(КУРС ДОЛЛАРА-НЕ РАСТЕТ) - 0.4 КАКОВА ВЕРОЯТНОСТЬ ПАДЕНИЯ ПРОЦЕНТНЫХ СТАВОК, ЕСЛИ КУРС ДОЛЛАРА РАСТЕТ?0.5 КАКОВА ВЕРОЯТНОСТЬ ПАДЕНИЯ ПРОЦЕНТНЫХ СТАВОК, ЕСЛИ КУРС ДОЛЛАРА НЕ РАСТЕТ?0.5 Р(ПРОЦЕНТНЫЕ СТАВКИ - ПАДАЮТ)-0.5 IN-ПАДАЮТ Р(ПРОЦЕНТНЫЕ СТАВКИ -НЕ ПАДАЮТ}-0.5 КАКОВА ВЕРОЯТНОСТЬ ПОВЫШЕНИЯ УРОВНЯ ЦЕН. ЕСЛИ ПРОЦЕНТНЫЕ СТАВКИ ПАДАЮТ ? 0.7 КАКОВА ВЕРОЯТНОСТЬ ПОВЫШЕНИЯ УРОВНЯ ЦЕН, ЕСЛИ ПРОЦЕНТНЫЕ СТАВКИ НЕ ПАДАЮТ ? 0.5 Р(УРОВЕНЬ ЦЕН -РАСТЕТ)-0.6 ST-РАСТЕТ * ** УСПЕШНОЕ ЗАВЕРШЕНИЕ *** Break In 68 Ok
3 ЭКСПЕРТНЫЕ СИСТЕМЫ: ЗНАНИЯ ПЛЮС ЛОГИЧЕСКИЙ ВЫВОД • Три примера реальных экспертных систем •Способы представления решения в экспертной системе •Примеры программ ГЛАВА 8 ЭКСПЕРТНАЯ СИСТЕМА ФИНАНСОВОГО ПЛАНИРОВАНИЯ Из предыдущих глав читатель получил некоторое представление об искусственном интеллекте и экспертных системах. Теперь можно приступить к описанию методов построения базы знаний для реальной экспертной системы. Рассмотрим простую систему финансового планирования, кото- рую можно использовать для принятия решений в области финансов. Описываемая система не является исчерпывающей, и читателю не следует прогнозировать свое финансовое положение, пользуясь ее ог- раниченной базой знаний. Здесь сделана попытка передать только осо- бенности создания реальной экспертной системы финансового планирования или любой другой системы принятия решений, основан- ной на тех же принципах. Цель книги — сделать из читателя не экс- перта по вопросам финансов, а инженера по проектированию баз знаний. Поставим три основных вопроса: 1. Как выбрать предметную область ? 2. Как изучить предметную область ? 3. Как для выбранной предметной области представить (организо- вать) факты ? Простейший способ ответить на эти вопросы — описать процесс разработки реальной экспертной системы, а затем написать програм- му, реализующую эту систему, точно так же как делалось раньше. Прежде всего напомним, что уже известно читателю об экспертных системах. В гл.З рассказывалось, как создать базу знаний для эксперт- ной системы. Для этого используются факты, правила, механизмы вывода и упрощения. В качестве предметной области выбирается узкая
113 ЭКСПЕРТНАЯ СИСТЕМА ФИНАНСОВОГО ПЛАНИРОВАНИЯ (специальная) прикладная область. Далее для создания экспертной системы в выбранной небольшой области собираются факты и правила, которые помещаются в базу знаний вместе с механизмами вывода и упрощениями. Выбор предметной области На выбор предметной области влияют два фактора. Первый — область должна быть интересна проектировщику. Второй — база зна- ний должна быть не слишком велика, чтобы можно было собрать уп- равляемое количество информации. Настоящая глава посвящена конкретной предметной области, выбранной из широкой сферы финан- сового планирования. Мы полагаем, что предлагаемая предметная об- ласть заинтересует всех, поскольку одна из важнейших вещей сегодня — это умение рационально обращаться со своими деньгами. Для начала надо пойти в библиотеку, ознакомиться с соответствующей литерату- рой и подумать, кто из знакомых специалистов больше всех разбирает- ся в данном предмете. Однако прежде чем начать изучение литературы и (или) консультироваться со специалистами, надо понять, что же конкретно вы хотите получить. Другими словами, нужно всегда думать о своих целях. Изучение предметной области Может показаться, что финансовое планирование очень большая область и слишком сложна для небольшой программы. Однако это не так. Проделаем следующий путь. Отправимся в библиотеку и возьмем несколько книг по предмету — хватит пяти или шести, излагающих материал в доступной форме. Затем из всех знакомых специалистов в этой области выберем двух наиболее компетентных и проконсультиру- емся у них. В результате у нас окажется большое количество несисте- матизированной информации: получены сведения об акциях, недвижимом имуществе и ценных бумагах на денежном рынке, изуче- ны различные виды финансового обслуживания (например, предлага- емое банками маклерское обслуживание), есть сведения о предлагающих свои услуги профессионалах. В некоторых книгах ми- ровая финансовая ситуация анализировалась с разных точек зрения. Так, одни книги призывают вкладывать деньги в различные предпри- ятия. Другие придавали большое значение вкладам денег в недвижи- мое имущество как наиболее выгодному способу хранения денег. Имея это море информации, человек задает себе более конкретный вопрос: «Что же интересует именно меня, что мне будет полезно изучить ?».
ЭКСПЕРТНЫЕ СИСТЕМЫ: ЗНАНИЯ ПЛЮС ЛОГИЧЕСКИЙ ВЫВОД 114 Немного подумав об этом, он понимает, что и книги, и специалисты советуют изучать свои финансовые нужды, потому что это наиболее важно. Самое удачное — взять всю имеющуюся информацию и сделать из нее нечто осмысленное. Для этого необходимо изучить свои финансо- вые нужды и разработать финансовую программу, соответствующую вашим нуждам, возрасту и образу жизни. В библиотеке книгу Г. Вейн- стена [Grace Weinstein «The Lifetime Book of Money Management* (New American Library, 1983) ], где в финансовых терминах описывается жизненный цикл человека, насчитывающий от 4 до 5 этапов, и рассмат- риваются наиболее важные аспекты каждого этапа. Цель создаваемой экспертной системы — выработать финансовую стратегию, которая больше всего подходит указанной возрастной группе. Представление фактов и правил предметной области Определив цель, приступим к следующему шагу — нужно органи- зовать или разделить данные на несколько первичных, но независи- мых друг от друга категорий. К первой категории можно отнести возрастные группы. Такое разделение позволит механизму вывода не рассматривать не относящиеся к делу категории. Например, разделяя базу знаний системы на возрастные группы, можно исключить те, в которые не входит человек, чьи финансовые нужды рассматриваются экспертной системой в какой-то момент времени. Скажем, если че- ловеку 50 лет, система не будет рассматривать данные в базе знаний, относящиеся к возрасту от 18 до 24 лет. Пользуясь возрастной класси- фикацией Г.Вейнстена, выделим следующие возрастные группы: от 18 до 24 лет (юношеский возраст); от 25 до 45 лет (молодость); от 46 до 64 лет (зрелость); от 65 лет (пожилой возраст); Здесь представлены 4 возрастные группы. Для каждой возрастной группы надо определить, куда вкладывать деньги. Какие же факты связаны с каждой группой ? Зная цель, можно отобрать нужные факты. По материалам исследования выполняется систематизация всей со- бранной из различных источников информации. Перечислим эти факты. Факты для первой возрастной группы (от 18 до 24 лет) приводятся в соответствии с некоторой таксономией, или классификацией отдельных объектов в систему. А. Возраст от 18 до 24 А. 1. Выбор профессии А.2. Подготовка к поступлению в колледж или институт
115 ЭКСПЕРТНАЯ СИСТЕМА ФИНАНСОВОГО ПЛАНИРОВАНИЯ А.З. Поступление в колледж или институт А.4. Выработка планов на будущее А.4.1. Одинокий человек А.4.1.1. Разработка плана сбережений денег на личные нужды А.4.1.2. Определение суммы кредита А.4.1.3. Разработка системы ведения финансовых документов А.4.2. Семья без детей А.4.2.1. Выработка планов экономии денег для совместных целей А.4.2.2. Определение суммы кредита А.4.2.3. Разработка системы ведения финансовых документов А.4.2.4. Планирование жилищных условий А.4.3. Семья с детьми А.4.3.1. Выработка планов экономии денег с учетом нужд детей 4.3.2. Определение суммы кредита для вкладов в будущем А.4.3.3. Разработка системы ведения финансовых документов А.4.3.4. Планирование жилищных условий Давайте ненадолго отвлечемся и подробнее разберем приведенную выше запись. Числа, стоящие слева от фактов, служат для выделения категорий и подпунктов. Например, раздел «Выработка планов на бу- дущее» имеет номер А.4 и все подпункты, относящиеся к этому пункту, нумеруются А.4.1, А.4.2 и.т.д. Раздел «Определение суммы кредита» стоит под номером А.4.1.2, он является следующим подпунктом в иерархии А.4.1 «Одинокий человек» и А.4 «Выработка планов на буду- щее». Запись с такой нумерацией, или таксономия, ниже будет исполь- зоваться при создании дерева решений. Перейдем к другой возрастной группе: от 25 до 45 лет. Какие факты связаны с этой группой ? Именно в этой возрастной группе происходит воплощение большинства планов в жизнь, так как в эти годы утверж- дается образ жизни взрослого человека. Это период воспитания детей, оплаты их образования и улучшения жилищных условий. В данный период жизни возрастают доходы и нужно делать различные вклады. Поэтому этой возрастной группе будет уделено наибольшее внимание. Сначала разделим ее на четыре категории по образу жизни. Затем для каждой категории приведем характерные факты. Факты классифици- руются следующим образом: Б. Возраст от 25 до 45 лет Б. 1. Одинокий человек Б. 1.1. Задачи роста профессионального мастерства Б. 1.2. Вклад для увеличения капитала Б. 1.2.1. Приобретение акций Б. 1.2.2. Краткосрочные вклады в ценные бумаги Б. 1.2.3. Облигации Б. 1.3. Планирование вклада на покупку жилья — квартиры, совладения (кондоминимума) или маленького дома Б.2.Два человека, живущих вместе
ЭКСПЕРТНЫЕ СИСТЕМЫ: ЗНАНИЯ ПЛЮС ЛОГИЧЕСКИЙ ВЫВОД 116 Б.2.1. Задачи роста профессионального мастерства Б.2.2. Вклады для увеличения капитала Б.2.2.1. Объединение счетов Б.2.2.2. Разделение счетов Б.2.3. Планирование вклада на покупку жилья—квартиры, совладения (кондоминимума) или маленького дома Б.2.3.1. Общая собственность Б.2.3.1.1. Заключение разумных контрактов Б.2.3.1.2. Составление долговых обязательств и доверенностей Б.З. Семья без детей Б.3.1. Поиск средств для содержания бывшей супруги Б.3.2. Вклады для увеличения капитала Б.3.2.1. Получение кредита для новых покупок Б.3.2.2. Страхование (дополнительную страховку получают в случае смерти супруга и т.п.) Б.3.3. Намерения относительно дома Б.3.3.1. Решение вопроса, кому из бывших супругов достанется дом Б.3.3.2. Рассмотрение возможности продажи дома Б.4. Семья с детьми Б.4.1. Покрытие расходов на рождение и воспитание ребенка Б.4.1.1. Страхование на медицинское обслуживаш е (статистические данные 1982 г. показали, что роды стоят от 3 до 4 тыс. долл.) Б.4.1.2. Определение суммы расходов на воспитание ребенка (сумма зависит от того работает ли мать) Б.4.2. Расходы на содержание жилья Б.4.2.1. Квартира - не меняющаяся плата (самые рациональные расходы) Б.4.2.2. Собственный дом - больше места, удержание налогов Б.4.2.2.1. Выяснение вопросов, связанных с платой за обучение Б.4.2.2.2. Оценка суммы налогов и цен Б.4.3. Увеличение суммы страховки для компенсации роста цен Б.4.3.1. Необходимо работать обоим супругам, для вза>??4ной подстраховки Б.4.3.2. Приобретение страховки жизни, которую потом можно истратить на оплату обучения детей в колледже Б.4.3.3. Выплачивание страховки на пенсионное обеспечение Б.4.4. Накопление средств на оплату обучения детей Б.4.4.1. Определение конкретных цен Б.4.4.2. Определить свой выбор в зависимости от доходов Б.4.4.2.1. Низкий доход - получение финансовой помощи Б.4.4.2.2. Средний доход Б.4.4.2.2.1. Планы экономии — ежемесячное выделение денег Б.4.4.2.2.2. Сокращение налогов Б.4.4.2.2.3. Заведение о тдельного счета на стипендию Б.4.4.2.2.4. Распределение доходов-разделениед доходов между членами семьи, имеющими меньший заработок
117 ЭКСПЕРТНАЯ СИСТЕМА ФИНАНСОВОГО ПЛАНИРОВАНИЯ Осталось рассмотреть две последние возрастные группы - от 46 до 64 лет и 65 лет и старше. Поскольку подробно рассматривается группа от 25 до 45 лет, для последних двух групп приводятся лишь некоторые факты. В. Возраст от 46 до 64 лет ВЛ. Продолжение карьеры В.2. Различные вклады B.3. Планирование В.4. Изучение Г. Возраст от 65 лет и старше Г. 1. Пересмотр бюджета в связи с уходом на пенсию Г.2. Откладывание части заработанных денег на пенсионное обеспечение Г.З. Составление завещания Для того чтобы читатель смог воспользоваться предложенной сис- темой при решении своих задач, он должен: 1) для создания базы знаний локализовать интересующую его об- ласть и тем самым конкретизировать свои цели; 2) углубить свои знания в этой области, подбирая и прорабатывая соответствующую литературу, консультируясь со специалистами, или использовать свои собственные соображения, если он хорошо знаком с предметом; 3) классифицировать собранную информацию и систематизиро- вать факты. В дальнейшем из систематизированных фактов будет создаваться дерево решений, необходимое для разработки базы знаний. Дерево решений Пока у нас есть только список систематизированных фактов (так- сономия фактов). Теперь необходимо создать дерево решений. Дерево решений (см. главу, описывающую обратную цепочку рассуждений) - это группа вопросов, имеющих отношение к фактам и составляющих путь. Можно пройти по дереву решений различными путями и тем самым исследовать разные комбинации фактов. Цель достигается в конце пути. Достижение цели по определенному пути означает, что найдено решение для составляющих путь фактов. Путь может развет- вляться, и, следовательно, может быть достигнуто несколько целей. Как показано на рис. 8.1, конец пути — это прямоугольник с текстом внутри, завершающий путь. Для примера взята часть уже известной таксономии, поскольку диаграмма полного дерева, включающего все возможные комбинации возрастных групп и частных решений внутри
ЭКСПЕРТНЫЕ СИСТЕМЫ: ЗНАНИЯ ПЛЮС ЛОГИЧЕСКИЙ ВЫВОД 118 этих групп, стишком сложна. Однако, освоив материал главы, чита- тель легко сможет построить все дерево решений. Давайте рассмотрим такие гипотетические случаи: одинокий чело- век и два человека, живущих вместе. Каким образом может одинокий человек в возрасте от 25 до 45 лет вкладывать свои деньга, чтобы его капитал рос ? Для лиц, относящихся к данной возрастной категории имеют значение денежный рынок (Б. 1.2.1), краткосрочные вклады в ценные бумаги (Б. 1.2.2) и облигации (Б. 1.2.3). Рис. 8.1. Дерево решений для финансового планирования
119 ЭКСПЕРТНАЯ СИСТЕМА ФИНАНСОВОГО ПЛАНИРОВАНИЯ Нужно придумать вопросы, которые помогут работать с фактами. Например, такие: 1. Сколько денег у человека? 2. Хочет ли человек держать деньги в банке ? 3. Хочет ли человек иметь возможность быстро получить деньги или кладет их «а длительный период, чтобы накопить нужную сумму ? 4. Хочет ли человек обезопасить свои вложения ? Дерево решений, включающее факты и вопросы, с помощью кото- рых достигается поставленная цель, приведено на рис. 8.1. Заметим, что на рисунке есть незаконченные пути (оканчиваются многоточием). Они дают представление о том, как выглядит разветв- ленное дерево решений. Читатель может сам продолжить эти пути исходя из приведенного описания возрастных групп. Теперь рассмотрим второй вариант — два человека в возрасте от 25 до 45 лет, живущих вместе. Как такие люди будут решать проблему жилья? В разделе «Планирование вкладов на покупку жилья» (Б.2.3) перечислены покупка квартиры, совладения, личного дома (Б.2.3); общая собственность (Б.2.3.1); заключение разумных контрактов (Б.2.3.1.1); составление долговых обязательств и доверенностей (Б>2.3.1.2). Вопросы, имеющие отношение к этим фактам, формулиру- ются следующим образом: 1. Сколько денег у двух людей, живущих вместе ? 2. Хотят ли они приобрести активы ? 3. Хотят ли они иметь общую собственность ? Основная часть небольшого дерева решений представлена на рис.8.2. Разработав дерево решений, можно записать правила базы знаний. Для этого из дерева решений надо выделить все пути, ведущие к его завершающим вершинам. Завершающей называется вершина, из ко- торой не выходит ни одна ветвь; на рисунке такие вершины обознача- ются прямоугольниками. Каждая вершина дерева имеет свой номер. Путь к завершающей вершине 6 — «Денежный рынок» проходит через вершины 1,2,3,4 и 5. Правило для достижения вершины 6 можно запи- сать следующим образом: ЕСЛИ ВОЗРАСТ - (больше или равен) 25 И ВОЗРАСТ (меньше или равен) 45 И ОБРАЗ-ЖИЗНИ=ОДИНОКИЙ ЧЕЛОВЕК НАЛИЧНЫЕ-ДЕНЬГИ $10000 И СЧЕТ-В-БАНКЕ» ДА, (Вершина 1) (Вершина 1) (Вершина 2) (Вершина 3) (Вершина 4), ТО ВЛОЖЕНИЯ - ЧЕЛОВЕКА - ПРИОБРЕТЕНИЕ АКЦИЙ (Завершающая вершина 6)
ЭКСПЕРТНЫЕ СИСТЕМЫ: ЗНАНИЯ ПЛЮС ЛОГИЧЕСКИЙ ВЫВОД 120 Да Нет Да Нет Да Нет Да Да Нет У человека есть 10,000 долларов ? Хотят ли живущие вместе люди приобрести активы ? Человек живет один i Хотят ли живущие вместе люди приобрести активы ? Возраст 25-45 ? Человек жи- вет вместе с другим оди- ноким чело- веком ? Хочет че- ловек быс- тро получать деньги ? Хочет чело- век поло- жить деньги в банк ? Хотят ли жи- вущие вместе люди приобре- сти собствен- Хотят ли жи- вущие вместе люди приобре- сти собствен- ный дом ? 0 Могут ли живу- щие вместе лю- ди, объединив усилия сде- лать, первый взнос ? 12 Нет Нет ный дом ? 10 Приобре- сти акции 7 Делать крат- косрочные вклады в цен- ные бумаги и облигации 6 Да Нет Да Да Хотят ли жи- вущие вместе люди иметь общую собст- венность ? Покупка недорогого дома.Заключение разумных контрактов 13 Рис.8.2. Основная часть дерева решений
121 ЭКСПЕРТНАЯ СИСТЕМА ФИНАНСОВОГО ПЛАНИРОВАНИЯ При записи правил используются имена переменных, например СЧЕТ-В-БАНКЕ. Надо помнить, что эти имена во всех правилах дол- жны быть согласованы. Так, правило, приводящее к завершающей вершине 13 через вершины 1,2,8,9,10,11 и 12 записывается следующим образом: ЕСЛИ ВОЗРАСТ - (больше или равен) 25 И ВОЗРАСТ (меньше или равен) 45 И ОБРАЗ-ЖИЗНИ-ДВА ЧЕЛОВЕКА, ЖИВУЩИХ ВМЕСТЕ, ЧЕЛОВЕК-ПОКУПАЕТ-АКТИВЫ-ДА И ЧЕЛОВЕК-ХОЧЕТСОБСТВЕННЫЙ-ДОМ-ДА И ЧЕЛОВЕК-ХОЧЕТ-ОБЩУЮ-СОБСТВЕННОСТЬ И ЧЕЛОВЕК-ВНЕС-ПЕРВЫЙ-ВЗНОС-ДА, (Вершина 1) (Вершина 1) (Вершина 2 и 8) (Вершина 9) (Вершина 10) (Вершина 11) (Вершина 12) ТО ВЛОЖЕНИЯ-ЧЕЛОВЕКА-НЕДОРОГОЙ ДОМ И ЗАКЛЮЧЕНИЕ РАЗУМНОГО КОНТРАКТА Обратная и прямая цепочки рассуждений После того как правила сформулированы и записаны, их можно поместить в базы знаний систем, реализующих обратную и прямую цепочки рассуждений. Воспользуемся обратной цепочкой рассужде- ний, чтобы проверить, подходит ли определенная финансовая страте- гия (цель) конкретному человеку. Цель уже выбрана - найти приемлемый вид вклада наличных денег для увеличения капитала (имя переменной ВЛОЖЕНИЯ-ЧЕЛОВЕКА). После конкретизации цели надо найти правило, в части ТО которого впервые упоминается имя выбранной переменной. В нашем примере для одинокого человека рассматривается правило, имеющее отношение к имени переменной ВЛОЖЕНИЯ-ЧЕЛОВЕКА: ЕСЛИ человеку от 25 до 45 лет и он живет один и имеет больше 10,000 долл, наличными и хочет иметь счет в банке и возможность быстро получить деньги, ТО ВЛОЖЕНИЯ-ЧЕ- ЛОВЕКА в приобретение акций. В части ЕСЛИ правила содержатся переменные условия, значения которых нельзя определить, обратив- шись к частям ТО других правил (т.е. они не являются переменными логического вывода других правил). Это означает, что значения пере- менным присваиваются в процессе диалога пользователя и системы, например: Человеку больше 25 лет ? Человеку меньше 45 лет ? Человек живет один ? У человека наличных денег больше 10,000 долларов ?
ЭКСПЕРТНЫЕ СИСТЕМЫ: ЗНАНИЯ ПЛЮС ЛОГИЧЕСКИЙ ВЫВОД 122 Человек хочет иметь счет в банке ? Человек хочет иметь возможность быстро получить деньги ? На каждый вопрос надо получить ответ (да или нет). После ответов на все вопросы переменным будут присвоены значения (т.е. перемен- ные будут проинициализированы). Если на какой-либо из этих вопро- сов дан отрицательный ответ, правило можно не рассматривать (оно ложно) и надо искать другое, содержащее в качестве цели переменную логического вывода ВЛОЖЕНИЯ-ЧЕЛОВЕКА. В этом примере друго- го правила с такой целью нет, т.е. поиск закончен. Другими словами, данному человеку не подходит предложенный вид вложения денег. Однако в больших системах может существовать несколько правил с одинаковой целью. Если же на все вопросы дан положительный ответ, то пользователь может принять к сведению, что ему необходимо вложить капитал в акции. Система, реализующая прямую цепочку рассуждений, вместо то- го, чтобы прийти к уже известному выводу, попытается выработать для человека, в зависимости от его возраста, образа жизни и т.д., финансо- вую стратегию. Для этого ей необходимо знать значения переменных в частях ЕСЛИ правил, чтобы затем выбрать соответствующую часть ТО какого-то правила. Например, надо определить финансовую стра- тегию человека 42 лет, живущего с другим одиноким человеком и думающего о покупке дома. В этом случае система может задать такие вопросы: Человеку больше 25 лет ? Человеку меньше 45 лет ? Человек живет вместе с другим одиноким человеком ? Человек хочет приобрести активы ? Человек хочет приобрести дом ? Человек хочет объединить собственность ? Человек может, объединив усилия, внести первый взнос ? Если для приведенного выше правила удовлетворяются все пере- численные условия, т.е. на все вопросы даны положительные ответы, то человеку будет предложено «Купить недорогой дом и заключить разумный контракт». Если на какой-либо из вопросов ответили отри- цательно, т.е. данное правило не срабатывает, надо искать другое пра- вило. Теперь читатель может приступить к разработке реальной системы финансового планирования.
123 ЭКСПЕРТНАЯ СИСТЕМА ФИНАНСОВОГО ПЛАНИРОВАНИЯ Программная реализация Правила для системы финансового планирования, полученные из дерева решений, можно вставить в системы, реализующие и прямую, и обратную цепочки рассуждений. Примеры программ таких систем приведены в предыдущих главах. В эти программы были включены примеры баз знаний, которые пользователь, конечно, должен заменить на базу знаний для финансового планирования. Рассмотрим замену базы знаний на примере правила: ЕСЛИ ВОЗРАСТ - (больше или равен) 25 И ВОЗРАСТ (меньше или равен) 45 И ОБРАЗ-ЖИЗНИ-ОДИНОКИЙ ЧЕЛОВЕК, НАЛИЧНЫЕ-ДЕНЬГИ $1000 И СЧЕТ-В-БАНКЕ-ДА, ТО ВЛОЖЕНИЯ-ЧЕЛОВЕКА - ПРИОБРЕТЕНИЕ АКЦИЙ Первым делом надо ввести переменные для каждого условия пра- вила, например: AG — ВОЗРАСТ (символа $ нет, так как это числовая, а не символьная переменная) LF$ - ОБРАЗ ЖИЗНИ СА - НАЛИЧНЫЕ ДЕНЬГИ DE$ - ВКЛАД В БАНКЕ IN$ - ВЛОЖЕНИЯ ЧЕЛОВЕКА После этого в программах прямой или обратной цепочки рассужде- ний (листинги 5.1 и 6.1) надо заменить предложение 367 на 367 V$(l) -«AG*: V$(2)-’’LF":V$(3)-’’CA”:V$(4)-”DE” Это предложение заносит имена переменных условия в список пе- ременных. Теперь в базы знаний программ, реализующих как прямую, так и обратную цепочки (с предложения 1500), можно вставить прави- ло: 1500 IF (AGE-26) AND (AGE45) AND (ЕР$-’”ОДИНОКИЙ ЧЕЛОВЕК ”) THEN Т-1 1501 IF (Т-1) AND (СА10000) AND (ОЕ$-"ДА") THEN S-1 1502 RETURN В программе правило записано двумя предложениями, так как в некоторых реализациях языка Бейсик существует ограничение на дли- ну предложения, например 80 символов. Объединение условий двух предложений выполняется следующим образом: 1. Для того чтобы Т=1, все условия предложения 1500 должны быть истинны.
ЭКСПЕРТНЫЕ СИСТЕМЫ: ЗНАНИЯ ПЛЮС ЛОГИЧЕСКИЙ ВЫВОД 124 2. Для того чтобы S=l, должны быть истинны все условия предло- жения 1501, включая условие Т-1. 3. Таким образом, S=1 только в том случае, если истинны все пять условий правила. В программе, реализующей обратную цепочку рассуждений, пред- ложение 1510, записывается так: 1510 IN$-” ДЕНЕЖНЫЙ PBIHOK”:PR1NT TN-ДЕНЕЖНЫЙ РЫНОК ”:RETURN 1511 GOSUB 3100: RETURN Кроме того, должны быть заполнены соответствующие информа- ционные структуры программы. Для системы, реализующей обратную цепочку рассуждений, список переменных логического вывода должен содержать имя переменной IN$. Инициализация списка переменных логического вывод? выполняется в предложении 305: CL$(1)=”1N”. Не- обходимо также изменить предложения программы, начиная с 1700, выполняющие диалог для ввода значений переменных условия: 1700 INPUT’ВВЕДИТЕ ВОЗРАСТ'* ;AG:RETURN 1705 ШРиТ’ВВЕДИТЕ OFT АЗ ЖИЗНИ (НАПРИМЕР, ОДИНОКИЙ ЧЕЛОВЕК) ”;LF$ .RETURN 1710 ШРиТ ’ВВЕДИТЕ СУММУ НАЛИЧНЫХ ДЕНЕГ” ;CA:RETURN 1715 INPUT’’ХОЧЕТ ЛИ ЧЕЛОВЕК ИМЕТЬ СЧЕТ В БАНКЕ (ДА ИЛИ HET)”;DE$:RETURN В предложении 407 в любой из обсуждаемых программ должен формироваться список переменных условия. Программы, листинги ко- торых приведены в гл. 5 и 6, имеют ограничение на количество условий в правиле, не более четырех. В качестве упражнения предлагаем чита- телю изменить данные программы таким образом, чтобы список пере- менных условия содержал по 9 переменных для каждого правила, ввести правило в базы знаний обеих программ и выполнить их. ГЛАВА 9 ЭКСПЕРТНАЯ СИСТЕМА В ОБЛАСТИ ТОРГОВЛИ Успех любого торгового предприятия зависит от того, как хорошо будет продан товар — автомобиль, консультативные услуги, пшеница или страховые полисы. Отношение между продавцом и покупателем - основной элемент свободного рынка. Торговля ко всему прочему — еще и точная наука. Перед продавцом и покупателем стоят разные задачи. Очень важно знать индивидуальные особенности характера продавца
125 ЭКСПЕРТНАЯ СИСТЕМА В ОБЛАСТИ ТОРГОВЛИ и покупателя. При неудачном сочетании этих особенностей торговую сделку ждет крах, в противном случае покупатель может приобрести товар даже, если в нем нет необходимости. В торговле компьютеры часто рассматриваются как инструмент для решения таких задач, как ведение записей, сбор данных, получение статистической информации. На самом деле компьютеры могут помочь и в менее очевидных вещах, например при оценке влияния особенно- стей характеров на заключение торговой сделки. Ниже обсуждается разработка экспертной системы, оценивающей вероятность заключения торговой сделки в зависимости от особенно- стей характера продавца и покупателя. Подобная оценка может быть полезна продавцу при выборе определенного подхода к конкретному покупателю или при прогнозировании усилий, которые необходимы для того, чтобы сделка с определенной вероятностью была заключена. Ясно, что все типы человеческих характеров в экспертную систему заложить невозможно. Однако для экспертной системы достаточно только тех особенностей характера, которые существенны при обще- нии людей в процессе купли-продажи. Выделение фактов Прежде всего при создании экспертной системы, использующей индивидуальные особенности покупателя и продавца, необходимо со- брать все относящиеся к делу факты. Факты нужно разделить на две части. В первую войдут факты, относящиеся к индивидуальным осо- бенностям продавца, во вторую - покупателя. Для каждого типа харак- тера набор фактов должен быть заложен в экспертную систему, чтобы с ее помощью классифицировать продавцов и покупателей. Факты собираются в процессе исследования рынка, изучения объектов торгов- ли и индивидуальных особенностей продавцов и покупателей. Психологические типы продавцов Возьмем из литературы различные описания продавцов и разделим их на три группы. Каждая группа будет представлять некоторый пси- хологический тип: 1. Напористо-агрессивный. 2. Подчеркнуто любезный. 3. Самоуверенный. Ниже будут выделены наиболее характерные черты (атрибуты) каждого типа. Атрибуты могут иметь большее или меньшее значение.
ЭКСПЕРТНЫЕ СИСТЕМЫ: ЗНАНИЯ ПЛЮС ЛОГИЧЕСКИЙ ВЫВОД 126 В жизни одна и та же черта может принадлежать характерам различ- ных типов. Снабдим каждый факт идентифицирующим номером, что- бы в дальнейшем было проще на него ссылаться. Проставим справа для каждого факта значение весового фактора. Смысл весового фактора поясним позже. Психологический тип 1 — напористо-агрессивный 1 -1. Любит конкуренцию в продажах (5) 1 -2. Предлагает товар энергично и напористо (5) 1-3. Испытывает чувство собственного преимущества (5) 1-4. Не терпит неудач или потерь при продажах (10) 1-5. Честолюбив (2,5) 1-6. Полон решимости (2,5) Психологический тип 2 — подчеркнуто любезный 2-1. Не настойчив с покупателями (10) 2-2. Считает, что самое лучшее нападение - это хорошая защита (5) 2-3. В работе стремится избегать осложнений (5) 2-4. Демонстрирует сердечность и доброту (5) 2-5. Пытается со всеми соглашаться (2,5) 2-6. Стремится быть полезным (2,5) Психологический тип 3 — самоуверенный 3-1. Любит конкуренцию в продажах (2,5) 3-2. Легко принимает решения (5) 3-3. Открыт и честен с коллегами и покупателями (10) 3-5. Предлагает товар энергично и напористо (5) 3-6. Прислушивается к чужому мнению (5) Для простоты и ясности изложения разработки подобных систем для каждого типа выбрано только шесть атрибутов. В действительности их гораздо больше. Инициализация фактов Теперь необходимо составить ряд вопросов, ответы на которые дадут значения атрибутов. Это могут быть такие вопросы: Любите ли вы конкурировать в продажах ? Предлагаете ли вы товар энергично и напористо ? Испытываете ли вы чувство собственного преимущества ? Вы не терпите неудач или потерь при продажах ? Честолюбивы ли вы? Полны ли вы решимости ? Вы не настойчивы с покупателями ?
127 ЭКСПЕРТНАЯ СИСТЕМА В ОБЛАСТИ ТОРГОВЛИ Считаете ли вы, что самое лучшее нападение — это хорошая защи- та ? Стремитесь ли вы в работе избежать осложнений ? Демонстрируете ли вы сердечность и доброту ? Пытаетесь ли вы со всем соглашаться ? Легко ли вы принимаете решения ? Стремитесь ли вы быть полезным покупателю? Честны и открыты ли вы с коллегами и покупателями ? Прислушиваетесь ли вы к чужому мнению ? Весовые факторы При классификации людей по психологическим типам одни черты характера (атрибуты) важнее других. Например, для напористо-агрес- сивного психологического типа атрибут «Не терпит неудач или потерь при продажах» (М) важнее атрибута «Полон решимости» (1-6). Что это значит ? Человек, не терпящий неудач или потерь при продажах, с большим правом может быть отнесен к напористо-агрессивному типу, чем человек, полный решимости. Каждый атрибут отмасштабирован согласно шкале важности от 1 до 10. Чем больше число, тем важнее атрибут. Эти числа и называются весовыми факторами. Поэтому атри- бут «Не терпит неудач или потерь при продажах», имеющий весовой фактор 10, важнее атрибута «Полон решимости», имеющего весовой фактор 2,5. Использование весовых факторов Если при инициализации фактов на вопрос отвечают утвердитель- но, то факт, представленный этим вопросом, принимает значение «ДА». Для каждого психологического типа (исходя из предположения, что все факты имеют значение «ДА») можно просуммировать веса всех фактов и получить максимальный общий весовой фактор. Максималь- ный общий весовой фактор для каждого психологического типа продав- ца равен 30. Так, для напористо-агрессивного типа: 5+5+5+10+2,5+2,5«30. Пример работы системы Поясним вышесказанное на примере. Представим, что продавец — пользователь экспертной системы сидит за компьютером и отвечает на вопросы. Ответы пользователя приводятся после знака вопроса. 1-17. Любите ли вы конкурировать в продажах ? ДА
ЭКСПЕРТНЫЕ СИСТЕМЫ: ЗНАНИЯ ПЛЮС ЛОГИЧЕСКИЙ ВЫВОД 128 1 -2. Предлагаете ли вы товар энергично и напористо ? ДА 1 -3. Испытываете ли вы чувство собственного преимущества ? НЕТ 1 -4. Вы не терпите неудач или потерь при продажах ? ДА 1 -5. Честолюбивы ли вы? НЕТ 1 -6. Полны ли вы решимости ? НЕТ 2-1. Вы не настойчивы с покупателями ? НЕТ 2-2. Считаете ли вы, что самое лучшее нападение — это хорошая защита ? НЕТ 2-3. Стремитесь ли вы в работе избежать осложнений ? НЕТ 2-4. Демонстрируете ли вы сердечность и доброту ? НЕТ 2-5. Пытаетесь ли вы со всеми соглашаться ? ДА 2-6. Стремитесь ли вы быть полезным покупателю? НЕТ 3-2. Легко ли вы принимаете решения ? ДА 3-3. Честны и открыты ли вы с коллегами и покупателями ? НЕТ 3-6. Прислушиваетесь ли вы к чужому мнению ? НЕТ Для фактов 3-1 и 1-1 вопрос был бы одним и тем же, поэтому он не повторяется, но следует помнить, что весовой фактор факта 1-1 равен 5, а факта 3-1 — только 2,5. Относительная важность факта зависит от психологического типа, к которому он относится. Сказанное также касается фактов 3-4 и 3-5. Данные для них берутся из ответов на вопросы 1-5 и 1-2 соответственно. В табл. 9.1 приведены значения для всех фактов и общие весовые факторы для каждого психологического типа, Человеческие характеры, как правило, не так ярко выражены, чтобы заключать в себе черты только одного психологического типа. Обычно в них соединены свойства различных психологических типов. Характеров очень много, но разные характеры могут иметь некоторые одинаковые черты. Простая экспертная система в нашем примере ох- ватывает лишь малую часть человеческих характеров. Пусть в результате опроса вырисовывается такой характер: Любит конкурировать в продажах (типы 1 и 3). Предлагает товар энергично и напористо (типы 1 и 3). Не терпит неудач или потерь при продажах (тип 1). Пытается со всеми соглашаться (тип 2). Легко принимает решения (тип 3). Определение психологического типа продавца Из табицы видно, что сумма весовых факторов равна 35,0: Тип 1. Напористо-агрессивный 20,09 Тип 2. Подчеркнутол юбезный 2,5 Тип 3. Самоуверенны 12,5 Всего 35,0
129 ЭКСПЕРТНАЯ СИСТЕМА В ОБЛАСТИ ТОРГОВЛИ Таблица 9.1 Результаты работы экспертной системы приклассификации продавцов Атрибут психологичес- кого типа Ответ на вопрос Весовой фактор Напористо-агрессивный 1-1 ДА 5,0 1-2 ДА 5,0 1-3 НЕТ 0 1-4 ДА 10,0 1-5 НЕТ 0 1-6 НЕТ 0 Общий весовой фактор 20,0 Подчеркнуто любезный 2-1 НЕТ 0 2-2 НЕТ 0 2-3 НЕТ 0 2-4 НЕТ 0 2-5 ДА 2,5 2-6 НЕТ 0 Общий весовой фактор 2,5 Самоуверенный 3-1 ДА 2,5 3-2 ДА 5,0 3-3 НЕТ 0 3-4 НЕТ 0 3-5 ДА 5,0 3-6 НЕТ 0 Общий весовой фактор 12,5 Из таблицы видно, что продавец может обладать чертами, относя- щимися к различным психологическим типам. Чем выше общий весо- вой фактор, тем ближе характер продавца к соответствующему типу. В примере характер продавца ближе к напористо-агрессивному типу (весовой фактор 20,0), чем к подчеркнуто любезному (весовой фактор 2,5). Если бы приходилось выбирать только между этими двумя психо- логическими типами, можно было бы сказать, что вероятность принад- лежности характера продавца к напористо-агрессивному типу равна 20,0 деленное на 22,5 (сумма обоих общих весовых факторов). В дей- 5 Заказ № 476
ЭКСПЕРТНЫЕ СИСТЕМЫ: ЗНАНИЯ ПЛЮС ЛОГИЧЕСКИЙ ВЫВОД 130 ствительности было бы проведено сравнение двух психологических типов, которое достигается сравнением конкретного общего весового фактора с суммой весовых факторов для обоих типов. В приведенном примере — 3 психологических типа. Описанный подход справедлив и здесь. Вероятность принадлежности характера продавца к каждому из психологических типов может быть подсчитана по формуле: Общий весовой фактор для психологического типа ВЕР —, Сумма всех общих весовых факторов по трем психологическим типам Подставляя эту формулу получим: ВЕР 1-20/35-0,571 -57,1 % ВЕР 2-2,5/35-0,071 -7,1 %, ВЕР 3 - 12,5/35 - 0,357 -. 35,7 % , В дальнейшем эти значения и аналогичные величины для покупа- телей могут использоваться для определения вероятности успешного проведения торговой сделки. Психологические типы покупателей Рассмотрим теперь психологические типы покупателей. Опять возьмем все необходимые данные из литературы и для простоты огра- ничимся четырьмя фактами для каждого типа. Как и раньше, значения весовых факторов для каждого факта приводятся справа в скобках: Психологический тип 1 — Руководствуется независимостью и самоуважением 1 -1. В разговоре говорит в основном о себе (5) 1-2. Хвастлив и самовлюблен (3) 1 -3. Мнением продавца не интересуется (2) 1 -4. Считает, что знает больше других (5) Психологический тип 2 — Руководствуется осторожностью 2-1. Осмотрителен (5) 2-2. Нерешителен (5) 2-3. Не стремится поделиться информацией (3) 2-4. Скрывает свое мнение и чувства (2) Психологический тип 3 — Руководствуется суждениями окружающих 3-1. Уступчив (5) 3-2. Послушен (5) 3-3. Уклоняется от споров (2) 3-4. Приятный, общительный, симпатичный (3) Психологический тип 4 — Руководствуется независимостью и самоутверждением
131 ЭКСПЕРТНАЯ СИСТЕМА В ОБЛАСТИ ТОРГОВЛИ 4-1. Тщательно осматривает товар (5) 4-2. Свободно излагает свои идеи и суждения (2) 4-3. Стремится выйти из затруднения, принимая решения вместе с продавцом (3) 4-4. Обладает гибкостью (5) Максимальный общий весовой фактор для каждого психологиче- ского типа равен 15. Исходя из своих впечатлений о каждом покупателе продавец должен ответить на следующие вопросы: 1 -1. Говорит ли покупатель в основном о себе ? 1-2. Хвастлив и самовлюблен ли покупатель ? 1 -3. Покупатель не интересуется мнением продавца ? 1 -4. Считает ли покупатель, что знает больше других ? 2-1. Осмотрителен ли покупатель ? 2-2. Нерешителен ли покупатель ? 2-3. Покупатель не стремится делиться информацией ? 2-4. Скрывает ли покупатель свое мнение и чувства ? 3-1. Уступчив ли покупатель ? 3-2. Послушен ли покупатель ? 3-3. Уклоняется ли покупатель от споров ? 3-4. Покупатель приятен, общителен и симпатичен ? 4-1. Тщательно ли покупатель осматривает товар ? 4-2. Свободно ли покупатель излагает свои идеи и суждения? 4-3. Стремится ли покупатель выйти из затруднения, принимая решения вместе с продавцом ? 4-4. Обладает ли покупатель гибкостью ? Как и в случае с продавцом, вопросы нужны для того, чтобы при- своить фактам значения. Если на вопрос получен положительный от- вет, то в дальнейшем при работе принимается во внимание соответствующий весовой фактор. Весовые факторы для отрицатель- ных ответов во внимание не принимаются. В табл. 9.2 приведены ре- зультаты работы экспертной системы при классификации покупателей. Характеру конкретного покупателя могут быть присущи черты, свойственные различным психологическим типам. В примере исполь- зуются черты характера, относящиеся ко второму и третьему психоло- гическим типам. Пусть в результате опроса вырисовывается такой характер: Осмотрителен (тип 2) Нерешителен (тип 2) Уступчив (тип 3) Послушен (тип 3) 5*
ЭКСПЕРТНЫЕ СИСТЕМЫ: ЗНАНИЯ ПЛЮС ЛОГИЧЕСКИЙ ВЫВОД 132 Уклоняется от споров (тип 3) Приятный, общительный, симпатичный (тип 3) Таблица 9.2 Результаты работы экспертной системы при классификации покупателей Атрибут психологического типа Ответ на вопрос Весовой фактор Тип покупателя 1 1-1 НЕТ 0 1-2 НЕТ 0 1-3 НЕТ 0 1-4 НЕТ 0 Общий весовой фактор Тип покупателя 2 0 2-1 ДА 5 2-2 ДА 5 2-3 НЕТ 0 2-4 НЕТ 0 Общий весовой фактор 10 Тип покупателя 3 3-1 ДА 5 3-2 ДА 5 3-3 ДА 2 3-4 ДА 3 Общий весовой фактор Тип покупателя 4 15 4-1 НЕТ 0 4-2 НЕТ 0 4-3 НЕТ 0 4-4 НЕТ 0 Общий весовой фактор 0 J i £ Определение психологического типа покупателя Найдем сумму общих весовых факторов по всем психологическим типам покупателей:
133 ЭКСПЕРТНАЯ СИСТЕМА В ОБЛАСТИ ТОРГОВЛИ Тип покупателя! Руководствуется независимостьюи самоуважением О Тип покупателя 2. Руководствуется осторожностью 10 Тип покупателя 3. Руководствуется мнением окружающих 15 Тип покупателя 4. Руководствуется независимостью и самоутверждением 0 Всего И далее используя формулу Общий весовой фактор Сумма всех общих весовых факторов можно вычислить вероятность принадлежности покупателя к опреде- ленному психологическому типу: ВЕР 1 -0/25 - 0,00 - 0%; ВЕР 2 - 10/25 - 0,40 - 40 % ; ВЕР 3 - 15/25 - 0,60 - 60 %; ВЕР 4 - 0/25 - 0,00 - 0%; Оценка возможных сочетаний психологических типов продавцов и покупателей Теперь, когда получены вероятности принадлежности продавцов и покупателей к определенным психологическим типам, можно найти вероятности сочетания различных типов продавцов и покупателей. Для примера лучше всего подойдет первый психологический тип про- давца и третий тип покупателя. Но что будет, если значения вероятно- стей близки друг другу или, наоборот, сильно различаются ? В этом случае нужно рассмотреть все вероятности, чтобы дать возможность пользователю экспертной системы принять окончательное решение. Вычислим сначала вероятность всех сочетаний типов продавцов и по- купателей. Для этого перемножим вероятности принадлежности про- давцов и покупателей различным психологическим типам для всех комбинаций. Обычно в теории вероятностей, если события независимы и нужно получить вероятность одновременного появления обоих собы- тий, она вычисляется как произведение вероятностей появления пер- вого и второго событий. Сведем вычисления в табл. 9.3. Таблица 9.3 Вероятность сочетания Тип продавца Тип покупателя Вероятность для продавца Вероятность для покупателя Вероятность сочетания 1 1 0.571 0 0 1 2 0.571 0.4 0.2284 1 3 0.571 0.6 0.3426
ЭКСПЕРТНЫЕ СИСТЕМЫ: ЗНАНИЯ ПЛЮС ЛОГИЧЕСКИЙ ВЫВОД 134 Продолжение Тип продавца Тип покупателя Вероятность для продавца Вероятность для покупателя Вероятность сочетания 1 4 0.571 0 0 2 1 0.071 0 0 2 2 0.071 0.4 0.0284 2 3 0.071 0.6 0.0426 2 4 0.071 0 0 3 1 0.355 0 0 3 2 0.357 0.4 0.1428 3 3 0.357 0.6 0.2142 3 4 0.357 0 0 Пользователь экспертной системы должен изучить вероятности сочетаний, чтобы определить, какие существуют типы продавцов и покупателей, и принять соответствующее решение. Работа экспертной системы Возможно, пользователь экспертной системы захочет оценить, что произойдет, если встретятся продавец и покупатель, относящиеся к различным психологическим типам. Поскольку самая большая вероят- ность сочетания продавца первого типа с покупателем третьего, поль- зователю будет интересно узнать, каковы результаты встречи. Для этой комбинации экспертная система может выдать, например следу- ющее: Результат сделки — успех выше среднего, продавец доминирует над покупателем, покупатель принимает предложения продавца. Такая оценка экспертной системы основывается на заложенных в нее человеком-экспертом суждениях о различных комбинациях типов продавцов и покупателей. Ниже приведены выводы экспертной систе- мы для различных сочетаний психологических типов продавцов (ПР) и покупателей (ПК). ПР 1 и ПК 1 Результат продажи — средний; высокое взаимноеу важение ПР 1 и ПК 2 и соперничество Результат продажи — ниже среднего; продавецп резирает ПР 1 и ПК 3 покупателя и тот отказывается от покупки Результат продажи — выше среднего, продавец доминирует над покупателем, покупательп ринимает предложения про- давца ПР 1 и ПК 4 Результат продажи — средний; продавец относится к поку- пателю с уважением, но тот ему не доверяет
135 ЭКСПЕРТНАЯ СИСТЕМА В ОБЛАСТИ ТОРГОВЛИ ПР 2 и ПК 1 Результат продажи — ниже среднего; продавец отказывает покупателю, но покупатель ведет себя сдержано; нет взаим- ного уважения ПР 2 и ПК 2 Результат продажи — ниже среднего; и продавец и покупа- тель отказываются от сделки, разругавшись ПР 2 и ПК 3 Результат продажи — средний; продавец к покупателю без- ПР 2 и ПК 4 различен, а покупатель выглядит смешно и напряженно Результат продажи — ниже среднего; продавец равнодушен к покупателю; покупатель стремится получить дополнитель- ную информацию и испытывает к продавцу смешанные чув- ства ПР 3 и ПК 1 ПР 3 и ПК 2 Результат продажи — средний; высокое взаимное уважение Результат продажи — средний; быстро устанавливается вза- имопонимание; продавец внимателен и, покупатель ему до- ПР 3 и ПК 3 веряет Результат продажи — выше среднего; продавец понимает запросы покупателя, и покупатель платит ему взаимностью ПР 3 и ПК 4 Результат продажи — выше среднего; полное взаимопонима- ние , чувствуют себя партнерами /высокое взаимное уважение Кратко опишем основные шаги разработки экспертной системы. 1. Исследования и организация сбора информации. 2. Деление информации на категории и классификация фактов в соответствии с этими категориями. 3. Подготовка вопросов для получения данных по каждому факту. 4. Выбор весовых факторов. 5. Вычисление общего весового фактора. 6. Оценка вероятностей по весовым факторам. 7. Вычисление вероятностей сочетания различных психологиче- ских типов. 8. Стратегическое прогнозирование, основанное на принятом ре- шении. Описание подхода к разработке экспертной системы в области торг- овли закончено. Читатель может развить эту систему или создать ана- логичную. Пример программы Программа на Бейсике, реализующая описанный подход, приведе- на в листинге 9.1. В ней используются весовые факторы и вероятности для рассмотренных психологичских типов продавцов и покупателей. Пояснения к программе Программу можно разделить на четыре части:
ЭКСПЕРТНЫЕ СИСТЕМЫ: ЗНАНИЯ ПЛЮС ЛОГИЧЕСКИЙ ВЫВОД 136 1) инициализация; 2) получение данных по психологическим типам продавцов и их анализ; 3) получение данных по психологическим типам покупателей и их анализ: 4) анализ сочетаний типов продавцов и покупателей. Листинг программы Листинг 9.1 1 REM ♦♦♦**♦♦♦ ЭКСПЕРТНАЯ СИСТЕМА ТОРГОВОГО БИЗНЕСА ♦♦♦♦♦♦♦* 5 REM ♦♦*********•**♦•»••♦♦♦♦**♦*♦♦♦♦*♦*♦♦*♦•*♦*♦*****♦*♦*♦ 10 REM »•* БЛОК ИНИЦИАЛИЗАЦИИ 15 REM НАЗВАНИЕ ПСИХОЛОГИЧЕСКОГО ТИПА ПРОДАВЦА 20 DIM S$(3) 25 S$( 1ННАПОРИСТО-АГРЕССИВНЫЙ" 30 8$(2)-”ПОДЧЕРКНУТО ЛЮБЕЗНЫЙ” 35 8$(3)-"САМОУВЕРЕННЫЙ" 40 REM НАЗВАНИЕ ПСИХОЛОГИЧЕСКОГО ТИПА ПОКУПАТЕЛЯ 45 DIM С$ (4) 50 С$(1 )-'РУКОВОДСТВУЕТСЯ НЕЗАВИСИМОСТЬЮ И САМОУВАЖЕНИЕМ" 55 С$(2)-"РУКОВОДСТВУЕТСЯ ОСТОРОЖНОСТЬЮ" 60 С$(3)-"РУКОВОДСТВУЕТСЯ МНЕНИЕМ ОКРУЖАЮЩИХ- 65 С$(4)-”РУКОВОДСТВУЕТСЯ НЕЗАВИСИМОСТЬЮ И САМОУТВЕРЖДЕНИЕМ" 70 REM МАССИВ ОБЩИХ ВЕСОВЫХ ФАКТОРОВ ДЛЯ ПРОДАВЦА 75 DIM SW(3) 80 REM МАССИВ ОБЩИХ ВЕСОВЫХ ФАКТОРОВ ДЛЯ ПОКУПАТЕЛЯ 85 DIM CW(4) 90 REM ВЕСОВЫЕ ФАКТОРЫ ПРОДАВЦОВ 95DIMSFO8) 100 SF(l)-5:SF(2)-5:SF(3)-5:SF(4)-10:SF(5)“2-5:SF(6)-2-5 105 SF(7)-10:SF(8)-5:SF(9)-5:SF(10)-5:SF(l l)-2-5:SF(12)2-5 110 SF(13)-2-5:SF(14)-5:SF(15)-10:SF(16)-2-5:SF(17)-5:SF(18)“5 115 REM ВЕСОВЫЕ ФАКТОРЫ ДЛЯ ПОКУПАТЕЛЕЙ 120 DIM CFO 6) 125 CF( 1 )-5:CF(2)-3:CF(3)-2:CF(4)-5 130 CF(5)-5:CF(6)-5:CF(7)-3:CF(8)-2 135 CF(9)-5:CF(10)-5:CF( 11 )-2:CF( 12) -3 140 CF( 13)-5:CF( 14)-2:CF( 15)-3:CF( 16)-5 145 REM ************************************************ 150 REM ******* БЛОК ПОЛУЧЕНИЯ ДАННЫХ ****************** 155 DIM A$(20): REM МАССИВ ОТВЕТОВ 160 REM ************ ДАННЫЕ О ПРОДАВЦЕ 162 PRINT"**** ДАННЫЕ О ПРОДАВЦЕ ♦***" 165 INPUT "ЛЮБИТЕ КОНКУРИРОВАТЬ В ПРОДАЖАХ" ;А$ (1) 170 INPUT "ПРЕДЛАГАЕТЕ ТОВАР ЭНЕРГИЧНО И НАПОРИСТО";А$(2) 175 INPUT "ИСПЫТЫВАЕТЕ ЧУВСТВО СОБСТВЕННОГО ПРЕИМУЩЕСТВА"; А$ (3) 180 INPUT "НЕ ТЕРПИТЕ НЕУДАЧ ИЛИ ПОТЕРЬ ПРИ ПРОДАЖАХ";А$ (4) 185 PRINT "ЧЕСТОЛЮБИВЫ ЛИВЫ?
137 ЭКСПЕРТНАЯ СИСТЕМА В ОБЛАСТИ ТОРГОВЛИ 190 INPUT А$<5> 195 INPUT "ПОЛНЫ РЕШИМОСТИ *А$ (6) 200 INPUT “НЕ НАСТОЙЧИВЫ С ПОКУПАТЕЛЕМ";А$(7) 205 INPUT “СЧИТАЕТЕ, ЧТО ЛУЧШЕЕ НАПАДЕНИЕ- ЭТО ЗАЩИТА";А$(8) 210 PRINT “СТРЕМИТЕСЬ В РАБОТЕ ИЗБЕЖАТЬ" 215 INPUT “ОСЛОЖНЕНИЙ «;А$ (9) 220 INPUT "ДЕМОНСТРИРУЕТЕ СЕРДЕЧНОСТЬ И ДОБРОТУ";А$(Ю) 225 INPUT" ПЫТАЕТЕСЬ СО ВСЕМИ СОГЛАШАТЬСЯ"; А$ (11) 230 INPUT "СТРЕМИТЕСЬ БЫТЬ ПОЛЕЗНЫМ“;А$(12) 235 А$(13)-А$(1) 240 INPUT "ЛЕГКО ПРИНИМАЕТЕ РЕШЕНИЯ ";А$( 14) 245 INPUT "ЧЕСТНЫ И ОТКРЫТЫ С КОЛЛЕГАМИ И ПОКУПАТЕЛЯМИ";А$(15) 250 А$(16)-А$(5) 255 А$(17)-А$(2) 260 INPUT "ПРИНИМАЕТЕ ЧУЖОЕ МНЕНИЕ";А$(18) 265 REM ВЫЧИСЛЕНИЕ ОБЩЕГО ВЕСОВОГО ФАКТОРА И ВЕРОЯТНОСТИ 270 FOR 1-1 ТО 3.REM ВЫЧИСЛЕНИЕ ОБЩЕГО ВЕСОВОГО ФАКТОРА 275 S-0:REM ВРЕМЕННЫЙ ОБЩИЙ ВЕСОВОЙ ФАКТОР 280 FOR J-1 ТО 6 285K-(I-1)*6+J 290 IF A$(K)-”Y" THEN S-S+SF(K) 295 NEXT J 300 SW(I)-S 305 NEXT I 310 REM ВЫЧИСЛЕНИЕ ВЕРОЯТНОСТИ ПРИНАДЛЕЖНОСТИ К КОНКРЕТНОМУ ТИПУ 315 DIM PS(3) 320 S-SW(1)+SW(2)+SW(3):REM СУММА ОБЩИХ ВЕСОВЫХ ФАКТОРОВ 330 FOR 1-1 ТО 3:REM ПЕЧАТЬ РЕЗУЛЬТАТОВ 335 PRINT S$ (I) 340 PRINT "ОБЩИЙ ВЕСОВОЙ ФАКТОР ";SW(I) 345 PS(I)-SW(I)/S:PRINT"BEPORTHOCTb-";PS(I) 350 PRINT 355 NEXT I 500 REM *************************************************** 505 REM ******** ДАННЫЕ О ПОКУПАТЕЛЕ ♦»***»♦*♦•**♦*»***•**♦ 507 PRINT’**** ДАННЫЕ О ПОКУПАТЕЛЕ **♦*” 510 INPUT ГОВОРИТ ЛИ ПОКУПАТЕЛЬ В ОСНОВНОМ О СЕБЕ";А$(1) 515 ЩРиТ’ ХВАСТЛИВ И САМОВЛЮБЛЕН ЛИ ПОКУПАТЕЛЬ ";А$ (2) 520 INPUT " ПОКУПАТЕЛЬ НЕ ИНТЕРЕСУЕТСЯ МНЕНИЕМ ПРОДАВЦА" ;А$ (3) 525 INPUT" СЧИТАЕТ ЛИ ПОКУПАТЕЛЬ, ЧТО ЗНАЕТ БОЛЬШЕ ВСЕХ";А$(4) 530 INPUT “ОСМОТРИТЕЛЕН ЛИ ПОКУПАТЕЛЬ ";А$ (5) 535 INPUT" НЕРЕШИТЕЛЕН ЛИ ПОКУПАТЕЛЬ ";А$ (6) 540 INPUT1'ПОКУПАТЕЛЬ НЕ СТРЕМИТСЯ ПОДЕЛИТЬСЯ ИНФОРМАЦИЕЙ";А$ (7) 545 INPUT" СКРЫВАЕТ ЛИ ПОКУПАТЕЛЬ СВОЕ МНЕНИЕ И ЧУВСТВА" ;А$(8) 550 INPUT "УСТУПЧИВ ЛИ ПОКУПАТЕЛЬ ";А$ (9) 555 INPUT" ПОСЛУШЕН ЛИ ПОКУПАТЕЛЬ" ;А$ (10) 560 INPUT "УКЛОНЯЕТСЯ ЛИ ПОКУПАТЕЛЬ ОТ СПОРОВ" ;А$ (11) 565 PRINT" ПОКУПАТЕЛЬ ПРИЯТЕН, ОБЩИТЕЛЕН " 570 INPUT" И СИМПАТИЧЕН ";А$( 12) 575 INPUT "ТЩАТЕЛЬНО ЛИ ОСМАТРИВАЕТ ТОВАР" ;А$ (13)
ЭКСПЕРТНЫЕ СИСТЕМЫ: ЗНАНИЯ ПЛЮС ЛОГИЧЕСКИЙ ВЫВОД 138 580 INPUT" СВОБОДНО ЛИ ПОКУПАТЕЛЬ ИЗЛАГАЕТ ИДЕИ И СУЖДЕНИЯ";А$(14) 585 PRINT" СТРЕМИТСЯ ЛИ ПОКУПАТЕЛЬ ВЫЙТИ ИЗ ЗАТРУДНЕНИЯ," 590 INPUT' ПРИНИМАЯ РЕШЕНИЯ ВМЕСТЕ С ПРОДАВЦОМ";А$( 15) 595 INPUT" ОБЛАДАЕТ ЛИ ПОКУПАТЕЛЬ ГИБКОСТЬЮ ?";А$ (16) 700 REM ВЫЧИСЛЕНИЕ ОБЩЕГО ВЕСОВОГО ФАКТОРА И ВЕРОЯТНОСТИ 705 FOR J-1 ТО 4 720K-(I-l)*4+J 725 IF A$(K)-”Y" THEN S-S+CF(K) 730 NEXT J 735 CW(I)-S 740 NEXT I„ „ 742 INPUT ;K$ 745 REM ВЫЧИСЛЕНИЕ ВЕРОЯТНОСТИ ПРИНАДЛЕЖНОСТИ К КОНКРЕТНОМУ ТИПУ 750 DIM PC (4) 755 S-CW(1)+CW(2)+CW(3):REM СУММА ОБЩИХ ВЕСОВЫХ ФАКТОРОВ 760 FOR 1-1 ТО 4:REM ПЕЧАТЬ РЕЗУЛЬТАТОВ 765 PRINT С$(1) 770 PRINT "ОБЩИЙ ВЕСОВОЙ ФАКТОР''С5¥(1) 775 PC(I)-CW(I)/S:PRINT"BEPO4THOCTb-";PC(I) 780 PRINT 785 NEXT I 900 REM ***************************** 905 REM ВЕРОЯТНОСТЬ СОЧЕТАНИЯ 910 FOR 1-1 TO 3 915 FOR J-1 TO 4 920 PRINT"! 1РОДАВЦЫ" ;1;"ПОКУПАТЕЛИ " ;J;''ВЕРОЯТНОСТИ''; PS(I)*PC(J) 925 NEXT J 930 INPUT "ДЛЯ ПРОДОЛЖЕНИЯ НАЖМИТЕ КЛАВИШУ ВК";К$ 935 NEXT I:STOP Пример выполнения программы RUN * *** ДАННЫЕ О ПРОДАВЦЕ **** ЛЮБИТЕ КОНКУРИРОВАТЬ В ПРОДАЖАХ ? Д ПРЕДЛАГАЕТЕ ТОВАР ЭНЕРГИЧНО И НАПОРИСТО ? Д ИСПЫТЫВАЕТЕ ЧУВСТВО СОБСТВЕННОГО ПРЕИМУЩЕСТВА ? Н НЕ ТЕРПИТЕ НЕУДАЧ ИЛИ ПОТЕРЬ В ПРОДАЖАХ ? Д ЧЕСТОЛЮБИВЫ ЛИ ВЫ? Н ПОЛНЫ РЕШИМОСТИ ? Н НЕ НАСТОЙЧИВЫ С ПОКУПАТЕЛЕМ ? Н СЧИТАЕТЕ, ЧТО ЛУЧШЕЕ НАПАДЕНИЕ - ЭТО ЗАЩИТА ? Н СТРЕМИТЕСЬ В РАБОТЕ ИЗБЕЖАТЬ ОСЛОЖНЕНИЙ? Н ДЕМОНСТРИРУЕТЕ СЕРДЕЧНОСТЬ И ДОБРОТУ ? Н ПЫТАЕТЕСЬ СО ВСЕМИ СОГЛАШАТЬСЯ ? Д СТРЕМИТЕСЬ БЫТЬ ПОЛЕЗНЫМ ? Н ЛЕГКО ПРИНИМАЕТЕ РЕШЕНИЯ ? Д
139 ЭКСПЕРТНАЯ СИСТЕМА В ОБЛАСТИ ТОРГОВЛИ ЧЕСТНЫ И ОТКРЫТЫ С КОЛЛЕГАМИ И ПОКУПАТЕЛЯМИ ? Н ПРИНИМАЕТЕ ЧУЖОЕ МНЕНИЕ ? Н НАПОРИСТО-АГРЕССИВНЫЙ ОБЩИЙ ВЕСОВОЙ ФАКТОР -20 ВЕРОЯТНОСТЬ - 0.5714286 ПОДЧЕРКНУТО ЛЮБЕЗНЫЙ ОБЩИЙ ВЕСОВОЙ ФАКТОР-2,5 ВЕРОЯТНОСТЬ - 0.714285 САМОУВЕРЕННЫЙ ОБЩИЙ ВЕСОВОЙ ФАКТОР - 12,5 ВЕРОЯТНОСТЬ -0.3571429 * **** ДАННЫЕ О ПОКУПАТЕЛЕ ***** ГОВОРИТ ЛИ ПОКУПАТЕЛЬ В ОСНОВНОМ О СЕБЕ ? Н ХВАСТЛИВ И САМОВЛЮБЛЕН ЛИ ПОКУПАТЕЛЬ ? Н ПОКУПАТЕЛЬ НЕ ИНТЕРЕСУЕТСЯ МНЕНИЕМ ПРОДАВЦА ? Н СЧИТАЕТ ЛИ ПОКУПАТЕЛЬ, ЧТО ЗНАЕТ БОЛЬШЕ ВСЕХ ? Н ОСМОТРИТЕЛЕН ЛИ ПОКУПАТЕЛЬ ? Д НЕРЕШИТЕЛЕН ЛИ ПОКУПАТЕЛЬ ? Д ПОКУПАТЕЛЬ НЕ СТРЕМИТСЯ ПОДЕЛИТЬСЯ ИНФОРМАЦИЕЙ ? Н СКРЫВАЕТ ЛИ ПОКУПАТЕЛЬ СВОЕ МНЕНИЕ И ЧУВСТВА ? Н УСТУПЧИВ ЛИ ПОКУПАТЕЛЬ ? Д ПОСЛУШЕН ЛИ ПОКУПАТЕЛЬ ? Д УКЛОНЯЕТСЯ ЛИ ПОКУПАТЕЛЬ ОТ СПОРОВ ? Д ПОКУПАТЕЛЬ ПРИЯТЕН, ОБЩИТЕЛЕН И СИМПАТИЧЕН? Д ТЩАТЕЛЬНО ЛИ ПОКУПАТЕЛЬ ОСМАТРИВАЕТ ТОВАР ? Н СВОБОДНО ПОКУПАТЕЛЬ ИЗЛАГАЕТ ИДЕИ И СУЖДЕНИЯ ? Н СТРЕМИТСЯ ЛИ ПОКУПАТЕЛЬ ВЫЙТИ ИЗ ЗАТРУДНЕНИЯ. ПРИНИМАЯ РЕШЕНИЯ ВМЕСТЕ С ПРОДАВЦОМ ? Н ОБЛАДАЕТ ЛИ ПОКУПАТЕЛЬ ГИБКОСТЬЮ? Н ДЛЯ ПРОДОЛЖЕНИЯ НАЖМИТЕ КЛАВИШУ ВК РУКОВОДСТВУЕТСЯ НЕЗАВИСИМОСТЬЮ И САМОУВАЖЕНИЕМ ОБЩИЙ ВЕСОВОЙ ФАКТОР - 0 ВЕРОЯТНОСТЬ-0 РУКОВОДСТВУЕТСЯ ОСТОРОЖНОСТЬЮ ОБЩИЙ ВЕСОВОЙ ФАКТОР - 10 ВЕРОЯТНОСТЬ-0.4 РУКОВОДСТВУЕТСЯ СУЖДЕНИЯМИ ОКРУЖАЮЩИХ ОБЩИЙ ВЕСОВОЙ ФАКТОР - 15 ВЕРОЯТНОСТЬ-0.6 РУКОВОДСТВУЕТСЯ НЕЗАВИСИМОСТЬЮ И САМОУТВЕРЖДЕНИЕМ ОБЩИЙ ВЕСОВОЙ ФАКТОР-0 ВЕРОЯТНОСТЬ-0 ПРОДАВЕЦ 1 ПОКУПАТЕЛЬ 1 ВЕРОЯТНОСТЬ-0
ЭКСПЕРТНЫЕ СИСТЕМЫ: ЗНАНИЯ ПЛЮС ЛОГИЧЕСКИЙ ВЫВОД 140 ПРОДАВЕЦ 1 ПОКУПАТЕЛЬ 2 ВЕРОЯТНОСТЬ -0.2285714 ПРОДАВЕЦ 1 ПОКУПАТЕЛЬ 3 ВЕРОЯТНОСТЬ -0.3428572 ПРОДАВЕЦ 1 ПОКУПАТЕЛЬ 4 ВЕРОЯТНОСТЬ -0 ДЛЯ ПРОДОЛЖЕНИЯ НАЖМИТЕ КЛАВИШУ ВК ПРОДАВЕЦ2 ПОКУПАТЕЛЬ 1 ВЕРОЯТНОСТЬ-0 ПРОДАВЕЦ 2 ПОКУПАТЕЛЬ 2 ВЕРОЯТНОСТЬ - .285714 ПРОДАВЕЦ 2 ПОКУПАТЕЛЬ 3 ВЕРОЯТНОСТЬ - .0428571 ПРОДАВЕЦ 2 ПОКУПАТЕЛЬ 4 ВЕРОЯТНОСТЬ - 0 ДЛЯ ПРОДОЛЖЕНИЯ НАЖМИТЕ КЛАВИШУ ВК ПРОДАВЕЦ 3 ПОКУПАТЕЛЬ 1 ВЕРОЯТНОСТЬ-0 ПРОДАВЕЦ 3 ПОКУПАТЕЛЬ 2 ВЕРОЯТНОСТЬ - .1428572 ПРОДАВЕЦ 3 ПОКУПАТЕЛЬ 3 ВЕРОЯТНОСТЬ - .2142857 ПРОДАВЕЦ3 ПОКУПАТЕЛЬ4ВЕРОЯТНОСТЬ-0 ДЛЯ ПРОДОЛЖЕНИЯ НАЖМИТЕ КЛАВИШУ ВК Break In 935 Ok ГЛАВА 10 ЭКСПЕРТНЫЕ СИСТЕМЫ АНАЛИЗА ОБУЧЕНИЯ Настоящая глава посвящена экспертной системе анализа обуче- ния, которая используется для выявления трудностей, препятствую- щих усвоению материала. Как показывает статистика, многие взрослые американцы настолько плохо читают и пишут, что постоянно подвергаются угрозе потерять работу. Восприятию знаний могут ме- шать как ошибки при обучении, так и индивидуальные особенности людей. В процессе учебы могуть возникнуть разной степени затруднения. Ошибки при обучении приводят обычно к меньшим затруднениям, чем неспособность человека изучить какой-либо предмет. В процессе обучения приходится говорить не только о чтении или письме. Кэтрин де Херч в статье «Learning Disabilities, an Overview», пишет: «Психологические и физиологические факторы, генетические аспекты, включая реакцию на стресс, внутриутробное развитие, рож- дение и первые месяцы жизни, а также эмоциональная и социальная среда воспитания - все взаимосвязано и влияет на способности ребенка к учебе». Таким образом, можно сказать, что затруднения в учебе —резуль- тат сложного взаимодействия различных факторов. Проводя исследо- вания в области обучения, приходится принимать во внимание огромное число факторов.
141 ЭКСПЕРТНЫЕ СИСТЕМЫ АНАЛИЗА ОБУЧЕНИЯ Сегодня общепринятым методом исследований являются использо- вание стандартных тестов и сбор данных. Тесты применяются в основ- ном для оценки в общеобразовательных дисциплинах, например чтении, правописании или арифметики. Кроме того, они дают возмож- ность оценить словарный запас и умение точно выражать свои мысли. В процессе тестирования собирается информация, относящаяся как к дошкольному, так и к школьному периоду. Собранная информация включает сведения о школьной и домашней среде и служит для оценки психологических и социальных аспектов процесса обучения. Исследо- ватель анализирует результаты тестов, выполняет необходимые вы- числения, выявляет ключевые трудности восприятия материала, обобщает данные, касающиеся социальных и психологических аспек- тов, и дает оценку способностей ребенка к обучению. Экспертная система, охватывающая весь круг проблем, возникаю- щих при обучении, должна работать аналогично. В этой главе описано создание экспертной системы анализа обучения (САО). Система вы- полняет полный цикл исследований, обеспечивая глубокий и точный анализ. Конечно, оценки, которые дает человек, до известной степени субъективны. Люди часто рассматривают лишь небольшое число фак- тов и делают поспешные выводы. Система же, подобная САО, может «руководить» исследователем, не позволяя пропускать существенные факты и заставляя его более объективно выполнять логические выводы. Человеческий мозг, в отличие от компьютера, просто не в состоянии одновременно и систематично обработать всю необходимую информа- цию. САО не делает категоричных выводов. Она лишь точно локализует конкретные пробелы в обучении, определяет их диапазон и дает воз- можность исследователю вынести окончательное суждение и дать ре- комендации. Все это достигается с помощью: 1) организации данных по разделам и подразделам; 2) перечисления всех относящихся к каждому подразделу фактов; 3) установления весовых факторов для фактов и определения уров- ня решения; 4) верификации данных. Организации данных по разделам и подразделам В большинстве работ, посвященных этой теме, были выделены следующие разделы, данными из которых пользуется система: образо- вание, биология и физиология, психология, социология.
ЭКСПЕРТНЫЕ СИСТЕМЫ: ЗНАНИЯ ПЛЮС ЛОГИЧЕСКИЙ ВЫВОД 142 Совокупность данных по каждому из разделов позволяет судить об ошибках при обучении и индивидуальных особенностях человека, ме- шающих воспринимать материал. Каждый раздел содержит огромное количество материала, который целесообразно выделить в подразделы: А. Образование А-1. Чтение А-2. Арифметика Б. Биология и физиология Б-1. Наследственные факторы В. Психология В-1. Самоуверенность Перечисление фактов Для каждого раздела и подраздела выбирается относящийся к нему набор фактов. Понятно, что для обучения существует гораздо больше фактов, чем приведено ниже. Это лишь малая, взятая для простоты часть фактов, использующихся в реальной САО. Справа от каждого факта в скобках указан его весовой фактор. Смысл весовых факторов будет ясен позднее. А. Образование А-1. Чтение А-1.1. Произношение А-1.1.1. Распознавание букв алфавита (1) А-1.1.2. Произнесение слов без пропуска и изменения букв (1) А-1.1.3. Верная расстановка акцентов (1) А-1.1.4. Правильное разбиение слов на части (1) А-1.1.5. Запоминание и воспроизведение звуков, соответствующих буквам слова (1) А-1.2. Понимание А-1.2.1. Запоминание фактов (1) А-1.2.2. Представление общей картины (1) А-1.2.3. Словарный запас (1) А-1.2.4. Знакомство с понятиями (1) А-2. Арифметика А-2.1. Сложение однозначных чисел (1) А-2.2. Сложение многозначных чисел (1) А-2.3. Вычитание однозначных чисел (1) А-2.4. Вычитание многозначных чисел (1) А-2.5. Умножение однозначных чисел (1) А-2.6. Умножение многозначных чисел (1) А-2.7. Деление без остатка (1) А-2.8. Деление с остатком (1) Б. Биология и физиология
143 ЭКСПЕРТНЫЕ СИСТЕМЫ АНАЛИЗА ОБУЧЕНИЯ Б-1. Наследственные факторы Б-1.1. Неспособность к обучению родителей (1) Б-1.2. Неспособность к обучению родных братьев и сестер (не близнецов) (1) Б-1.3. Неспособность к обучению близнецов (1) Б-1.4. Хромосомные аномалии или наследственные болезни в семье (1) В. Психология В-1. Самоуверенность В-1.1. Отказ от работы (1) В-1.2. Необоснованность поступков (1) В-1.3. Позерство (1) Назначение весовых факторов и определение уровней решения Числа в скобках, стоящие справа от каждого факта, представляют собой весовые факторы. Весовые факторы необходимы при принятии решений. В нашем примере все весовые факторы имеют значение 1. Поскольку весовые факторы по сути дела указывают на степень важ- ности фактов, все факты в примере вносят одинаковый вклад при оценке трудностей, препятствующих усвоению материала. Каким же образом затем делается вывод, что такие затруднения есть ? В системе существуют установленные уровни решения. Каждый факт может иметь значение для выявления затруднений. Если многие факты гово- рят о затруднениях, считается, что затруднения большие, если же фактов немного, то на затруднения можно не обращать внимание. При определении затруднений суммируются веса входящих в определен- ные подразделы фактов, т.е. фактов, относящихся к арифметике, вни- мательности и т.д. Полученная сумма называется общим весовым фактором. Наименьшая сумма весовых факторов в пределах подраз- дела, при которой можно говорить о затруднениях в усвоении матери- ала, называется уровнем решения. Если общий весовой фактор какого-либо человека в пределах подраздела равен или превышает уровень решения, считается, что человек испытывает затруднения при изучении материала в соответствующей области. Например, если речь идет о наследственности и для этого раздела установлен уровень реше- ния, равный единице, а по результатам тестирования общий весовой фактор составляет 2 или более, есть вероятность, что человек испыты- вает трудности из-за наследственности. Достаточно, чтобы имел место хотя бы один фактор этого раздела, поскольку все они имеют весовой фактор, равный 1. Значения уровням решения присваиваются на основании резуль- татов тестирования и исследовательских работ. Тестируя группу лю- дей, исследователь определяет для проблемной области степень трудности. Конечно, более полные исследования могут дать результа-
ЭКСПЕРТНЫЕ СИСТЕМЫ: ЗНАНИЯ ПЛЮС ЛОГИЧЕСКИЙ ВЫВОД 144 ты, позволяющие уточнить значения весовых факторов и уровней ре- шения. В экспертной системе примера используются данные последних исследований и знания квалифицированных экспертов. При этом сис- тема проста и легко модифицируется. Поскольку факты известны и механизм вывода (весовые факторы и уровни решения) понятен, приступим к описанию работы системы. Для всех фактов каждого раздела составляются определенные воп- росы. Вопросы формулируются так, чтобы ответы на них позволяли учитывать или не учитывать соответствующий фактор. Отрицатель- ный ответ указывает, что факт не учитывается. Исследователь сидит за компьютером и просто отвечает на вопросы. Если он вводит положи- тельный ответ (ДА), значение весового фактора (в примере всегда 1) соответствующего факта добавляется к общей сумме. Если же он вво- дит отрицательный ответ (НЕТ), общая сумма остается без изменений. Весовые факторы суммируются по подразделам. Если общий йесовой фактор равен или превышает уровень решений для подраздела, дела- ется вывод, что согласно этому подразделу выявлены затруднения, о чем и информируется исследователь. Подразделов, для которых пре- вышен уровень решения, может быть несколько: чем их больше — тем серьезнее затруднения. Если уровень в нашем примере превышен в трех подразделах, то это значит, что существуют серьезные затрудне- ния, если в двух — затруднения не велики, а если в одном — то затруднений совсем нет или нужно продолжать исследования. Подыто- жим сказанное. 1. Система вычисляет общий весовой фактор, суммируя весовые факторы всех фактов, на вопрос о которых был получен положитель- ный ответ. 2. Для каждого подраздела система проверяет превышение уровня решения. 3. На печать выводится название и номер каждого подраздела, в котором превышен уровень решения. 4. В зависимости от числа таких подразделов система определяет степень затруднений или их отсутствие. Пример работы системы Приведем пример диалога исследователя с системой. Имя ребенка ? Сара Грин Возраст ? 12 лет 8 месяцев Класс ? 7 класс, 4 четверть
145 ЭКСПЕРТНЫЕ СИСТЕМЫ АНАЛИЗА ОБУЧЕНИЯ Дата проверки ? 7 июня 1985 года Имя исследователя ? Диана Дранг А. Образование А-1. Чтение А-1.1. Произношение Ребенок испытывает затруднения при: А-1.1.1. Распознавании букв алфавита ? НЕТ А-1.1.2. Произнесении слов без пропуска и изменения букв ? ДА А-1.1.3. Верной расстановке акцентов ? ДА А-1.1.4. Правильном разбиении слов на части ? ДА А-1.1.5. Запоминании и воспроизведении звуков, соответствующих буквам слова ? ДА Общий весовой фактор - 4 Уровень решения - 2 Оценка за тест - 5 класс, 2 четверть А-1.2. Понимание Ребенок испытывает затруднения при: А-1.2.1. Запоминании фактов ? НЕТ А-1.2.2. Представлении общей картины ? ДА А-1.2.3. Понимании трудных слов ? НЕТ А-1.2.4. Толковании понятий ? ДА Общий весовой фактор - 2 Уровень решения - 1 Оценка за тест - 4 класс, 2 четверть А-2. Арифметика Ребенок испытывает затруднения при: А-2.1. Сложении однозначных чисел ? НЕТ А-2.2. Сложении многозначных чисел ? НЕТ А-2.3. Вычитании однозначных чисел ? НЕТ А-2.4. Вычитании многозначных чисел ? НЕТ А-2.5. Умножении однозначных чисел ? НЕТ А-2.6. Умножении многозначных чисел ? НЕТ А-2.7. Делении без остатка ? НЕТ А-2.8. Делении с остатком ? НЕТ Общий весовой фактор - О Уровень решения - 2 Оценка за тест - 8 класс, 1 четверть Б. Биология и физиология Б-1. Наследственные факторы Б-1.1. Родители ребенка проявляли неспособность к обучению ? ДА Б-1.2. Родные братья и сестры (не близнецы) проявляли неспособность к обучению ? НЕТ Б-1.3. Близнецы проявляли неспособность к обучению ? НЕТ
ЭКСПЕРТНЫЕ СИСТЕМЫ: ЗНАНИЯ ПЛЮС ЛОГИЧЕСКИЙ ВЫВОД 146 Б-1.4. Были ли хромосомные аномалии или наследственные болезни в семье ? НЕТ Общий весовой фактор e 1 Уровень решения -1 В. Психология В-1. Самоуверенность Ребенок: В-1.1. Отказывается от работы ? НЕТ В-1.2. Немотивирует поступки ? ДА В-1.3. Старается показать себя с лучшей стороны ? НЕТ Общий весовой фактор - 1 Уровень решения - 3 Результаты исследования Уровень решения превышен в следующих подразделах: 1) произношение при чтение; 2) понимание при чтении; 3) наследственные факторы. Общее число подразделов с превышенным уровнем решения: 3. Результат 3 указывает на серьезные трудности. Результат 2 указывает на легкие затруднения. Результат 1 или 0 указывает на отсутствие затруднений. Результат исследований данных Сары Грин равен 3, она испыты- вает серьезные трудности при усвоении учебного материала. Верификация решения с помощью механизма вывода Подсчитав общие весовые факторы и выявив подразделы, в кото- рых превышен уровень решения, можно сказать, что цель достигнута. Но для того чтобы проверить, верно ли она достигнута, нужно разрабо- тать метод верификации ответов на вопросы. Другими словами, нужно придумать способ проверки непротиворечивости ответов, используя некоторую числовую процедуру. Верификация выполняется с по- мощью ввода новых данных и их сравнения с исходными. Сравнение этих двух совокупностей данных является одной из функций механиз- ма логического вывода. Ранее упоминались специальные тесты, приме- няемые при оценке обучения. Оценка за тест дается в понятиях возраста или класса, она должна соответствовать возрасту испытуемо- го или классу, в котором он учится. Например, 8-летний ребенок дол- жен набрать при тестировании результат, соответствующий 3 классу или 8-летнему возрасту. Если результат ниже, считается, что ребенок испытывает затруднения при усвоении знаний в некоторой области.
147 ЭКСПЕРТНЫЕ СИСТЕМЫ АНАЛИЗА ОБУЧЕНИЯ Чем ниже результат, тем более серьезны затруднения. Соответственно чем выше результаты, тем затруднения меньше. Можно с уверенно- стью сказать, что если результаты тестирования ниже возраста или класса испытуемого — дело плохо. Например, если 12-летний ребенок по результатам тестирования на чтение соответствует 2-ой четверти 4-го класса (что существенно ниже его возраста), это означает, что у него должны быть затруднения в восприятии прочитанного и по край- ней мере на один из вопросов данного подраздела был дан положитель- ный ответ. Необходимо помнить, что положительный ответ указывает на затруднения. Верификация выполняется для данных тех подразделов, в которых превышен уровень решения, и в том случае, если в результате тести- рования установлено наличие трудностей. Если уровень решения не превышен и тест не выявил затруднений, значит их в самом деле нет. Если же обнаружено противоречие (например, плохая оценка за тест, а уровень решения не превышен; или оценка за тест хорошая , а уро- вень решения превышен), система выведет сообщение об ошибке. Для верификации можно использовать правила ЕСЛИ-TO. В правилах и содержатся новые данные, которые будут сравниваться с общими весо- выми факторами. Правила могут иметь такой вид: 1) ЕСЛИ результат тестирования на произношение при чтении ниже возраста или класса испытуемого, ТО в подразделе «Произноше- ние при чтении» должно быть указание по крайней мере на одно затруд- нение; 2) ЕСЛИ результат тестирования на понимание прочитанного ни- же возраста или класса испытуемого, ТО в подразделе «Понимание прочитанного» должно быть указание по крайней мере на одно затруд- нение; 3) ЕСЛИ результат тестирования на произношение при чтении ниже возраста или класса испытуемого более, чем на 2, ТО результи- рующий весовой фактор будет равен или выше уровня решения для произношения при чтении; 4) ЕСЛИ результат тестирования на произношение при чтении ниже возраста или класса испытуемого более, чем на 2, ТО результи- рующий весовой фактор будет равен или выше уровня решения пони- мания прочитанного. Подобные правила могут быть сформулированы для всех подразде- лов. Если исследователь ошибся (предположим, что он ответил отри- цательно на все вопросы подраздела «Произношение при чтении», но результат теста показал несоответствие испытуемого возрасту или
ЭКСПЕРТНЫЕ СИСТЕМЫ: ЗНАНИЯ ПЛЮС ЛОГИЧЕСКИЙ ВЫВОД 148 классу именно по этому подразделу), система может выдать такое сообщение: Ошибка. Вернитесь и проверьте ответы, касающиеся вопросов подраздела «Произношение при чтении». Пользователь должен вернуться и пересмотреть ответы на эти воп- росы. После того, как ошибка будет исправлена, система продолжит работу. Дополнительные возможности системы Хотя изначально система разработана для специалистов и профес- сионалов в области обучения, ее можно использовать и для других целей. Например, ею могут воспользоваться родители, которые наблю- дают поведение своих детей, но не понимают почему, их дети не успе- вают в школе. Родители могут предполагать, что у детей есть трудности в учебе, но им необходима дополнительная информация, чтобы помочь детям. Они могут просто чувствовать свою неинформированность и пытаться восполнить пробелы. Чем больше информированность, тем больше возможностей принять разумное решение. Немного модифици- рованная система может использоваться для получения информации и ее оценки, а не для диагностики. Также она может применяться при определении необходимости оказания помощи при затруднениях в учебе. Описанный подход может служить моделью и для других типов информационно-тестовых систем. Конечно, система, разработанная для домашнего использования, не будет включать стандартные процедуры тестирования, поскольку пользующиеся ею для самообразования люди с ними просто не знако- мы. Система будет содержать вопросы, касающиеся общих аспектов поведения, общедоступную информацию и некоторые относящиеся к обучению данные. Она может включать отдельные разделы и подраз- делы, которые использовались в САО. А. Биология и физиология А-1. Наследственные факторы Б. Психология и социология Б-1. Самоуверенность Б-2. Способность сосредоточиться Б-3. Социальное сознание В. Образование В-1. Общеобразовательный уровень В-2. Речь и общее умственное развитие
149 ЭКСПЕРТНЫЕ СИСТЕМЫ АНАЛИЗА ОБУЧЕНИЯ Для модифицированной системы можно использовать такую так- сономию фактов с весовыми факторами: А. Биология и физиология А-1. Наследственные факторы А-1.1. Неспособноетэ к обучению родителей (1) А-1.2. Неспособность к обучению родных братьев и сестер (не близнецов) (1) А-1.3. Неспособность к обучению близнецов (1) А-1.4. Хромосомные аномалии или наследственные болезни в семье (1) Кроме этих фактов можно применять и факты, не входящие в САО. Они в большей степени относятся к интересующему родителей поведе- нию детей. Б. Психология и социология Б-1. Самоуверенность Б-1.1. Желание показать себя с лучшей стороны (1) Б -1.2. Немотивируемость поступков (1) Б-1.3. Лень и апатия (1) Б-1.4. Постепенное снижение успеваемости (1) Б-2. Способность сосредоточиться Б-2.1. Появление усталости и рассеянности (1) Б-2.2. Чрезмерная мечтательность (1) Б-2.3. Импульсивность (1) Б-2.4. Постоянная надежда на помощь одноклассников (1) Б-2.5. Недостаток времени при выполнении домашних заданий (1) Б-3. Социальное сознание Б-3.1. Неуместное поведение в обществе (1) Б-3.2. Экспансивное поведение (шумливость, насмешливость, агрессивность) (1) Б-3.3. Игнорирование компаний и состязаний (1) Б-3.4 Невнимание к себе (1) В. Образование В-1. Уровень общего образования В-1.1. Небольшие успехи в произношении при чтении слов и словосочетаний (1) В-1.2. Небольшие успехи в понимании прочитанного (1) В-1.3. Небольшие успехи в арифметике (1) В-1.4. Плохое чистописание (1) В-1.5. Трудности в письменном выражении мыслей (1) В-2. Речь и общее умственное развитие
ЭКСПЕРТНЫЕ СИСТЕМЫ: ЗНАНИЯ ПЛЮС ЛОГИЧЕСКИЙ ВЫВОД 150 В-2.1. Косноязычие (1) В-2.2. Трудности при изложении собственных мыслей (1) В-2.3. Трудности в понимании сказанного (1) В-2.4. Неразвитость ассоциативного мышления (1) Плохая память на: В-2.5. Числа (1) В-2.6. Имена (1) В-2.7. Сказанное (1) В-2.8. Месяцы в году (1) В-2.9. Дни недели (1) Ниже приведен пример работы программы. Ответы пользователя даются после знака вопроса. Вопросы задаются несколько в иной фор- ме, чем в предыдущем примере, хотя некоторые и совпадают. Общие весовые факторы и уровни решения определяются так же, как и рань- ше. Раздел, относящийся к обучению, приводится последним (в отли- чие от предыдущего примера), поскольку ответы на вопросы этого раздела даются не на основе стандартных тестов, а исходя из общего поведения ребенка. Имя ребенка ? Стивен Джонс Возраст ? 9 лет 2 месяца Класс ? 4 класс Текущая дата ? 17 июня 1985 года А. Биология и физиология А-1. Наследственные факторы А-1.1. Родители ребенка проявляли неспособность к обучению ? НЕТ А-1.2. Родные братья и сестры (не близнецы) проявляли неспособность к обучению ? НЕТ А-1.3. Близнецы проявляли неспособность к обучению ? НЕТ А-1.4. Были ли хромосомные аномалии или наследственные болезни в семье ? НЕТ Общий весовой фактор - 0 Уровень решения -1 Б. Психология и социология Б-1. Самоуверенность Ваш ребенок: Б-1.1. Старается показать себя с лучшей стороны ? ДА Б-1.2. Не мотивирует поступки ? ДА Б-1.3. Ленив и апатичен Т’ДА Б-1.4. Постепенно снижает успеваемость ? ДА Общий весовой фактор - 4 Уровень решения - 3 Б-2. Способность сосредоточиться
151 ЭКСПЕРТНЫЕ СИСТЕМЫ АНАЛИЗА ОБУЧЕНИЯ Замечаете ли вы у ребенка: Б-2.1. Появление усталости и рассеянности? НЕТ Б-2.2. Чрезмерную мечтательность ? НЕТ Б-2.3. Импульсивность ? ДА Б-2.4. Постоянную надежду на помощь одноклассников ? ДА Б-2.5. Недостаток времени при выполнении домашних заданий ? ДА Общий весовой фактор - 3 Уровень решения - 3 Б-3. Социальное сознание Проявляется ли у Вашего ребенка: Б-3.1. Неуместное поведение в обществе ? НЕТ Б-3.2. Экспансивное поведение (шумливость, насмешливость, агрессивность) ? НЕТ Б-3.3. Игнорирование компаний и состязаний ? ДА Б-3.4. Невнимание к себе ? ДА Общий весовой фактор - 2 Уровень решения - 3 В. Образование В-1. Уровень общего образования У вашего ребенка: В-1.1. Небольшие успехи в произношении при чтении слов и отрывков ? ДА В-1.2. Небольшие успехи в понимании прочитанного ? ДА В-1.3. Небольшие успехи в арифметике ? ДА В-1.4. Плохое чистописание ? НЕТ В-1.5. Трудности в письменном выражении мыслей ? ДА Общий весовой фактор - 4 Уровень решения - 2 В-2. Речь и общее умственное развитие Есть ли у вашего ребенка: В-2.1. Косноязычие ? НЕТ В-2.2. Трудности в изложении собственных мыслей ? НЕТ В-2.3. Трудности в понимании сказанного ? НЕТ В-2.4. Неразвитость ассоциативного мышления ? НЕТ Есть ли у вашего ребенка проблемы с запоминанием: В-2.5. Чисел ? НЕТ В-2.6. Имен?НЕТ В-2.7. Сказанного ? НЕТ В-2.8. Месяцев в году ? НЕТ В-2.9. Дней недели ? НЕТ Общий весовой фактор - О Уровень решения - 3 Результаты исследования Уровень решения превышен в следующих подразделах:
ЭКСПЕРТНЫЕ СИСТЕМЫ: ЗНАНИЯ ПЛЮС ЛОГИЧЕСКИЙ ВЫВОД 152 1) самоуверенность; 2) способность сосредоточиться • 3) уровень общего образования, Общее число подразделов с превышенным уровнем решения: 3. Результат 5 или 6 показывает: у Вашего ребенка серьезные нелады с учебой и ему нужна помощь. Результат 3 или 4 показывает: что у Вашего ребенка есть некоторые трудности с учебой и ему нужна небольшая помощь. Результат 1 или 2 показывает: с учебой у Вашего ребенка все в порядке и помощь ему не требуется. У Стивена Джонса уровень решений превышен в трех подразделах, значит, у него есть определенные трудности в учебе и ему нужна по- мощь. Приведенные уровни решений не могут служить ориентиром для читателя. Они иллюстрируют работу экспертной системы. Использо- вание экспертных систем в области обучения - дело новое, и разумный выбор уровней решения для реальных систем требует большей работы. Если сравнить результаты обработки данных Сары Грин и Стивена Джонса, видно, что оба испытывают затруднения в учебе. Но у Сары преобладают биологическая и образовательная составляющие и в меньшей степени психологическая, а у Стивена — психологическая и общеобразовательная. Таксономия фактов дает возможность исследо- вателю или родителям понять причины затруднений. Число подразде- лов, для которых превышен уровень решения, определяет степень затруднений. Резюме Настоящая глава была посвящена экспертной системе, которая используется для выявления трудностей, препятствующих усвоению материала. Подобные проблемы вызывают сегодня особенный интерес, поскольку многие взрослые американцы и дети не знают элементарных вещей. Обсуждалось преобразование применяемых в настоящее время методов оценки уровня знаний для нужд экспертной системы. Основу структуры для экспертной системы составляют разделы, подразделы и факты. Были введены понятия весовых факторов, уровней решения и описан способ их использования, а также верификация данных. Было рассказано, как расширить сферу приложения системы, сделав ее до- ступной не только профессионалам в области обучения, но и родите- лям.
153 ЭКСПЕРТНЫЕ СИСТЕМЫ АНАЛИЗА ОБУЧЕНИЯ Пример программы В листинге 10.1 приведена написанная на Бейсике САО. Пояснения к программе Программу можно разбить на 4 части: 1. Блок инициализации, в котором присваиваются значения весо- вым факторам (предложения 20 и 25). 2. Блок приема данных от пользователя (предложения 60 - 85). 3. Блок данных, использующихся для анализа (предложения 100 - 240). 4. Блок механизма вывода для анализа (предложения 5015- 5140). При создании своей системы анализа обучения читатель может воспользоваться приведенной программой. Листинг программы Листийг 10.1 1 REM **** ЭКСПЕРТНАЯ СИСТЕМА АНАЛИЗА ОБУЧЕНИЯ **♦* 2 REM МАССИВ ВЕСОВЫХ ФАКТОРОВ 10DIMW(100) 15 REM ВСТАВИТЬ ВЕСОВЫЕ ФАКТОРЫ 20 FOR 1-1 ТО 100 25 W(I)-1: NEXT I 30 DIM A$(10): REM МАССИВ ОТВЕТОВ 35 DIM D$(20): REM МАССИВ ПРИЗНАКОВ ЗАТРУДНЕНИЙ 40 FOR 1-1 TO 20 45 D$(I)-"”: NEXT I 50 DP-1: REM УКАЗАТЕЛЬ НА ПРИЗНАКИ ЗАТРУДНЕНИЙ 55 WP-1: REM УКАЗАТЕЛЬ НА ВЕСОВЫЕ ФАКТОРЫ 60 REM ♦»» ДАННЫЕ О РЕБЕНКЕ *** 65 INPUT-ИМЯ ИСПЫТУЕМОГО PEBEHKA"NP$ 70 INPUT"BO3PACT ИСПЫТУЕМОГО РЕБЕНКА, ГОД-МЕСЯЦ”;АУ,АМ 75 INPUT-КЛАСС, ГОД-МЕСЯЦ ”;GY,GM 80 INPUT”ДАТА ПРОВЕРКИ МЕСЯЦ-ДЕНЬ-ГОД ';ОМ,ОО.ОУ 85 INPUT-ИМЯ ИССЛЕДОВАТЕЛЯ’;№$ 90 REM ♦»♦ БЛОК ПРИЕМА ДАННЫХ ОТ ПОЛЬЗОВАТЕЛЯ 95 REM ****************************************** 100 REM ПОДРАЗДЕЛ ПРОИЗНОШЕНИЯ ПРИ ЧТЕНИИ 105 INPUT-ОЦЕНКА ЗА ТЕСТ НА ПРОИЗНОШЕНИЕ ПРИ ЧТЕНИИ ГОД-МЕСЯЦ';ТУ,ТМ 110 INPUT-УРОВЕНЬ РЕШЕНИЯ”;ОЬ 115 PRINT-РЕБЕНОК ЗАТРУДНЯЕТСЯ В:"; 120 INPUT-РАСПОЗНАВАНИИ БУКВ АЛФАВИТА ”;А$(1) 125 INPUT-ПРОИЗНЕСЕНИИ СЛОВ БЕЗ ПРОПУСКА И ИЗМЕНЕНИЯ БУКВ";А$(2) 130 INPUT-ВЕРНОЙ РАССТАНОВКЕ АКЦЕНТОВ”; А$(3)
ЭКСПЕРТНЫЕ СИСТЕМЫ: ЗНАНИЯ ПЛЮС ЛОГИЧЕСКИЙ ВЫВОД 154 135 INPUT-ПРАВИЛЬНОМ РАЗБИЕНИИ СЛОВ НА ЧАСТИ";А$(4) 140INPUT-ЗАПОМИНАНИИ/ВОСПРОИЗВЕДЕНИИ ЗВУКОВ";А$ (5) 145 PRINT"** ПРОИЗНОШЕНИЕ ПРИ ЧТЕНИИ **” 150 REM ПЕРЕЙТИ В БЛОК МЕХАНИЗМА ВЫВОДА И ПРОВЕРИТЬ, 155 REM ПРЕВЫШЕН ЛИ УРОВЕНЬ РЕШЕНИЯ. ПРОВЕРИТЬ ДАННЫЕ, 156 REM СРАВНЕНИВ ИХ С ОЦЕНКОЙ ЗА ТЕСТ 160 К$-"ПРОИЗНОШЕНИЕ ПРИ 4TEHHH”:SE-5:GOSUB 5000: 161 REM ЧИСЛО ВОПРОСОВ 195 REM *************************************************** 200 REM ПОДРАЗДЕЛ ПОНИМАНИЯ ПРОЧИТАННОГО 205 INPUT"OUEHKA ЗА ТЕСТ НА ПОНИМАНИЕ ПРОЧИТАННОГО, ГОД-МЕСЯЦ";ТУ,ТМ 210 INPUT-УРОВЕНЬ РЕШЕНИЯ";ЦЬ 215 PRINT-РЕБЕНОК ЗАТРУДНЯЕТСЯ В:" 220 INPUT"3AnOMHHAHHH";A$(l) 225 INPUT-ПРЕДСТАВЛЕНИИ ОБЩЕЙ КАРТИНЫ";А$(2) 230 INPUT-ПОНИМАНИИ ТРУДНЫХ СЛОВ";А$(3) 235 INPUT-ТОЛКОВАНИИ ПОНЯТИЙ";А$(4) 240 К$-"ПОНИМАНИИ ПРИ 4TEHHH":SE-4:GOSUB 5000 241 REM ЧИСЛО ВОПРОСОВ 4000 REM ************************************************** 4005 PRINT-ПОДРАЗДЕЛЫ С ПРЕВЫШЕНИЕМ УРОВНЯ РЕШЕНИЯ- 4010 FOR 1-1 ТО 10 4015 IF D$(I) THEN GOTO 4025 4020 PRINT D$ (I) 4025 NEXT I 4999 STOP: REM ********** КОНЕЦ РАБОТЫ 5000 REM *************************************************** 5005 REM ***♦ МЕХАНИЗМ ВЫВОДА **♦* 5010 REM ************************** 5015 REM ОЦЕНКА ЗА ТЕСТ РАВНА ИЛИ НИЖЕ КЛАССА РЕБЕНКА 5020 ТВ-0: REM ОЦЕНКА ЗА ТЕСТ НИЖЕ, ЕСЛИ ТВ-1 5025 Y-GY-TY: M-GM-TM 5030 IF Y0 THEN ТВ-1 5035 IF (Y-0) AND (M0) THEN ТВ-1 5040 IF TB-1 THEN PRINT"** ОЦЕНКА ЗА ТЕСТ НИЖЕ СРЕДНЕГО" 5045 ***************************************************** 5050 REM ЕСЛИ ПОСЛЕ ОТВЕТОВ НА ВОПРОСЫ ОБЩИЙ ВЕСОВОЙ ФАКТОР 5055 REM БОЛЬШЕ ИЛИ РАВЕН УРОВНЮ РЕШЕНИЯ - ЕСТЬ ЗАТРУДНЕНИЯ 5060 S-0: REM ИНИЦИАЛИЗАЦИЯ ОБЩИХ ВЕСОВЫХ ФАКТОРОВ 5063 REM 5065 REM СЛОЖИТЬ ВСЕ ВЕСОВЫЕ ФАКТОРЫ ДЛЯ ОТВЕТОВ "ДА" 5070 FOR 1-1 ТО SE 5075 IF А$(1) - "Д’THEN S-W(WP)+S: WP-WP+1 5080 NEXT I 5085 PRINT "ОБЩИЙ ВЕСОВОЙ ФАКТОР -";S 5090 REM *************************************************** 5095 REM ЕСЛИ УРОВЕНЬ РЕШЕНИЯ ПРЕВЫШЕН 5100 IF S— DL THEN PRINT "УРОВЕНЬ РЕШЕНИЯ ПРЕВЫШЕН" 5105 IF S- DLTHEN D$(DP)-K$: DP-DP+1 5110 REM *************************************************** 5115 REM ОПРЕДЕЛЕНИЕ ПРОТИВОРЕЧИЙ 5120 REM УРОВЕНЬ РЕШЕНИЯ ПРЕВЫШЕН, НО ОЦЕНКА ЗА ТЕСТ СРЕДНЯЯ
155 ЭКСПЕРТНЫЕ СИСТЕМЫ АНАЛИЗА ОБУЧЕНИЯ 5125 IF (S- DL) AND (ТВ-0) THEN PRINT"HPOTHBOPE4HE - УРОВЕНЬ ПРЕВЫШЕН, А ОЦЕНКА ХОРОШАЯ" 5130 IF (S DL) AND (ТВ-1) THEN PRINT-ПРОТИВОРЕЧИЕ - УРОВЕНЬ НЕ ПРЕВЫШЕН, А ОЦЕНКА ПЛОХАЯ" 5135RETURN Примеры выполнения RUN ИМЯ ИСПЫТУЕМОГО РЕБЕНКА ? САРА ГРИН ВОЗРАСТ ИСПЫТУЕМОГО РЕБЕНКА. ГОД-ДЕНЬ ? 12,8 КЛАСС. ГОД-МЕСЯЦ? 7,10 ДАТА ПРОВЕРКИ, МЕСЯЦ-ДЕНЬ-ГОД? 6,7,1985 ИМЯ ИССЛЕДОВАТЕЛЯ ? ДИАНА ДРАНГ ОЦЕНКА ЗА ТЕСТ НА ПРОИЗНОШЕНИЕ ПРИ ЧТЕНИИ, ГОД-МЕСЯЦ ? 5,8 УРОВЕНЬ РЕШЕНИЯ?2 РЕБЕНОК ЗАТРУДНЯЕТСЯ В: РАСПОЗНАВАНИИ БУКВ АЛФАВИТА? Н ПРОИЗНЕСЕНИИ СЛОВ БЕЗ ПРОПУСКА И ИЗМЕНЕНИЯ БУКВ ? Д ВЕРНОЙ РАССТАНОВКЕ АКЦЕНТОВ ?Д ПРАВИЛЬНОМ РАЗБИЕНИИ СЛОВ НА ЧАСТИ ? Д ЗАПОМИНАНИИ/ВОСПРОИЗВЕДЕНИИ ЗВУКОВ, БУКВ? Д * * ПРОИЗНОШЕНИЕ ПРИ ЧТЕНИИ ** * * ОЦЕНКА ЗА ТЕСТ НИЖЕ СРЕДНЕГО * * ОБЩИЙ ВЕСОВОЙ ФАКТОР -4 * * УРОВЕНЬ РЕШЕНИЯ ПРЕВЫШЕН ОЦЕНКА ЗА ТЕСТ НА ПОНИМАНИЕ ПРОЧИТАННОГО, ГОД-МЕСЯЦ ? 4,8 У РОВЕНЬ РЕШЕНИЯ? 1 РЕБЕНОК ЗАТРУДНЯЕТСЯ В: ЗАПОМИНАНИИ? Н ПРЕДСТАВЛЕНИИ ОБЩЕЙ КАРТИНЫ ? Д ПОНИМАНИИ ТРУДНЫХ СЛОВ ? Н ТОЛКОВАНИИ ПОНЯТИЙ ? д * * ОЦЕНКА ЗА ТЕСТ НИЖЕ СРЕДНЕГО * * ОБЩИЙ ВЕСОВОЙ ФАКТОР -2 * * УРОВЕНЬ РЕШЕНИЯ ПРЕВЫШЕН РАЗДЕЛЫ С ПРЕВЫШЕНИЕМ УРОВНЯ ПРОИЗНОШЕНИЕ ПРИ ЧТЕНИИ ПОНИМАНИЕ ПРОЧИТАННОГО Информация о Саре Грин взята непосредственно из настоящей главы. RUN ИМЯ ИСПЫТУЕМОГО РЕБЕНКА ? ДЖОН СМИТ ВОЗРАСТ ИСПЫТУЕМОГО РЕБЕНКА, ГОД-ДЕНЬ ? 12,8 КЛАСС, ГОД-МЕСЯЦ? 7,10 ДАТА ПРОВЕРКИ МЕСЯЦ-ДЕНЬ-ГОД ? 6,7,1985 ИМЯ ИССЛЕДОВАТЕЛЯ ? ДИАНА ДРАНГ ОЦЕНКА ЗА ТЕСТ НА ПРОИЗНОШЕНИЕ ПРИ ЧТЕНИИ ГОД-МЕСЯЦ ? 7,11 УРОВЕНЬ РЕШЕНИЯ??
ЭКСПЕРТНЫЕ СИСТЕМЫ: ЗНАНИЯ ПЛЮС ЛОГИЧЕСКИЙ ВЫВОД 156 РЕБЕНОК ЗАТРУДНЯЕТСЯ В: РАСПОЗНАВАНИИ БУКВ АЛФАВИТА ? Н ПРОИЗНЕСЕНИИ СЛОВ БЕЗ ПРОПУСКА И ИЗМЕНЕНИЯ БУКВ ? Д ВЕРНОЙ РАССТАНОВКЕ АКЦЕНТОВ ? Д ПРАВИЛЬНОМ РАЗБИЕНИИ СЛОВ НА ЧАСТИ ? Д ЗАПОМИНАНИИ/ВОСПРОИЗВЕДЕНИИ ЗВУКОВ. БУКВ? Д * * ПРОИЗНОШЕНИЕ ПРИ ЧТЕНИИ ** * * ОЦЕНКА ЗА ТЕСТ НИЖЕ СРЕДНЕГО * * ОБЩИЙ ВЕСОВОЙ ФАКТОР -4 * * УРОВЕНЬ РЕШЕНИЯ ПРЕВЫШЕН * * ПРОТИВОРЕЧИЕ - УРОВЕНЬ ПРЕВЫШЕН, А ОЦЕНКА ХОРОШАЯ О ЦЕНКА ЗА ТЕСТ НА ПОНИМАНИЕ ПРОЧИТАННОГО. ГОД-МЕСЯЦ ? 4,8 У РОВЕНЬ РЕШЕНИЯ? 1 РЕБЕНОК ЗАТРУДНЯЕТСЯ В: ЗАПОМИНАНИИ? Н ПРЕДСТАВЛЕНИИ ОБЩЕЙ КАРТИНЫ ? Д ПОНИМАНИИ ТРУДНЫХ СЛОВ ? Н ТОЛКОВАНИИ ПОНЯТИЙ ? д * * ОЦЕНКА ЗА ТЕСТ НИЖЕ СРЕДНЕГО * * ОБЩИЙ ВЕСОВОЙ ФАКТОР -2 * * УРОВЕНЬ РЕШЕНИЯ ПРЕВЫШЕН ПОДРАЗДЕЛЫ С ПРЕВЫШЕНИЕМ УРОВНЯ ПРОИЗНОШЕНИЕ ПРИ ЧТЕНИИ ПОНИМАНИЕ ПРОЧИТАННОГО Отметим, что сообщение «ПРОТИВОРЕЧИЕ - УРОВЕНЬ ПРЕВЫШЕН, а оценка хорошая» означает: система обнаружила противоречие и пользователь для получения правильного результата должен прове- рить ответы на вопросы.
4 СОЗДАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ РАЗВИТЫХ СИСТЕМ ИИ •Основные концепции объектно-ориентированного програм- мирования •Использование идей объектно-ориентированно- го программирования в разработке экспертных систем •Программная реализация ГЛАВА 11 ОСНОВЫ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ Представим себе ящик, разделенный на ячейки наподобие тех, которые раньше использовались на почте для ручной сортировки кор- респонденции. Пусть в каждой ячейке лежит листочек бумаги, на котором что-то написано. Ячейки промаркированы. Например, в ячейке с надписью «Основные направления работы» могут храниться сведения об основных направлениях работы некоторой фирмы, а в ячейке с надписью «Внешнее финансирование» — данные о проектах, которые эта фирма финансирует. Такой ящик с ячейками для хранения информации можно назвать структурой. Информацию можно уда- лять, заменять или добавлять. Структура объединяет небольшие пор- ции информации в соответствии с определенной системой. Как же строится структура и по какому принципу маркируются ячейки ? Предположим, что руководитель высокого ранга, скажем президент фирмы, хочет разбить нужную для работы информацию по определенным категориям. Он может, руководствуясь размером фирмы и родом ее деятельности, прикинуть, какой нужен ящик (структура), сколько в нем должно быть ячеек и как они должны быть промаркированы. Затем он передает свои наметки плотнику, который и смастерит нужный ящик. В программных средствах систем ИИ для хранения и сортировки информации так же используются структуры. Но в терминах ИИ, ячейки называются слотами, а их метки — атрибутами. Порции информации, хранящиеся в слотах, называются значениями. Когда значения помещаются в слоты, возникают реальные объекты.
158 ОСНОВЫ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ Допустим, что на аренду конференц-зала подано много заявок. Для того чтобы удовлетворить все заявки, нужно иметь формальную про- цедуру аренды конференц-зала. Для этого необходимо построить структуру, относящуюся к конференц-залу. Один из слотов структуры должен иметь атрибут «Предполагаемое время аренды», поскольку в одном зале нельзя провести одновременно две конференции. Еще один слот должен иметь атрибут «Лицо, ответственное за аренду» и т.д. Объект для конкретной заявки можно создать, располагая определен- ной информацией. Основные определения: 1. Структура — общее описание объекта. 2. Объект — структура, содержащая конкретную информацию. 3. Слот — место хранения информации. 4. Атрибут — метка слота. 5. Значение — информация, связанная с атрибутом и помещенная в помеченный слот. Рассмотрим пример с арендой конференц-зала более подробно. Предположим, что у фирмы, сдающей в аренду помещения, несколько конференц-залов и нужна некоторая система планирования времени аренды. Структура, которой должна пользоваться фирма, может пред- ставлять собой некоторый бланк, заполняемый по мере спроса на поме- щение. Назовем эту структуру бланком аренды конференц-зала. Заполненный экземпляр бланка, т.е. структура, содержащая конкрет- ную информацию, называется объектом. Объект содержит имя арен- дующего зал и прочую информацию в соответствии с графами бланка. В один день может проходить несколько конференций. Каждая конфе- ренция — это отдельный объект. Таким образом, можно сказать, что структура описывает атрибуты, свойственные определенным объек- там, а объект — это информация, организованная в соответствии со структурой. Описанная структура может использоваться арендаторами для за- казов помещений и позволяет точно определить, под какие мероприя- тия и когда заняты помещения. Типичная структура для аренды конференц-зала может быть такой: 1. Номер конференц-зала. 2. Тема обсуждения. 3. Фамилия докладчика. 4. Время начала конференции. 5. Время окончания конференции. Для примера выбрана структура с 5 атрибутами. Пусть у компа- нии есть 12 конференц-залов. Арендаторы, претендующие на конфе- ренц-зал, заполняют бланк, содержащий всю указанную информацию.
СОЗДАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ РАЗВИТЫХ СИСТЕМ ИИ 159 Конференц-зал арендуется на заявленное время. Заполнив бланк, можно создать, например, такой объект: 1.10 (Номер конференц-зала) 2. Порядок сверхурочной работы (Тема обсуждения) 3. Даниэль Дранк (Фамилия докладчика) 4.10:00 (Время начала конференции) 5. 11:00 (Время окончания конференции) Первое значение, 10, соответствует атрибуту «Номер конференц- зала», а второе значение, «Порядок сверхурочной работы», — атрибу- ту «Тема обсуждения». Другие значения также соответствуют атрибутам структуры. Жизнь кипит и в больших, и в маленьких компаниях. В зависимо- сти от рода деятельности служащие могут использовать различные процедуры. Процедура фактически может быть упрощена до контроль- ного списка. Авиационные техники пользуются контрольными списка- ми при проверке готовности самолета к вылету. Контрольные списки разрабатываются в соответствии с определенной структурой, напри- мер, механик должен проверить, заправлен ли самолет горючим и есть ли давление в шинах шасси. В авиакомпаниях работают люди разных специальностей, и, значит, существует много различных бланков, представляющих собой конкретные структуры для того или иного рода деятельности. Каждая структура должна иметь идентифицирующий ее номер или имя, по которому ее можно запросить или найти. Контроль- ный список для техников может называться, например, «Подготовка к полету». Таким образом, структура должна содержать: имя, по которому к ней можно обратиться; атрибуты, определяющие ее содержание. Получив бланк структуры подготовки к полету, техник, следуя контрольному списку, по мере выполнения работы заполняет бланк, т.е. создает объект. Объекту присваивается идентифицирующий но- мер, который можно рассматривать как имя объекта. Поскольку в день заполняется много различных бланков (по крайней мере один на каж- дый взлетающий самолет), в дальнейшем каждый бланк можно найти по имени (идентифицирующему номеру). Из сказанного выше можно сделать вывод — для объекта нужно знать: имя структуры, описывающей объекты этого типа; имя объекта, по которому к нему можно обратиться; атрибуты, описывающие конкретный объект; значения, присвоенные атрибутам. Кроме того, структуре, а значит, и входящим в нее объектам дол- жен сопутствовать некоторый набор процедур. Например, что делать,
160 ОСНОВЫ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ если шина шасси спущена и техник обнаружил это, когда пассажиры были уже в самолете ? Что делать, когда обнаружена течь в системе снабжения горючим ? Процедуры — тоже составные части структуры. Выполняются они в определенной последовательности. Так, перед тем, как приступить к контрольным измерениям, нужно включить систему электропитания самолета, т.е. процедуру включения системы электро- питания нужно выполнить до процедуры контрольных измерений. Процедура, которую надо выполнить, но которая прямо не указана в структуре, называется неявной. Неявная процедура, выполняемая до основной, называется предварительной неявной процедурой, а неяв- ная процедура, которая выполняется после основной — последующей неявной процедурой. Например, последующей неявной процедурой для контрольных измерений может быть заполнение бланка подготов- ки к вылету. Процедуры могут быть точно указаны в структуре или могут быть каким-то другим образом известны пользователю. В нашем примере контрольный список может содержать следующие пункты: 1. Прочесть и записать показания датчика уровня горючего. 2. Если горючего меньше, чем 2000 галлонов, обратиться к проце- дуре, описанной в бланке 34555. 3. Прочесть и записать показания датчика давления в шасси. 4. Если давление в шасси меньше, чем ..., обратиться к процедуре, описанной в бланке 34556. В слотах 2 и 4 содержатся обращения к процедурам обработки определенных ситуаций. В действительности, контрольный список не так детализирован, поскольку квалифицированный техник должен знать,что делать в том или ином случае. Создание структуры Объектно-ориентированная система должна обладать возможно- стями: создавать структуру; создавать объекты определенной структуры; создавать процедуры для работы с объектами. Структура, как уже говорилось выше, должна иметь имя, по кото- рому к ней можно обратиться, и атрибуты, свойственные описываемым ею объектам. По имени можно легко найти структуру, затем присвоить значения атрибутам и тем самым создать объект. Техник может создать объект, выбрав нужный бланк и заполнив его. При разработке объект- но-ориентированной программы надо включить в нее функцию созда- ния структуры и спецификации ее атрибутов. Ниже приводится общий
СОЗДАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ РАЗВИТЫХ СИСТЕМ ИИ 161 формат этой функции, а ее реализация на Бейсике дана в программе листинга 11.1. СОЗДАТЬ-СТРУ КТУ РУ (ИМЯ-СТРУ КТУ РЫ»... ЧИСЛО-АТРИБУТОВ-... АТРИБУТ-имя первого атрибута АТРИБУТ-имя второго атрибута АТРИБУТ-имя последнего атрибута) Проследим создание структуры на примере с конференц-залом: 1. Номер конференц-зала 2. Тема обсуждения 3. Фамилия докладчика 4. Время начала конференции 5. Время окончания конференции (ЗАЛ) (ПРЕДМЕТ) (ДОКЛАДЧИК) (НАЧАЛО) (ОКОНЧАНИЕ) Справа в скобках для упрощения работы даны краткие названия атрибутов: ЗАЛ, ПРЕДМЕТ, ДОКЛАДЧИК, НАЧАЛО, ОКОНЧА- НИЕ. Поскольку структура должна иметь имя, назовем ее, например, КОНФЕРЕНЦИЯ. В программе, где бы ни встретилась переменная, соответствующая этому имени, будет обращение к структуре, описы- вающей конференц-зал, и ее атрибутам. Атрибуты связываются со структурой следующим образом: СОЗДАТЬ-СТРУКТУРУ(ИМЯ-СТРУКТУРЫ-КОНФЕРЕНЦИЯ, ЧИСЛО-АТРИБУТОВ - 5, АТРИБУТ - ЗАЛ, АТРИБУТ - ПРЕДМЕТ, АТРИБУТ - ДОКЛАДЧИК, АТРИБУТ - НАЧАЛО, АТРИБУТ - ОКОНЧАНИЕ) При создании структуры используются ключевые слова. Ключевые слова указывают, какая именно информация вводится. Например, ключевое слово ИМЯ-СТРУКТУРЫ указывает объектно-ориентиро- ванной системе, что после знака равенства задано имя, по которому можно обращаться к структуре. По ключевому слову ЧИСЛО-АТРИ- БУТОВ задается число атрибутов (в нашем примере — 5). Ключевое слово АТРИБУТ говорит о том, что задается имя атрибута. Так в объектно-ориентированной системе можно описать бланк аренды кон- ференц-зала. Создание объекта Для того чтобы создать объект, нужно только указать системе имя структуры, описывающей объекты нужного типа, и задать конкретные значения атрибутов. Все это напоминает разработку формы некоторого 6 Заказ №476
162 ОСНОВЫ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ бланка, а затем его заполнение конкретными данными. В примере нужно указать предмет дискуссии, имя докладчика и т.д. Кроме того, каждому объекту надо дать имя. Функция создания объекта может выглядеть так: СОЗ ДАТЬ-ОБЪЕКТ (ИМЯ-СТРУ КТУ РЫ-..., ИМЯ-ОБЪЕКТА-..., АТРИБУТ 1-значение первого атрибута» АТРИБУТ2-значение второго атрибута, АТРИБУТп-значение последнего атрибута) Приведенная запись, по-видимому, не нуждается в дополнитель- ном пояснении. Значения атрибутам можно присваивать в процессе работы программы. Если при создании объекта опущено имя какого-то атрибута, ему присваивается пустое значение. Предположим, Сузан Берд хотела бы арендовать конференц-зал номер 10 на один час с 10 часов утра для обсуждения порядка сверх- урочной работы служащих. Она должна создать объект и дать ему уникальное имя, например ДЕС1: СОЗДАТЬ-ОБЪЕКТ(ИМЯ-СТРУКТУРЫ - КОНФЕРЕНЦИЯ, ИМЯ-ОБЪЕКТА-Д ЕС 1, ЗАЛ-10, ПРЕДМЕТ - ПОРЯДОК СВЕРХУРОЧНЫХ РАБОТ, ДОКЛАДЧИК - Сузан Берд, НАЧАЛО-10:00, ОКОНЧАНИЕ-11:00) В дальнейшем к объекту можно обращаться по имени ДЕС1. Все сказанное может служить канвой при разработке подпрограмм созда- ния структур и объектов. Объекты и работа с ними Создание конкретной структуры и соответствующих этой структу- ре объектов представляет собой по существу создание базы данных. Объекты — это записи базы данных, а структура — описание формата записи и ее полей. (В терминологии баз данных записи состоят из полей. Здесь поля называются атрибутами.) Базы данных обычно обес- печивают: 1) задание и изменение значений полей (атрибутов) каждой записи (объекта); 2) получение отчетов на основе информации из базы данных, на- пример, число конференций, проходящих в заданное время;
СОЗДАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ РАЗВИТЫХ СИСТЕМ ИИ 163 3) средства работы с несколькими полями (атрибутами) записи (объекта); 4) просмотр содержимого базы. Работа с объектами Прежде чем обсудить работу с объектами, создадим еще два объ- екта: СОЗДАТЬ-ОБЪЕКТ(ИМЯ-СТРУКТУРЫ - КОНФЕРЕНЦИЯ, ИМЯ-ОБЪЕКТА-ДЕС2, ЗАЛ-10, ПРЕДМЕТ - ПОВЫШЕНИЕ ОКЛАДОВ, ДОКЛАДЧИК - Марк Стон, НАЧАЛО-13:00, ОКОНЧАНИЕ-14:00) СОЗДАТЬ-ОБЪЕКТШМЯ-СТРУКТУРЫ - КОНФЕРЕНЦИЯ, ИМЯ-ОБЪЕКТ А-ОД1, ЗАЛ-11, ПРЕДМЕТ - ПЛАНЫ ПРОДАЖ, ДОКЛАДЧИК - Энди Ром, НАЧАЛО-10:00, ОКОНЧАНИЕ-12:00) Приведенную запись легко истолковать: Марк Стон арендовал кон- ференц-зал 10 с 13:00 до 14:00 для обсуждения повышения окладов (имя объекта ДЕС2), а Энди Ром — конференц-зал 11с 10:00 до 12:00 для обсуждения планов продаж (имя объекта ОД1). Просмотр объектов и структур Иногда необходимо просмотреть структуры и объекты, содержащи- еся в системе. Просмотр осуществляется в форме диалога с системой по запросу с терминала. Получив запрос, система выполняет функцию СПИСОК-ОБЪЕКТОВ. Для приведенного примера результат работы функции: ДЕС1 ДЕС2 ОД1 Список структур можно получить с помощью функции СПИСОК- СТРУКТУР. Поскольку в примере создана только одна структура, результат работы функции: КОНФЕРЕНЦИЯ Список значений атрибутов отдельного объекта выбирается функ- цией ПРОСМОТР-ОБЪЕКТА. Например, запросить информацию об 6*
164 ОСНОВЫ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ объекте ОД 1 можно так: ПРОСМОТР-ОБЪЕКТА, ИМЯ-СТРУКТУРЫ-КОНФЕРЕНЦИЯ, ИМЯ-ОБВЕКТА-ОД1 и система ответит: ЗАЛ-11 ПРЕДМЕТ-ПЛАНЫ ПРОДАЖ ДОКЛАДЧИК - Энди Ром НАЧАЛО - 10:00 ОКОНЧАНИЕ - 12:00 Работа с объектами Наряду с созданием объектов иногда может потребоваться обратная операция — удаление объектов. Например, когда Энди Ром закончит обсуждение планов продаж, соответствующий объект нужно удалить из базы данных, поскольку конференц-зал освободился. Это можно сделать с помощью функции УДАЛ ИТЬ. Удалив объект, можно еще раз обратиться к функции СПИСОК-ОБЪЕКТОВ, результат работы кото- рой: ДЕС1 ДЕС2 Видно, что объекта ОД 1 в базе данных больше нет. Порой возникает необходимость изменить значение атрибута объ- екта. Для этого следует воспользоваться функцией ПРИСВОИТЬ. На- пример, значение атрибута времени начала обсуждения объекта ДЕС1 можно изменить так: ПРИСВОИТЬ (ИМЯ-СТРУКТУРЫ - КОНФЕРЕНЦИЯ, ИМЯ-ОБЪЕКТА - ДЕС1, НАЧАЛО-9:00) Если затем обратиться к функции ПРОСМОТР-ОБЪЕКТА, систе- ма ответит: ЗАЛ - 10 ПРЕДМЕТ - ПОРЯДОК СВЕРХУРОЧНОЙ РАБОТЫ ДОКЛАДЧИК - Сузан Берд НАЧАЛО-9:00 ОКОНЧАНИЕ - 11:00 Заметим, что время изменилось с 10:00 на 9:00. Последняя функция, которую надо обсудить, — это функция ко- пирования значения атрибута в переменную (КОПИРОВАТЬ). Как
СОЗДАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ РАЗВИТЫХ СИСТЕМ ИИ 165 только значение атрибута скопировано в переменную, с ней можно выполнять различные операции. Например, если функцией КОПИРО- ВАТЬ значение атрибута ДОКЛАДЧИК объекта ДЕС2 передано в пе- ременную Y$, то в дальнейшем в программе на Бейсике может содержаться предложение: PRINT Y$ выводящее на печать: Марк Стон Так, если нужно вставить в отчет данные об использовании конференц- здлов, можно просто скопировать нужную информацию в переменные и затем распечатать ее. Теперь давайте подытожим сказанное: 1. Структура создается с помощью функции СОЗДАТЬ-СТРУК- туру. 2. Объекты, соответствующие структуре, создаются с помощью функции СОЗДАТЬ-ОБЪЕКТ. 3. Значения атрибутам присваиваются с помощью функции ПРИ- СВОИТЬ. 4. Доступ к значению атрибутов осуществляется функцией КОПИ- РОВАТЬ. 5. Просмотр структур и объектов выполняется с помощью функций СПИСОК-СТРУКТУР, СПИСОК-ОБЪЕКТОВ и ПРОСМОТР-ОБЪ- ЕКТОВ. Вызов процедуры При обсуждении контрольного списка, используемого авиацион- ным техником, упоминалась процедура, к которой нужно обратиться, если давление в шасси слишком мало. Эта процедура может заключать- ся просто в подсоединении воздушного шланга к шине шасси. В любом случае техник должен знать, что делать. Говоря в более общем виде: 1) существует процедура для проверки слота объекта на конкретное значение (в нашем примере на минимальное значение давления); 2) если проверяемое значение выходит за некоторую границу, вы- зывается соответствующая процедура (если давление в шасси слишком мало, выполняется их подкачка). Рассмотрим еще один пример работы с процедурами. В примере с арендой конференц-зала обсуждалось изменение времени начала кон- ференции, проводимой Сузан Берд, с 10:00 на 9:00 с помощью функции
166 ОСНОВЫ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ ПРИСВОИТЬ. Что бы произошло, если бы кто-то еще захотел исполь- зовать тот же конференц-зал с 9:00 до 10:00 ? Если бы допускалось внесение изменений без каких-либо дополнительных действий, в 9:00 в одном и том же зале встретились бы две группы. Избежать этого можно следующим образом: когда Сузан меняет время начала конфе- ренции, автоматически должна вызываться процедура, проверяющая для всех объектов время начала и окончания конференций, проводи- мых в зале с указанным номером. Если обнаружена конфликтная си- туация, Сузан ставится в известность и должна принять соответствующее решение. С другой стороны, если Сузан хочет поменять лишь тему обсужде- ния (атрибут ПРЕДМЕТ), дополнительная процедура не нужна, по- скольку такое изменение не затрагивает остальные объекты. Следует помнить основное правило работы с процедурами: когда изменяются определенные атрибуты, должна быть вызвана процедура, проверяющая, нужны ли какие-либо дополнительные действия. Способы вызова процедур При обсуждении операций с объектами упоминалась функция ПРИСВОИТЬ, которая помещает значение в слот. В дальнейшем при разборе программы будет показано, как эта функция реализуется под- программой, включающей предложения поиска объекта структуры и присвоения значения атрибуту. Например, функция: ПРИСВОИТЬ (ИМЯ-СТРУКТУРЫ=КОНФЕРЕНЦИЯ. ИМЯ-ОБЪЕКТА“ДЕС1, НАЧАЛ 0-9:00) приведет к выполнению предложений поиска адреса структуры КОН- ФЕРЕНЦИЯ в памяти системы и объекта ДЕС1 в области, отведенной этой структуре. Затем значение 9:00 будет помещено в слот, отведен- ный атрибуту НАЧАЛО. Возникает вопрос: «Каким образом вызывает- ся процедура ?». Подпрограмме, реализующей функцию ПРИСВОИТЬ, должен быть доступен некоторый признак, указываю- щий, что при изменении значения определенного атрибута автомати- чески вызывается процедура. Поскольку изменение значений атрибутов выполняется подпрограммой ПРИСВОИТЬ, именно из нее и вызывается соответствующая процедура. Как же указать подпрограмме ПРИСВОИТЬ, при изменении ка- ких именно атрибутов вызывается процедура ? Например, при измене- нии атрибута времени начала конференции объекта ДЕС1 нужно вызывать процедуру, выявляющую конфликтную ситуацию, измене- ние же атрибута ПРЕДМЕТ не требует вызова какой-либо процедуры.
СОЗДАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ РАЗВИТЫХ СИСТЕМ ИИ 167 Ответ очень прост. Описывая структуру, воспользуйтесь приведен- ными ниже соглашениями: 1. Поставить в начале имени атрибута символ «*». 2. Когда подпрограмма ПРИСВОИТЬ обнаруживает этот атрибут, она должна знать, что нужно вызвать процедуру, поскольку есть сим- вол *. 3. Имя вызываемой процедуры указать в следующем атрибуте. Допустим, что процедуру нужно вызывать при изменении атрибу- тов времени начала или окончания конференции. Процедура должна выявлять конфликтные ситуации, касающиеся времени использова- ния конференц-зала. Для этого, пользуясь предложенным методом, функцию СОЗДАТЬ-СТРУКТУРУ можно записать так: СОЗДАТЬ СТРУКТУРУ (ИМЯ-СТРУКТУРЫ-КОНФЕРЕНЦИЯ, ЧИСЛО-АТРИБУТОВ - 7, АТРИБУТ-ЗАЛ, АТРИБУТ - ПРЕДМЕТ, АТРИБУТ - ДОКЛАДЧИК, АТРИБУТ -*НАЧАЛО, АТРИБУТ- ПРОЦЕДУРА, АТРИБУТ -*ОКОНЧАНИЕ, АТРИБУТ - ПРОЦЕДУРА) Отметим, что символ * стоит перед атрибутами НАЧАЛО и ОКОН- ЧАНИЕ. В соответствии с этим добавлены еще два атрибута с ключе- вым словом ПРОЦЕДУРА (число атрибутов увеличено до 7). Слоты процедур будут применяться при создании объектов структуры КОН- ФЕРЕНЦИЯ для указания имен процедур, которые должны вызывать- ся из функции ПРИСВОИТЬ при изменении значений атрибутов НАЧАЛО и ОКОНЧАНИЕ. Вызов функции создания объекта будет выглядеть следующим образом: СОЗДАТЬ-ОБЪЕКТШМЯ-СТРУКТУРЫ - КОНФЕРЕНЦИЯ, ИМЯ-ОБЪЕКТА-ДЕС1, ЗАЛ-10, ПРЕДМЕТ - ПОРЯДОК СВЕРХУРОЧНЫХ РАБОТ, ДОКЛАДЧИК - Сузан Берд, НАЧАЛО-10:00, ПРОЦЕДУРА - имя процедуры ОКОНЧАНИЕ-11:00, ПРОЦЕДУРА - имя процедуры) На Бейсике подпрограмма, реализующая функцию СОЗДАТЬ- ОБЪЕКТ, может использовать в качестве имени процедуры число (в других языках, например в языкеЫЗР, можно пользоваться символи- ческими именами). В Бейсике число будет указывать номер процеду- ры. В этом случае результат работы функции ПРОСМОТР-ОБЪЕКТА можно представить так:
168 ОСНОВЫ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ ЗАЛ-10 ПРЕДМЕТ-ПОРЯДОК СВЕРХУРОЧНОЙ РАБОТЫ ДО КЛАДЧИК-СУ ЗАН БЕРД *НАЧАЛ 0-10:00 ПРОЦЕДУРА-1 *ОКОНЧАНИЕ-11:00 ПРОЦЕДУРА-1 Единица при указании процедуры в обеих строках означает, что при изменении времени начала или окончания конференции вызываться одна и та же процедура. Когда Сузан захочет изменить время начала конференции, она должна будет воспользоваться функ- цией ПРИСВОИТЬ. При этом будет вызвана процедура 1, которая просмотрит все объекты с атрибутом ЗАЛ=10 и отследит, чтобы время аренды десятого зала разными людьми не пересекалось. Говоря более подробно, подпрограмма, реализующая функцию ПРИСВОИТЬ, вы- полнит следующие действия: 1) найдет адрес структуры в памяти; 2) просмотрит имена атрибутов, для которых запрошено изменение значений; 3) если перед именем стоит ♦, подготовит вызов процедуры; 4) найдет адрес объекта в памяти; 5) при необходимости вызовет соответствующую процедуру или просто изменит значение атрибута. Такая работа подпрограммы, реализующей функцию, которая включает вызов дополнительных процедур, представляет собой наибо- лее характерное свойство объектно-ориентированного программирова- ния. По сути дела — это способ передачи сообщений для связи между разнородными объектами. Описанное свойство закладывается в систе- му при ее разработке. Например, если процедура, вызванная при из- менении времени конференции, обнаружила конфликтную ситуацию, подпрограмма ПРИСВОИТЬ направит сообщение объекту — доклад- чику. Это сообщение приведет к вызову другой процедуры, которая выведет на терминал сообщение, информирующее докладчика о конф- ликте. Теперь, когда основные идеи объектно-ориентированного про- граммирования изложены, приступим к подробному разбору программы (листинг 11.1). Пример программы Программа состоит из ряда подпрограмм, построенных согласно основным принципам объектно-ориентированного программирования. Читатель может использовать эти подпрограммы для разработки своей собственной системы. Программа разделена на две части. Одна часть
СОЗДАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ РАЗВИТЫХ СИСТЕМ ИИ 169 (предложения 2999 — 5240) реализует собственно идеи объектно-ори- ентированного программирования. Другая (предложения 2 —905) — иллюстрирует применение ключевых подпрограмм. Последняя в свою очередь разделена на 8 объектно-ориентированных функций, одинако- во использующих основные подпрограммы. Разобрав одну из них, мож- но понять, как работают все остальные. Любая функция может быть выбрана из меню. Посмотрим, например, как работает программа при создании структуры. Пояснение к программе Программа запускается с консоли по команде RUN. В предложении 2 создается структурно-объектный массив SO$, который будет содер- жать определения структур и объектов. Предложения 2-55 предназна- чены для вывода на экран меню: ВВЕДИТЕ НУЖНЫЙ НОМЕР 1 — СОЗДАТЬ СТРУКТУРУ 2 —СОЗДАТЬ ОБЪЕКТ 3 — ВЫВЕСТИ ИМЕНА ВСЕХ СТРУКТУР 4 — ВЫВЕСТИ ИМЕНА ВСЕХ ОБЪЕКТОВ 5 — ПРОСМОТРЕТЬ СТРУКТУРУ 6 — ПРОСМОТРЕТЬ ОБЪЕКТ 7 — ПРИСВОИТЬ ЗНАЧЕНИЕ ОБЪЕКТУ 8 — СКОПИРОВАТЬ ЗНАЧЕНИЕ АТРИБУТА В ПЕРЕМЕННУЮ 9 — ВЫХОД ? 1 Пользователь вводит ответ после знака вопроса. Если пользователь ввел 1. в программе будет выполняться предложение 60, передающее управление на подпрограмму предложения 100. Предложения 100 и 110 служат для организации диалога с пользователем: ВВЕДИТЕ ИМЯ СТРУКТУРЫ ? КОНФЕРЕНЦИЯ ВВЕДИТЕ ЧИСЛО АТРИБУТОВ ? 5 В результате этого диалога в предложении 115 переменной N будет присвоено значение 5, а переменной Е — 7. Выполнение цикла FOR в предложениях 120-135 продолжит диалог: АТРИБУТ 1 ? ЗАЛ АТРИБУТ 2? ПРЕДМЕТ АТРИБУТ 3 ? ДОКЛАДЧИК АТРИБУТ 4? НАЧАЛО АТРИБУТ 5 ? ОКОНЧАНИЕ Последние семь ответов пользователя записываются во временный массив Т$. Подпрограмма создания структуры будет затем вызвана
170 ОСНОВЫ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ косвенно в предложении 145, передающем управление на предложение 3000. Программа написана так, что в массиве SO$ можно разместить только 2 структуры, но при необходимости читатель может это изме- нить. Одна структура должна начинаться с элемента SO$ (1), а вторая — с элемента SO$(101). Массив SO$ формируется по мере создания структур, начиная с первого элемента. Подпрограмма создания струк- туры реализована предложениями 3000 — 3080. Она определяет, в какую половину массива SO$ поместить описания структуры, содержа- щиеся во временном массиве Т$. Возврат из этой подпрограммы на предложение 150 опять приводит к выводу меню на экран. Обработка оставшихся пунктов меню аналогична, и ее легко про- следить по программе. Листинг программы Листинг ПЛ 1 REM ******* ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ ★★★★ 2 DIM FO$(200): REM МАССИВ СТРУКТУР 5 PRINT "ВВЕДИТЕ НУЖНЫЙ НОМЕР" 10 PRINT "1 — СОЗДАТЬ СТРУКТУРУ” 15 PRINT ”2 — СОЗДАТЬ ОБЪЕКТ" 20 PRINT ”3 — ВЫВЕСТИ ИМЕНА ВСЕХ СТРУКТУР” 25 PRINT "4 — ВЫВЕСТИ ИМЕНА ВСЕХ ОБЪЕКТОВ” 30 PRINT ”5 — ПРОСМОТРЕТЬ СТРУКТУРУ" 35 PRINT ”6 — ПРОСМОТРЕТЬ ОБЪЕКТ” 40 PRINT ”7 — ПРИСВОИТЬ ЗНАЧЕНИЕ ОБЪЕКТУ” 45 PRINT "8 — СКОПИРОВАТЬ ЗНАЧЕНИЕ АТРИБУТА В ПЕРЕМЕННУЮ" 50 PRINT "9—ВЫХОД" 55 INPUT N 60 ON N GOSUB 100,200,300,400.500,600.700.800,900 65 GOTO 5 100 REM **** СОЗДАНИЕ СТРУКТУРЫ **** 105 INPUT "ВВЕДИТЕ ИМЯ СТРУКТУРЫ"Т$(1) 110 INPUT "ВВЕДИТЕ ЧИСЛО АТРИБУТОВ";Т$(2) 115 N-VAL(T$(2)): E-3+N-1 120 FOR 1-1 ТО Е 125 PRINT "АТРИБУТ";1-2;"-”; 130 INPUT T$(l) 135 NEXT I 140 REM ВЫЗОВ ПРОЦЕДУРЫ СОЗДАНИЯ СТРУКТУРЫ 145 GOSUB 3000 150 RETURN 200 REM ***** СОЗДАНИЕ ОБЪЕКТА 205 INPUT "ВВЕДИТЕ ИМЯ СТРУКТУРЫ”;Т$(1) 210 INPUT "ВВЕДИТЕ ИМЯ ОБЪЕКТА”;Т$(2) 215 INPUT "ВВЕДИТЕ ЧИСЛО АТРИБУТОВ”;Т$(3) 220 N-VAL(T$(3)): E-4+N-1 225 FOR I-4 ТО Е
СОЗДАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ РАЗВИТЫХ СИСТЕМ ИИ 171 230 PRINT "АТРИБУТ ";1-3;"-"; 235 INPUT T$(l); 240 NEXT I 245 REM ВЫЗОВ ПРОЦЕДУРЫ СОЗДАНИЯ ОБЪЕКТА 250 GOSUB 3200 255 RETURN 300 REM*** ИМЕНА ВСЕХ СТРУКТУР 310 REM ПЕЧАТЬ ИМЕН ВСЕХ СТРУКТУР 315 GOSUB 4400 320 RETURN 400 REM **** ИМЕНА ВСЕХ ОБЪЕКТОВ 405 INPUT "ВВЕДИТЕ ИМЯ СТРУКТУРЫ";Т$(1) 410 REM ПЕЧАТЬ ИМЕН ВСЕХ ОБЪЕКТОВ СТРУКТУРЫ 415 GOSUB 4200 420 RETURN 500 REM *** ПРОСМОТР СТРУКТУРЫ 505 INPUT "ВВЕДИТЕ ИМЯ СТРУКТУРЫ";Т$(1) 510 REM ПЕЧАТЬ АТРИБУТОВ СТРУКТУРЫ 515 GOSUB 3400 520 RETURN 600 REM *** ПРОСМОТР ОБЪЕКТА 605 INPUT "ВВЕДИТЕ ИМЯ СТРУКТУРЫ";Т$(1) 610 INPUT "ВВЕДИТЕ ИМЯ ОБЪЕКТА";Т$(2) 615 REM *** ПРОСМОТР ОБЪЕКТА 620 GOSUB 4000 625 RETURN 700 REM *** ПРИСВОЕНИЕ ЗНАЧЕНИЯ ОБЪЕКТУ 705 INPUT "ВВЕДИТЕ ИМЯ СТРУКТУРЫ";Т$(1) 710 INPUT "ВВЕДИТЕ ИМЯ ОБЪЕКТА";Т$(2) 715 INPUT "ВВЕДИТЕ ИМЯ АТРИБУТА";Т$(3) 720 INPUT "ВВЕДИТЕ ЕГО ЗНАЧЕНИЕ";Т$(4) 725 REM *** ПРИСВОЕНИЕ ЗНАЧЕНИЯ АТРИБУТУ ОБЪЕКТА 730 GOSUB 5000 735 RETURN 800 REM *** КОПИРОВАНИЕ ЗНАЧЕНИЯ ИЗ АТРИБУТА В ПЕРЕМЕННУЮ 805 INPUT "ВВЕДИТЕ ИМЯ СТРУКТУРЫ";Т$(1) 810 INPUT "ВВЕДИТЕ ИМЯ ОБЪЕКТА";Т$(2) 815 INPUT "ВВЕДИТЕ ИМЯ АТРИБУТА”;Т$(3) 820 REM *** КОПИРОВАНИЕ АТРИБУТА В Z$ 825 GOSUB 5200 830 PRINT "ЗНАЧЕНИЕ АТРИБУТА -";Z$ 835 RETURN 900 REM ВЫХОД 905 STOP 999 REM ****** ПОДПРОГРАММЫ ПОЛЬЗОВАТЕЛЯ ****** 2999 REM ***** СИСТЕМНЫЕ ПОДПРОГРАММЫ ********* 3000 REM ***** СОЗДАНИЕ СТРУКТУРЫ ЗОЮ REM Т$(1) — ИМЯ СТРУКТУРЫ 3015 REM Т$(2) — ЧИСЛО АТРИБУТОВ 3020 REM АТРИБУТ1. * ОЗНАЧАЕТ, ЧТО ПОСЛЕ Т$(3) ИДЕТ НОМЕР 3021 REM ПОДПРОГРАММЫ 3025 REM .... 3030 REM T$(N+2) — АТРИБУТ N
172 ОСНОВЫ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ 3035 REM ПОИСК ИМЕНИ СТРУКТУРЫ В ВЕРХНЕЙ ИЛИ НИЖНЕЙ 3036 REM ПОЛОВИНЕ 3040 REM ПО ЭТОМУ АДРЕСУ ЗАПОМИНАЮТСЯ АРГУМЕНТЫ СТРУКТУРЫ 3045 Y=1; REM АДРЕС НИЖНЕЙ ПОЛОВИНЫ 3050 IF FO$(1) "" THEN Y-101: REM УКАЗАТЕЛЬ НА ВЕРХНЮЮ 3051 REM НЕ ПУСТУЮ ПОЛОВИНУ 3055 N=VAL(T$(2)): N=N+2: 3056 REM ЧИСЛО ЭЛЕМЕНТОВ В СТРУКТУРЕ - ЧИСЛО АРГУМЕНТОВ +2 3060 FOR Z=1 ТО N 3065 FO$(Y)=T$(Z): Y=Y+1 3070 NEXT Z 3080 RETURN 3200 REM СОЗДАНИЕ ПОСЛЕДОВАТЕЛЬНОСТИ ДЛЯ ВЫЗОВА ОБЪЕКТА 3210 REM Т$(1) — ИМЯ СТРУКТУРЫ 3215 REM Т$(2) — ИМЯ ОБЪЕКТА 3220 REM Т$(3) — ЧИСЛО ЗНАЧЕНИЙ АТРИБУТОВ 3225 REM Т$(4) — ЗНАЧЕНИЕ АТРИБУТА 1 3230 REM Т$(...) — ЗНАЧЕНИЕ АТРИБУТА ... 3235 REM T$(N+3) — ЗНАЧЕНИЕ АТРИБУТА N 3240 REM УКАЗАТЕЛЬ НА СТРУКТУРУ 3245 Z=1 3250 IF T$(1)=FO$(101) THEN Z=101 3255 E-Z+99: REM ПОСЛЕДНИЙ АДРЕС В ОБЛАСТИ СТРУКТУРЫ 3260 REM ПОИСК ПЕРВОГО СВОБОДНОГО МЕСТА ДЛЯ РАЗМЕЩЕНИЯ ОБЪЕКТА 3265 FOR l»Z ТО Е 3270 IF FO$(I)-"" THEN GOTO 3280 3275 NEXT I 3280 REM ЗАПИСЬ ИМЕНИ ОБЪЕКТА 3285 L=l: FO$(L) - Т$(2): L-L+1: REM ЗАПИСЬ ИМЕНИ ОБЪЕКТА 3290 REM ПОЛУЧИТЬ ЧИСЛО АТРИБУТОВ 3295 N=VAL(T$(3)): F0$(L)=T$(3): L-L+1: REM ЗАПОМНИТЬ НОМЕР 3300 E-L+N-1: REM АДРЕС ПОСЛЕДНЕГО АТРИБУТА 3305 Х=4: REM АДРЕС ПОСЛЕДНЕГО АТРИБУТА 3310 FOR I-LTOE 3315 FO$(I>-T$(K): К=К+1 3320 NEXT I 3325 RETURN 3400 REM ****** ПЕЧАТЬ АТРИБУТОВ СТРУКТУРЫ 3405 REM T$( 1) — ИМЯ СТРУКТУРЫ 3410 REM УКАЗАТЕЛЬ НА СТРУКТУРУ 3415 Z-1 3420 IF T$(1)=FO$(101) THEN Z-101 3425 PRINT-СТРУКТУРА ”;Т$(1): Z-Z+1 3430 PRINT-ЧИСЛО АТРИБУТОВ -”;f O$(Z) 3435 N=VAL(FO$(Z)): Z-Z+1 3440 E-Z+N-1 3445 K-1: REM НОМЕР АТРИБУТА 3450 FOR l=Z TO E 3455 PRINT-НОМЕР АТРИБУТА";К;"-";ЕО(1) 3460 K-K+1 3465 NEXT I 3470 RETURN
СОЗДАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ РАЗВИТЫХ СИСТЕМ ИИ 173 3600 REM ПОИСК НОМЕРА АТРИБУТА В ОБЪЕКТЕ 3603 REM Z-HOMEP АТРИБУТА. А-0 ЕСЛИ НЕТ * И А-1, ЕСЛИ * ЕСТЬ 3605 REM ИМЯ СТРУКТУРЫ Т$(1) 3610 REM ... РЕЗЕРВ 3615 REM ИМЯ АТРИБУТА Т#(3) 3630 REM УКАЗЫВАЕТ НА СТРУКТУРУ 3635 Z-1 3640 IF T$(1)-FO$(101) THEN Z-101 3645 Z-Z+2: N-1: REM НАЧАЛО ПОИСКА 3650 IF T$(3hFO$(Z) THEN GOTO 3665 3655 Z-Z+1: N-N+1 3660 GOTO 3650: REM ЕЩЕ ПОПЫТКА 3665 REM ЕСТЬ ЛИ В АТРИБУТЕ * 3670 A-О: Z-Z-1: REM УКАЗЫВАЕТ НА ПОЛОЖЕНИЕ * 3675 IF FO$(Z)=’’*" THEN А-1 3680Z-N+1: RETURN 3800 REM *********** УКАЗАТЬ ОБЪЕКТ 3810 REM Т$(1) — ИМЯ СТРУКТУРЫ 3815 REM Т$(2) — ИМЯ ОБЪЕКТА 3820 Z-1 3825 IF T$(1)-FO$(101) THEN Z-101 3830 REM ЧИСЛО АТРИБУТОВ СТРУКТУРЫ 3835 Z-Z+1: N-VAL(FO$(Z)) 3840 Z-Z+N+1: REM ПЕРВЫЙ ОБЪЕКТ В СТРУКТУРЕ 3845 REM СВОБОДНОЕ МЕСТО РАЗМЕЩЕНИЯ ОБЪЕКТА ? 3850 IF FO$(Z) ”” THEN GOTO 3865 3855 REM ПОИСК МЕСТА, ЗАНЯТОГО ОБЪЕКТОМ 3860 Z-Z+1: GOTO 3850 3865 REM ПОЛУЧИТЬ ЧИСЛО АТРИБУТОВ ОБЪЕКТА 3870 Z-Z+1: N-VAL(FO$(Z): Z-Z+1: 3871 REM УКАЗАТЕЛЬ УСТАНОВИТЬ НА ИМЯ ОБЪЕКТА 3875 REM ЭТО ОБЪЕКТ? 3880 IF Т$(2)- FO$(Z) THEN RETURN:REM Z — АДРЕС ОБЪЕКТА 3885 REM СЛЕДУЮЩИЙ ОБЪЕКТ 3890 Z-Z+N+2: GOTO 3880 4000 REM ******** ПРОСМОТР ОБЪЕКТА 4005 REM Т$(1) — ИМЯ СТРУКТУРЫ 4010 REM Т$(2) — ИМЯ ОБЪЕКТА 4015 REM Z-ЗНАЧЕНИЕ УКАЗАТЕЛЯ ОБЪЕКТА 4020 REM N — ЧИСЛО АТРИБУТОВ ОБЪЕКТА 4025 GOSUB 3800 4030 PRINT “ОБЪЕКТ =“;FO$(Z):Z-Z+1 4035 PRINT “ЧИСЛО АТРИБУТОВ -”;FO$(Z):Z-Z+1 4040 E-Z+N-1: Р-1 4045 FOR l-Z TO E 4050 РР1ИТ”АТРИБУТ НОМЕР ";P;”PABEH ";FO$(I):P=P+1 4055 NEXT I 4060 RETURN 4200 REM ******* ПЕЧАТЬ ИМЕН ВСЕХ ОБЪЕКТОВ 4205 REM ИМЯ СТРУКТУРЫ Т$(1) 4210 REM УКАЗАТЕЛЬ НА СТРУКТУРУ 4215 Z-1 4220 IF T$(1)=FO$(101) THEN Z-101
174 ОСНОВЫ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ 4225 E-Z+99: REM КОНЕЦ МАССИВА СТРУКТУР 4230 REM ЧИСЛО АТРИБУТОВ СТРУКТУРЫ 4235Z-Z+1: N-VAL(FO$(Z)) 4240 REM ПОЛУЧЕНИЕ ЧИСЛА АТРИБУТОВ ОБЪЕКТА 4245 Z-Z+N+2: N-VAL(FO$(Z)): Z-Z-1:REM ПЕРВЫЙ ОБЪЕКТ 4250 FOR l-Z ТО Е STEP N+2 4255 IF FO$(I) " " THEN PRINT”HMR ОБЪЕКТА — ";FO$(I) 4260 NEXT I 4265 RETURN 4400 REM ********* ПЕЧАТЬ ИМЕН ВСЕХ СТРУКТУР 4405 PRINT-СТРУКТУРЫ" 4410 PRINT FO$(1) 4415 PRINT FO$(101) 4420 RETURN 4600 REM ********* УДАЛИТЬ ОБЪЕКТ 4605 REM T$(1) — ИМЯ СТРУКТУРЫ 4610 REM T$(2) — ИМЯ ОБЪЕКТА 4615 REM Z-АДРЕС ОБЪЕКТА, N- ЧИСЛО АТРИБУТОВ 4620 GOSUB 3800 4625 E-Z+N+2: REM КОНЕЦ РАЗМЕЩЕНИЯ ОБЪЕКТОВ 4630 FOR l=Z TO E 4635 FO$(lh”” 4640 NEXT I 4645 RETURN 4800 REM ******** НАЙТИ АТРИБУТ ОБЪЕКТА 4805 REM T$(1) — ИМЯ СТРУКТУРЫ 4810 REM Т$(2) — ИМЯ ОБЪЕКТА 4815 REM Т$(3) — ИМЯ АТРИБУТА 4820 REM ОПРЕДЕЛИТЬ НОМЕР АТРИБУТА ПО АДРЕСУ (Z), 4821 REM ЕСЛИ АТРИБУТ-* А-1 4825 GOSUB 3600: AN-Z 4830 REM ОПРЕДЕЛИТЬ АДРЕС ОБЪЕКТА (Z) 4835 GOSUB 3800 4840 REM ОПРЕДЕЛИТЬ АДРЕС АТРИБУТА 4845 Z-Z+AN-1 4850 RETURN 5000 REM ********* ПРИСВОИТЬ ЗНАЧЕНИЕ АТРИБУТУ ОБЪЕКТА 5005 REM Т$(1) — ИМЯ СТРУКТУРЫ 5010 REM Т$(2) — ИМЯ ОБЪЕКТА 5015 REM Т$(3) — ИМЯ АТРИБУТА 5020 REM Т$(4) — ЗНАЧЕНИЕ 5025 REM ОПРЕДЕЛИТЬ АДРЕС АТРИБУТА ОБЪЕКТА (Z) 5030 GOSUB 4800 5035 REM ЗАПИСАТЬ ЗНАЧЕНИЕ В АТРИБУТ, ЕСЛИ НЕТ *, А-0 5040 IF А=0 THEN GOTO 5060: REM * НЕТ 5045 REM * — ВЫЗОВ ПОДПРОГРАММЫ ПОЛЬЗОВАТЕЛЯ 5050 Z-Z+1: N-VAL(FO$(Z): ON N GOSUB 10000 5055 Z-Z-1: FO$(Z>=T$(4): RETURN: REM ОПРЕДЕЛИТЬ АДРЕС АТРИБУТА 5060 Z-Z+1: FO$(Z>=T$(4) 5065 RETURN 5200 REM ********* СКОПИРОВАТЬ АТРИБУТ ОБЪЕКТА В Z$ 5205 REM T$(1) — ИМЯ СТРУКТУРЫ 5210 REM Т$(2) — ИМЯ ОБЪЕКТА
СОЗДАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ РАЗВИТЫХ СИСТЕМ ИИ 175 5215 REM Т$(3) — ИМЯ АТРИБУТА 5220 REM ЗНАЧЕНИЕ Z$ 5225 REM ОПРЕДЕЛИТЬ АДРЕС АТРИБУТА ОБЪЕКТА (Z) 5230 GOSUB 4800 5235 Z$-FO$(Z) 5240 IF А=0 THEN GOTO 5260: REM * НЕТ 5245 REM * — ВЫЗОВ ПОДПРОГРАММЫ ПОЛЬЗОВАТЕЛЯ 5255 Z$-FO$(Z): RETURN: REM ОПРЕДЕЛИТЬ АДРЕС АТРИБУТА 5260 Z-Z+1: Z$-FO$(Z) 5265 RETURN 9000 REM ПРОГРАММА ПРОВЕРКИ ПСЕВДОНАПРЯЖЕНИЯ 9002 REM ПРОВЕРКА ПСЕВДОНАПРЯЖЕНИЯ, ВЫБИРАЕМОГО 9003 REM ФУНКЦИЕЙ RND(X), 9004 REM НА ПСЕВДОВРЕМЕННЫХ ИНТЕРВАЛАХ (ЦИКЛ FOR QB) 9020 Т$(1)-"”: Т$(2)-”": Т$(3)-"ВРЕМЯ”: Т$(4)=”5” 9040 FOR QA-1 ТО 30: GOSUB 5000 9060 FOR QB-1 ТО 1000: NEXT QB: REM ПСЕВДОВРЕМЯ ЗАДЕРЖКИ 9080 NEXT QA: RETURN 9999 REM ************* ПРОГРАММА ПОЛЬЗОВАТЕЛЯ ********* 10000 QQ-RND(Z): IF QQ 0.7 10001 THEN РР1НТ”НАПРЯЖЕНИЕ СЛИШКОМ ВЕЛИКОГО 10005 RETURN Примеры работы программы Ниже приведены примеры, иллюстрирующие работу с каждым пунктом меню (см.листинг 11.1). Напомним, что ответы пользователя идут после знака вопроса. ВВЕДИТЕ НУЖНЫЙ НОМЕР 1 — СОЗДАТЬ СТРУКТУРУ 2 — СОЗДАТЬ ОБЪЕКТ 3 — ВЫВЕСТИ ИМЕНА ВСЕХ СТРУКТУР 4 — ВЫВЕСТИ ИМЕНА ВСЕХ ОБЪЕКТОВ 5 — ПРОСМОТРЕТЬ СТРУКТУРУ 6 — ПРОСМОТРЕТЬ ОБЪЕКТ 7 — ПРИСВОИТЬ ЗНАЧЕНИЕ ОБЪЕКТУ 8 — СКОПИРОВАТЬ ЗНАЧЕНИЕ АТРИБУТА В ПЕРЕМЕННУЮ 9 — ВЫХОД ? 1 ВВЕДИТЕ ИМЯ СТРУКТУРЫ ? КОНФЕРЕНЦИЯ ВВЕДИТЕ ЧИСЛО АТРИБУТОВ ? 5 АТРИБУТ 1 ? ЗАЛ АТРИБУТ 2? ПРЕДМЕТ АТРИБУТ 3 ? ДОКЛАДЧИК АТРИБУТ 4? НАЧАЛО АТРИБУТ 5 ? ОКОНЧАНИЕ ВВЕДИТЕ НУЖНЫЙ НОМЕР 1 — СОЗДАТЬ СТРУКТУРУ 2 — СОЗДАТЬ ОБЪЕКТ 3 — ВЫВЕСТИ ИМЕНА ВСЕХ СТРУКТУР 4 — ВЫВЕСТИ ИМЕНА ВСЕХ ОБЪЕКТОВ
176 ОСНОВЫ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ 5 — ПРОСМОТРЕТЬ СТРУКТУРУ 6 — ПРОСМОТРЕТЬ ОБЪЕКТ 7 — ПРИСВОИТЬ ЗНАЧЕНИЕ ОБЪЕКТУ 8 — СКОПИРОВАТЬ ЗНАЧЕНИЕ АТРИБУТА В ПЕРЕМЕННУЮ 9 — ВЫХОД ?3 СТРУКТУРЫ КОНФЕРЕНЦИЯ ВВЕДИТЕ НУЖНЫЙ НОМЕР 1 — СОЗДАТЬ СТРУКТУРУ 2 —СОЗДАТЬ ОБЪЕКТ 3 — ВЫВЕСТИ ИМЕНА ВСЕХ СТРУКТУР 4 — ВЫВЕСТИ ИМЕНА ВСЕХ ОБЪЕКТОВ 5 — ПРОСМОТРЕТЬ СТРУКТУРУ 6 — ПРОСМОТРЕТЬ ОБЪЕКТ 7 — ПРИСВОИТЬ ЗНАЧЕНИЕ ОБЪЕКТУ 8 — СКОПИРОВАТЬ ЗНАЧЕНИЕ АТРИБУТА В ПЕРЕМЕННУЮ 9 —ВЫХОД ?5 ВВЕДИТЕ ИМЯ СТРУКТУРЫ ? КОНФЕРЕНЦИЯ СТРУКТУРА — КОНФЕРЕНЦИЯ ЧИСЛО АТРИБУТОВ 5 АТРИБУТ 1 ? ЗАЛ АТРИБУТ 2? ПРЕДМЕТ АТРИБУТ 3 ? ДОКЛАДЧИК АТРИБУТ 4? НАЧАЛО АТРИБУТ 5 ? ОКОНЧАНИЕ ВВЕДИТЕ НУЖНЫЙ НОМЕР 1 — СОЗДАТЬ СТРУКТУРУ 2 —СОЗДАТЬ ОБЪЕКТ 3 — ВЫВЕСТИ ИМЕНА ВСЕХ СТРУКТУР 4 — ВЫВЕСТИ ИМЕНА ВСЕХ ОБЪЕКТОВ 5 — ПРОСМОТРЕТЬ СТРУКТУРУ 6 — ПРОСМОТРЕТЬ ОБЪЕКТ 7 — ПРИСВОИТЬ ЗНАЧЕНИЕ ОБЪЕКТУ 8 — СКОПИРОВАТЬ ЗНАЧЕНИЕ АТРИБУТА В ПЕРЕМЕННУЮ 9 — ВЫХОД ?2 ВВЕДИТЕ ИМЯ СТРУКТУРЫ ? КОНФЕРЕНЦИЯ ВВЕДИТЕ ИМЯ ОБЪЕКТА ? ДЕС1 ВВЕДИТЕ ЧИСЛО АТРИБУТОВ ? 5 АТРИБУТ 1 ? 10 АТРИБУТ 2 ? ПОРЯДОК ПРОВЕДЕНИЯ СВЕРХУРОЧНЫХ РАБОТ АТРИБУ Т 3 ? СУЗАН БЕРД АТРИБУТ 4? 10:00 АТРИБУТ 5? 11:00 ВВЕДИТЕ НУЖНЫЙ НОМЕР 1 — СОЗДАТЬ СТРУКТУРУ 2 — СОЗДАТЬ ОБЪЕКТ 3 — ВЫВЕСТИ ИМЕНА ВСЕХ СТРУКТУР
СОЗДАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ РАЗВИТЫХ СИСТЕМ ИИ 177 4 — ВЫВЕСТИ ИМЕНА ВСЕХ ОБЪЕКТОВ 5 — ПРОСМОТРЕТЬ СТРУКТУРУ 6 — ПРОСМОТРЕТЬ ОБЪЕКТ 7 — ПРИСВОИТЬ ЗНАЧЕНИЕ ОБЪЕКТУ 8 — СКОПИРОВАТЬ ЗНАЧЕНИЕ АТРИБУТА В ПЕРЕМЕННУЮ 9—ВЫХОД ?2 ВВЕДИТЕ ИМЯ СТРУКТУРЫ ? КОНФЕРЕНЦИЯ ВВЕДИТЕ ИМЯ ОБЪЕКТА ? ДЕС2 ВВЕДИТЕ ЧИСЛО АТРИБУТОВ ? 5 АТРИБУТ 1 ? 10 АТРИБУТ 2 ? ПОВЫШЕНИЕ ОКЛАДОВ АТРИБУТ 3 ? МАРК СТОН АТРИБУТ 4? 13:00 АТРИБУТ 5? 14:00 ВВЕДИТЕ НУЖНЫЙ НОМЕР 1 — СОЗДАТЬ СТРУКТУРУ 2 — СОЗДАТЬ ОБЪЕКТ 3 — ВЫВЕСТИ ИМЕНА ВСЕХ СТРУКТУР 4 — ВЫВЕСТИ ИМЕНА ВСЕХ ОБЪЕКТОВ 5 — ПРОСМОТРЕТЬ СТРУКТУРУ 6 — ПРОСМОТРЕТЬ ОБЪЕКТ 7 — ПРИСВОИТЬ ЗНАЧЕНИЕ ОБЪЕКТУ 8 — СКОПИРОВАТЬ ЗНАЧЕНИЕ АТРИБУТА В ПЕРЕМЕННУЮ 9 — ВЫХОД ?2 ВВЕДИТЕ ИМЯ СТРУКТУРЫ ? КОНФЕРЕНЦИЯ ВВЕДИТЕ ИМЯ ОБЪЕКТА ? ОД1 ВВЕДИТЕ ЧИСЛО АТРИБУТОВ ? 5 АТРИБУТ 17 11 АТРИБУТ 2 ? ПЛАНЫ ПРОДАЖИ АТРИБУТ 3? ЭНДРИ РОМ АТРИБУТ 4? 10:00 АТРИБУТ 5? 11:00 ВВЕДИТЕ НУЖНЫЙ НОМЕР 1 — СОЗДАТЬ СТРУКТУРУ 2 —СОЗДАТЬ ОБЪЕКТ 3 — ВЫВЕСТИ ИМЕНА ВСЕХ СТРУКТУР 4 — ВЫВЕСТИ ИМЕНА ВСЕХ ОБЪЕКТОВ 5 — ПРОСМОТРЕТЬ СТРУКТУРУ 6 — ПРОСМОТРЕТЬ ОБЪЕКТ 7 — ПРИСВОИТЬ ЗНАЧЕНИЕ ОБЪЕКТУ 8 — СКОПИРОВАТЬ ЗНАЧЕНИЕ АТРИБУТА В ПЕРЕМЕННУЮ 9 —ВЫХОД ? 4 ВВЕДИТЕ ИМЯ СТРУКТУРЫ ? КОНФЕРЕНЦИЯ ИМЯ ОБЪЕКТА —ДЕС1 ИМЯ ОБЪЕКТА —ДЕС2 ИМЯ ОБЪЕКТА —ОД1
178 ОСНОВЫ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ ВВЕДИТЕ НУЖНЫЙ НОМЕР 1 — СОЗДАТЬ СТРУКТУРУ 2 —СОЗДАТЬ ОБЪЕКТ 3 — ВЫВЕСТИ ИМЕНА ВСЕХ СТРУКТУР 4 — ВЫВЕСТИ ИМЕНА ВСЕХ ОБЪЕКТОВ 5 — ПРОСМОТРЕТЬ СТРУКТУРУ 6 — ПРОСМОТРЕТЬ ОБЪЕКТ 7 — ПРИСВОИТЬ ЗНАЧЕНИЕ ОБЪЕКТУ 8 — СКОПИРОВАТЬ ЗНАЧЕНИЕ АТРИБУТА В ПЕРЕМЕННУЮ 9 — ВЫХОД ?6 ВВЕДИТЕ ИМЯ СТРУКТУРЫ ? КОНФЕРЕНЦИЯ ВВЕДИТЕ ИМЯ ОБЪЕКТА ? ДЕС2 ОБЪЕКТ ДЕС2 АТРИБУТ НОМЕР 1 ? 10 АТРИБУТ НОМЕР 2 ? ПЛАНЫ ПРОДАЖИ АТРИБУТ НОМЕР 3 ? МАРК СТОН АТРИБУТ НОМЕР 4? 13:00 АТРИБУТ НОМЕР 5? 14:00 ВВЕДИТЕ НУЖНЫЙ НОМЕР 1 — СОЗДАТЬ СТРУКТУРУ 2 —СОЗДАТЬ ОБЪЕКТ 3 — ВЫВЕСТИ ИМЕНА ВСЕХ СТРУКТУР 4 — ВЫВЕСТИ ИМЕНА ВСЕХ ОБЪЕКТОВ 5 — ПРОСМОТРЕТЬ СТРУКТУРУ 6 — ПРОСМОТРЕТЬ ОБЪЕКТ 7 — ПРИСВОИТЬ ЗНАЧЕНИЕ ОБЪЕКТУ 8 — СКОПИРОВАТЬ ЗНАЧЕНИЕ АТРИБУТА В ПЕРЕМЕННУЮ 9 — ВЫХОД ?6 ВВЕДИТЕ ИМЯ СТРУКТУРЫ ? КОНФЕРЕНЦИЯ ВВЕДИТЕ ИМЯ ОБЪЕКТА ? ДЕС1 ОБЪЕКТ ДЕС1 ЧИСЛО АТРИБУТОВ 5 АТРИБУТНОМЕР 1? 10 АТРИБУТ НОМЕР 2 ? ПОРЯДОК СВЕРХУРОЧНЫХ РАБОТ АТРИБУТ НОМЕР 3 ? СУЗАН БЕРД АТРИБУТ НОМЕР 4? 10:00 АТРИБУТ НОМЕР 5? 11:00 ВВЕДИТЕ НУЖНЫЙ НОМЕР 1 — СОЗДАТЬ СТРУКТУРУ 2 — СОЗДАТЬ ОБЪЕКТ 3 — ВЫВЕСТИ ИМЕНА ВСЕХ СТРУКТУР 4 — ВЫВЕСТИ ИМЕНА ВСЕХ ОБЪЕКТОВ 5 — ПРОСМОТРЕТЬ СТРУКТУРУ 6 — ПРОСМОТРЕТЬ ОБЪЕКТ 7 — ПРИСВОИТЬ ЗНАЧЕНИЕ ОБЪЕКТУ 8 — СКОПИРОВАТЬ ЗНАЧЕНИЕ АТРИБУТА В ПЕРЕМЕННУЮ 9 — ВЫХОД ?7 ВВЕДИТЕ ИМЯ СТРУКТУРЫ ? КОНФЕРЕНЦИЯ
СОЗДАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ РАЗВИТЫХ СИСТЕМ ИИ 179 ВВЕДИТЕ ИМЯ ОБЪЕКТА ? ДЕС1 ВВЕДИТЕ ИМЯ АТРИБУТА ? НАЧАЛО ВВЕДИТЕ ЗНАЧЕНИЕ ? 9:00 ВВЕДИТЕ НУЖНЫЙ НОМЕР 1 — СОЗДАТЬ СТРУКТУРУ 2 — СОЗДАТЬ ОБЪЕКТ 3 — ВЫВЕСТИ ИМЕНА ВСЕХ СТРУКТУР 4 — ВЫВЕСТИ ИМЕНА ВСЕХ ОБЪЕКТОВ 5 — ПРОСМОТРЕТЬ СТРУКТУРУ 6 — ПРОСМОТРЕТЬ ОБЪЕКТ 7 — ПРИСВОИТЬ ЗНАЧЕНИЕ ОБЪЕКТУ 8 — СКОПИРОВАТЬ ЗНАЧЕНИЕ АТРИБУТА В ПЕРЕМЕННУЮ 9 — ВЫХОД ?6 ВВЕДИТЕ ИМЯ СТРУКТУРЫ ? КОНФЕРЕНЦИЯ ВВЕДИТЕ ИМЯ ОБЪЕКТА ? ДЕС1 ОБЪЕКТ ДЕС1 ЧИСЛО АТРИБУТОВ 5 АТРИБУТНОМЕР 1? 10 АТРИБУТ НОМЕР 2 ? ПОРЯДОК СВЕРХУРОЧНЫХ РАБОТ АТРИБУТ НОМЕР 3 ? СУЗАН БЕРД АТРИБУТ НОМЕР 4? 9:00 АТРИБУТ НОМЕР 5? 11:00 Ниже приведен пример создания новой структуры для конференц- зала и подключения процедур обработки атрибутов времени начала и окончания конференций. ВВЕДИТЕ НУЖНЫЙ НОМЕР 1 — СОЗДАТЬ СТРУКТУРУ 2 — СОЗДАТЬ ОБЪЕКТ 3 — ВЫВЕСТИ ИМЕНА ВСЕХ СТРУКТУР 4 — ВЫВЕСТИ ИМЕНА ВСЕХ ОБЪЕКТОВ 5 — ПРОСМОТРЕТЬ СТРУКТУРУ 6 — ПРОСМОТРЕТЬ ОБЪЕКТ 7 — ПРИСВОИТЬ ЗНАЧЕНИЕ ОБЪЕКТУ 8 — СКОПИРОВАТЬ ЗНАЧЕНИЕ АТРИБУТА В ПЕРЕМЕННУЮ 9 — ВЫХОД ? 1 ВВЕДИТЕ ИМЯ СТРУКТУРЫ ? КОНФЕРЕНЦИЯ1 ВВЕДИТЕ ЧИСЛО АТРИБУТОВ ? 5 АТРИБУТ 1? ЗАЛ АТРИБУТ 2? ПРЕДМЕТ АТРИБУТ 3 ? ДОКЛАДЧИК АТРИБУТ 4?* АТРИБУТ 5? НАЧАЛО АТРИБУТ 6?* АТРИБУТ 7 ? ОКОНЧАНИЕ ВВЕДИТЕ НУЖНЫЙ НОМЕР 1 — СОЗДАТЬ СТРУКТУРУ 2 —СОЗДАТЬ ОБЪЕКТ
180 ОСНОВЫ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ 3 — ВЫВЕСТИ ИМЕНА ВСЕХ СТРУКТУР 4 — ВЫВЕСТИ ИМЕНА ВСЕХ ОБЪЕКТОВ 5 — ПРОСМОТРЕТЬ СТРУКТУРУ 6 — ПРОСМОТРЕТЬ ОБЪЕКТ 7 — ПРИСВОИТЬ ЗНАЧЕНИЕ ОБЪЕКТУ 8 — СКОПИРОВАТЬ ЗНАЧЕНИЕ АТРИБУТА В ПЕРЕМЕННУЮ 9 — ВЫХОД ?2 ВВЕДИТЕ ИМЯ СТРУКТУРЫ ? КОНФЕРЕНЦИЯ! ВВЕДИТЕ ИМЯ ОБЪЕКТА ? ДЕС1 ВВЕДИТЕ ЧИСЛО АТРИБУТОВ ? 7 АТРИБУТ 1? 10 АТРИБУТ 2 ? ПОРЯДОК СВЕРХУРОЧНЫХ РАБОТ АТРИБУТ 3 ? СУЗАН БЕРД АТРИБУТ 4? 10:00 АТРИБУТ 5? 1 АТРИБУТ 6? 11:00 АТРИБУТ 7? 1 ВВЕДИТЕ НУЖНЫЙ НОМЕР 1 — СОЗДАТЬ СТРУКТУРУ 2 — СОЗДАТЬ ОБЪЕКТ 3 — ВЫВЕСТИ ИМЕНА ВСЕХ СТРУКТУР 4 — ВЫВЕСТИ ИМЕНА ВСЕХ ОБЪЕКТОВ 5 — ПРОСМОТРЕТЬ СТРУКТУРУ 6 — ПРОСМОТРЕТЬ ОБЪЕКТ 7 — ПРИСВОИТЬ ЗНАЧЕНИЕ ОБЪЕКТУ 8 — СКОПИРОВАТЬ ЗНАЧЕНИЕ АТРИБУТА В ПЕРЕМЕННУЮ 9 —ВЫХОД ?8 ВВЕДИТЕ ИМЯ СТРУКТУРЫ ? КОНФЕРЕНЦИЯ1 ВВЕДИТЕ ИМЯ ОБЪЕКТА ? ДЕС1 ВВЕДИТЕ ИМЯ АТРИБУТА ? НАЧАЛО ЗНАЧЕНИЕ АТРИБУТА — 10:00 ВВЕДИТЕ НУЖНЫЙ НОМЕР 1 — СОЗДАТЬ СТРУКТУРУ 2 — СОЗДАТЬ ОБЪЕКТ 3 — ВЫВЕСТИ ИМЕНА ВСЕХ СТРУКТУР 4 — ВЫВЕСТИ ИМЕНА ВСЕХ ОБЪЕКТОВ 5 — ПРОСМОТРЕТЬ СТРУКТУРУ 6 — ПРОСМОТРЕТЬ ОБЪЕКТ 7 — ПРИСВОИТЬ ЗНАЧЕНИЕ ОБЪЕКТУ 8 — СКОПИРОВАТЬ ЗНАЧЕНИЕ АТРИБУТА В ПЕРЕМЕННУЮ 9 —ВЫХОД ? 7 ВВЕДИТЕ ИМЯ СТРУКТУРЫ ? КОНФЕРЕНЦИЯ! ВВЕДИТЕ ИМЯ ОБЪЕКТА ? ДЕС1 ВВЕДИТЕ ИМЯ АТРИБУТА ? НАЧАЛО ВВЕДИТЕ ЗНАЧЕНИЕ ? 08:00 **** ПРОГРАММА ПОЛЬЗОВАТЕЛЯ ***** 1 Значение атрибута НАЧАЛО меняется в подпрограмме, реализую- щей функцию ПРИСВОИТЬ. При создании структуры КОНФЕРЕН-
СОЗДАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ РАЗВИТЫХ СИСТЕМ ИИ 181 ЦИЯ1 имени атрибута (НАЧАЛО) предшествует *. При создании объ- екта единица в 5-м атрибуте указывает на вызов первой подпрограммы пользователя при обращении к атрибуту НАЧАЛО. Это реализовано в предложениях 5040 — 5055 программы. Предложение 5050, ON GOSUB 1000, вызывает подпрограмму пользователя, начинающуюся с предложения 1000. При этом на экран будет выдано сообщение: «***♦ ПОДПРОГРАММА ПОЛЬЗОВАТЕЛЯ ***♦ ». ВВЕДИТЕ НУЖНЫЙ НОМЕР 1 — СОЗДАТЬ СТРУКТУРУ 2 — СОЗДАТЬ ОБЪЕКТ 3 — ВЫВЕСТИ ИМЕНА ВСЕХ СТРУКТУР 4 — ВЫВЕСТИ ИМЕНА ВСЕХ ОБЪЕКТОВ 5 — ПРОСМОТРЕТЬ СТРУКТУРУ 6 — ПРОСМОТРЕТЬ ОБЪЕКТ 7 — ПРИСВОИТЬ ЗНАЧЕНИЕ ОБЪЕКТУ 8 — СКОПИРОВАТЬ ЗНАЧЕНИЕ АТРИБУТА В ПЕРЕМЕННУЮ 9 — ВЫХОД ?6 ВВЕДИТЕ ИМЯ СТРУКТУРЫ ? КОНФЕРЕНЦИЯ! ВВЕДИТЕ ИМЯ ОБЪЕКТА ? ДЕС1 ОБЪЕКТ ДЕС1 ЧИСЛО АТРИБУТОВ 7 АТРИБУТ 1 ? 10 АТРИБУТ 2 ? ПОРЯДОК СВЕРХУРОЧНЫХ РАБОТ АТРИБУТ 3 ? СУЗАН БЕРД АТРИБУТ 4? 8:00 АТРИБУТ 5? 1 АТРИБУТ 6? 11:00 АТРИБУТ 7? 1 Упражнение Попытайтесь вставить в меню еще один пункт — УДАЛИТЬ-ОБЪ- ЕКТ. Эта функция реализована в предложениях 4600 — 4645 програм- мы. ГЛАВА 12 ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ: ПРИМЕР ИЗ ОБЛАСТИ ТЕХНИКИ Теперь, когда читатель знаком с основными понятиями объектно- ориентированного программирования, рассмотрим пример из области техники. Пример сопровождается достаточно полными пояснениями, которые помогут читателю понять суть дела. Изучив пример, можно
182 ПРИМЕНЕНИЕ ОБЪЕКТНО-ОРИЕНТИРОВАННЫХ СИСТЕМ В ТЕХНИКЕ применять объектно-ориентированное программирование для разра- ботки программ анализа электронных систем. Кроме того, будет сделан еще один шаг к объектно-ориентированным экспертным системам. Аналого-цифровое преобразование Ежедневно пользуясь бытовыми электроприборами, читатель, ко- нечно, знает, что обычно используется переменный ток напряжением в 120 В и частотой в 60 циклов. Как это следует понимать ? Рассмотрим рис. 12.1. Переменный ток меняет свое направление на обратное через определенные интервалы времени. В примере напряжение тока меня- ется от +120 до -120 В и обратно, проходя через 0. Каждый цикл занимает 1/60 с, а значит, 60 циклов занимают ровно 1 с Это и есть частота в 60 циклов. Напряжение меняе ся от+120 до -120 В непрерыв- но, и в некоторый конкретный момент оно может иметь значение 36 В, 112 В и т.д. Это так называемое аналоговое представление, поскольку напряжение может быть представлено непосредственно измеренными величинами, которые наглядно отражают движение тока. Для того чтобы каким-то образом проанализировать напряжение с помощью компьютера, оно должно быть подано на входной канал, т.е. место сопряжения компьютера с внешним прибором. Поскольку ком- пьютер — это электронный прибор, входной канал может восприни- мать только некоторые уровни напряжения. Следовательно, любая информация, подающаяся на входной канал, должна быть преобразо- вана в определенное напряжение. Как только это сделано и информа- ция передана в компьютер, значение величины поданного напряжения помещается в ячейки основной памяти и затем может быть обработана программой. Однако со входным каналом все не так просто. Прежде чем некото- рое значение будет введено в компьютер, представляющее его напря- жение должно быть преобразовано в двоично-цифровой формат. Что это означает ? Основной единицей, которой оперирует компьютер, является бит или одна двоичная цифра. Бит может иметь значение нуль либо едини- ца. (Такая система счисления называется двоичной в отличие от обыч- но используемой для счета десятичной системы. В двоичной системе число 1 записывается как 001, 2 — 010, 3 — 011 и т.д.) Один бит представляет сигнал, имеющий одно из двух значений уровня напря- жения. Все схемы компьютера работают с двумя различными уровнями напряжения, которые доожно представить как 0 и 1. Более крупная единица памяти компьютера — байт. Байт состоит из 8 бит. В двоично-цифровом виде формат байта памяти, содержащего
СОЗДАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ РАЗВИТЫХ СИСТЕМ ИИ 183 значение 1 В, записывается как 0000 0001, значение 9 В — как 0000 1001. (Двоичная система — позиционная. Каждая позиция, начиная справа, имеет определенный вес. Первая позиция имеет вес 1, вторая — 2, третья — 4, затем — 8,16,32,64 и 128. Складывая веса в позициях, где стоят единицы, можно получить соответствующее десятичное чис- ло. В последнем примере, 0000 1001, нужно сложить вес первой цифры справа — 1 и четвертой — 8. В результате получится 9). Вольты Рис. 12.1. Переменный ток с напряжением в 120 В Большинство данных, применяемых для анализа в различных за- дачах, можно представить аналоговым напряжением. Можно анализи- ровать, например, постоянно меняющееся напряжение бытовой сети или кардиограмму. Для того чтобы проанализировать аналоговое на- пряжение на компьютере, оно должно быть переведено в двоично-циф- ровую форму. Аналоговое напряжение преобразуется в цифровой вид с помощью аналого-цифрового преобразователя (АЦП). АЦП выполняет преобра- зование автоматически, принимая на вход аналоговое напряжение и подавая на выход двоичные числа (см. рис. 12.2). Преобразование инициируется компьютером, который подаст на АЦП управляющий сигнал по специальной шине, как показано на рисунке. После того как преобразование выполнено,компьютер готов к анализу входных данных. Предположим, что нужно проанализировать переменное напряже- ние подстанции, обслуживающей небольшую фирму. Интерес пред- ста вл я ют два случая: когда напряжение падает ниже допустимого уровня (снижение освещения) и когда напряжение превышает допу- стимый уровень (сгорают бытовые электроприборы и оборудование). Как видно из рис. 12.3, переменное напряжение начинается с 0 и
184 ПРИМЕНЕНИЕ ОБЪЕКТНО-ОРИЕНТИРОВАННЫХ СИСТЕМ В ТЕХНИКЕ непрерывно повышается до 120 В, а затем уменьшается, опять проходя через 0. Цикл повторяется каждую 1/60 с. Рисунок иллюстрирует посылку компьютером сигналов преобразования в два различных мо- мента цикла. Первый сигнал посылается АЦП, когда напряжение до- стигает 30 вольт. Это напряжение преобразуется в двоичный код 0001 1100. Второй сигнал посылается при напряжении в 60 В, которое пре- образуется в 0011 1100. Иначе говоря, АЦП принимает с одной входной шины напряжение, преобразует его и передает на восемь выходных двоичных шин 1 байт информации. Подытожим сказанное. 1. АЦП — это устройство, преобразующее аналоговое напряжение в двоично-цифровой вид. Преобразование Рис. 12.2. Входной канал аналого-цифровою преобразователя 2. Компьютер обрабатывает только двоичные цифры. 3. Шина преобразования АЦП позволяет компьютеру точно отсле- живать момент преобразования. Использование объектно-ориентированного программирования в системе, работающей в технической области Читатель вкратце ознакомлен с такими понятиями, как аналоговое напряжение, двоично-цифровое представление и аналого-цифровое преобразование. Теперь можно перейти к постановке задачи. На подстанции, обслуживающей небольшую фирму, размещено три комплекта чувствительного электронного оборудования. Нужно защитить это оборудование от перегрузки. Если напряжение превыша- ет 124 В, компьютер включает прерыватель, отключающий оборудова- ние. Общая схема всей системы показана на рис. 12.4.
СОЗДАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ РАЗВИТЫХ СИСТЕМ ИИ 185 Компьютер, используя канал ввода/вывода и АЦП, следит за на- пряжением, подающимся на оборудование. Заметив превышение на- пряжения (124 В), он дает сигнал прерывателю, который сбрасывает напряжение для предохранения чувствительного электронного обору- дования от перегрузки. Нужно разработать объектно-ориентирован- ную систему, следящую За напряжением, структуру, объекты и процедуры для нее. Структур? Ко;я схема, изображенная на рис. 12.4, выглядит довольно сложно, попробуем создать структуру, которая значительно упростит дело. Она должна содержать исчерпывающий набор атрибутов, позволяющий полностью представить задачу. Время Рис. 12.3. Напряжение тока в различные моменты преобразования Задача заключается в следующем: Преобразовать напряжение тока, подающееся на чувствительное оборудование, в двоичный вид и сравнить его с максимально допусти- мым. В примере максимльно допустимое напряжение — 124 В (или в двоичном виде 0111 1100). Если напряжение превышает 124 В, включить прерыватель. Преобразование должно выполняться постоянно через определен- ные интервалы времени. Что может произойти, если интервал состав- ляет, например, 60 с ? Предположим, последнее преобразование выполнялось при безопасном напряжении в 123 В, а через 20 с возросло до опасного в 125 В. Но поскольку преобразование не будет выполнено еще в течение 40 с, компьютер не увидит повышенное напряжение, и оборудование выйдет из строя. Если же выбрать интервал в 2 с, компь-
186 ПРИМЕНЕНИЕ ОБЪЕКТНО-ОРИЕНТИРОВАННЫХ СИСТЕМ В ТЕХНИКЕ ютср заметит напряжение в 125 В и подключит прерыватель. Какие же атрибуты должны быть у структуры для поставленной задачи ? Рис. 12.4.Компьютерная система контроля напряжения 1. Критическое напряжение, при котором срабатывает прерыва- тель (НАПРЯЖЕНИЕ). 2. Интервал между преобразованиями напряжения (ИНТЕРВАЛ). 3. Время последнего преобразования напряжения (ПВРЕМЯ). 4. Текущее время (ТВРЕМЯ). 5. Процедура, вызываемая для инициации прерывателя (ПРЕРЫ- ВАТЕЛЬ). Структура создается с помощью функции СОЗДАТЬ-СТРУКТУ- РУ. Присвоим структуре имя ДАТЧИК, поскольку она разрабатывает- ся для системы, распознающей критическое напряжение. Используя формат, введенный в гл. 11, запишем: СОЗДАТЬ-СТРУКТУРУ(ИМЯ-СТРУКТУРЫ»ДАТЧИК, ЧИСЛО-АТРИБУТОВ-5, АТРИБУТ-НАПРЯЖЕНИЕ, АТРИБУТ-ИНТЕРВАЛ, АТРИБУТ-ПВРЕМЯ, АТРИБУТ»*ТВРЕМЯ, АТРИБУТ-ПРОЦЕДУРА)
СОЗДАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ РАЗВИТЫХ СИСТЕМ ИИ 187 Звездочка перед именем ТВРЕМЯ указывает, что если функция ПРИСВОИТЬ изменяет значение атрибута ТВРЕМЯ, то вызывается соответствующая процедура. Объект можно создать следующим обра- зом: СОЗДАТЬ-ОБЪЕКТ(ИМЯ-СТРУКТУРЫ=ДАТЧИК, ИМЯ-ОБЪЕКТА=ОБОРУДОВАНИЕ, НАПРЯЖЕНИЕ-124, ИНТЕРВАЛ-2, ПВРЕМЯ-О, ТВ РЕ МЯЧ), ПРОЦЕДУРА-имя процедуры) Каким же образом объектно-ориентированная система использует эту структуру ? Атрибут 4 содержит текущее время. Как только этот атрибут меняет значение по функции ПРИСВОИТЬ, вызывается про- цедура, определяющая, должен ли сработать прерыватель. Имя проце- дуры задается в 5-м атрибуте. Сначала процедура вычитает значение атрибута ПВРЕМЯ (атрибут 3) из значения атрибута ТВРЕМЯ (атри- бут 4) и сравнивает результат со значением атрибута ИНТЕРВАЛ (атрибут 2). Если в результате вычитания получилась величина, рав- ная или большая значения атибута ИНТЕРВАЛ, в АЦП посылается сигнал преобразования напряжения. Преобразованное напряжение сравнивается с критическим, содержащимся в атрибуте НАПРЯЖЕ- НИЕ (атрибут 1) и если оно его превышает, срабатывает прерыватель. В Бейсике есть стандартная функция TIME, по которой можно получить текущее время: VS-TIME Затем полученное значение можно передать объекту: ПРИСВОИТЬ (ИМЯ-СТРУКТУРЫ-ДАТЧИК, ИМЯ-ОБЪЕКТ А-ОБОРУДОВАНИЕ, ТВРЕМЯ-У$) В результате будет вызвана подпрограмма контроля критического напряжения. Системы реального времени Описанная система контроля напряжения относится к так называ- емым системам реального времени. В таких системах определенные действия выполняются в указанные интервалы времени, например, рассматриваемая система преобразует напряжение каждые 2 с. Поня- тие «реальное время» означает, что в систему поступают данные, кото- рые затем обрабатываются в строго указанные моменты времени.
188 ПРИМЕНЕНИЕ ОБЪЕКТНО-ОРИЕНТИРОВАННЫХ СИСТЕМ В ТЕХНИКЕ Следовательно, систему контроля напряжения можно отнести к объек- тно-ориентированным системам реального времени. Управление технологическими процессами Описанный метод можно использовать для управления различны- ми процессами (от упаковки яиц в пластик до поддержания темпера- турного режима реактора). В соответствующих приложениях нужно применять программы или устройства, преобразующие давление, по- ложение ленты конвейера или температуры в аналоговое напряжение. Затем АЦП превращает это напряжение в вид, который воспринима- ется компьютером. Компьютер может управлять давлением или тем- пературой либо просто предупреждать пользователя, что на конвейере перебои в поступлении яиц. Подобные системы называются система- ми управления технологическими процессами. Пример программы В листинге 12.1 приведена программа листинга 11.1, модифициро- ванная для задачи контроля напряжения. Время контроля напряжения имитируется подпрограммой, начинающейся с предложения 9000. Оператор FOR используется для отсчета псевдоинтервалов. Функция ПРИСВОИТЬ реализуется подпрограммой, начинаю- щейся с предложения 5000. Из нее вызывается написанная пользова- телем процедура, которая должна начинаться с предложения 1000. Для проверки псевдонапряжения можно воспользоваться стандартной фун- кцией RND(X). Листинг программы Листинг 12.1 1 REM *♦♦♦ ОКОНЧАНИЕ ПРИМЕРА НА ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ 2 REM ♦*** ПРОГРАММИРОВАНИЕ 3 DIM FO$(200): REM МАССИВ СТРУКТУР 5 PRINT "ВВЕДИТЕ НУЖНЫЙ НОМЕР" 10 PRINT "1 — СОЗДАТЬ СТРУКТУРУ" 15 PRINT "2 — СОЗДАТЬ ОБЪЕКТ" 20 PRINT 3 — ВЫВЕСТИ ИМЕНА ВСЕХ СТРУКТУР" 25 PRINT ‘4 — ВЫВЕСТИ ИМЕНА ВСЕХ ОБЪЕКТОВ" 30 PRINT "5 — ПРОСМОТРЕТЬ СТРУКТУРУ" 35 PRINT "6 — ПРОСМОТРЕТЬ ОБЪЕКТ" 40 PRINT ”7 — ПРИСВОИТЬ ЗНАЧЕНИЕ ОБЪЕКТУ" 45 PRINT "8 — СКОПИРОВАТЬ ЗНАЧЕНИЕ АТРИБУТА В ПЕРЕМЕННУЮ" 50 PRINT "9 — ПРОВЕРКА ПСЕВДОНАПРЯЖЕНИЯ" 55 INPUT N
СОЗДАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ РАЗВИТЫХ СИСТЕМ ИИ 189 60 ON N GOSUB 100,200,300,400,500,600,700,800,9000 65 GOTO 5 100 REM *♦** СОЗДАНИЕ СТРУКТУРЫ **** 105 INPUT "ВВЕДИТЕ ИМЯ СТРУКТУРЫ";Т$(1) 110 INPUT "ВВЕДИТЕ ЧИСЛО АТРИБУТОВ";Т$(2) 115 N-VAL(T$(2)): E-3+N-1 120 FOR 1-1 TOE 125 PRINT "АТРИБУТ”;1-2;"-"; 130 INPUT T$(I> 135 NEXT I 140 REM ВЫЗОВ ПРОЦЕДУРЫ СОЗДАНИЯ СТРУКТУРЫ 145 GOSUB 3000 150 RETURN 200 REM ***** СОЗДАНИЕ ОБЪЕКТА 205 INPUT "ВВЕДИТЕ ИМЯ СТРУКТУРЫ";Т$(1) 210 INPUT "ВВЕДИТЕ ИМЯ ОБЪЕКТА";Т$(2) 215 INPUT "ВВЕДИТЕ ЧИСЛО АТРИБУТОВ";Т$(3) 220 N-VAL(T$(3)): E-4+N-1 225 FOR 1-4 ТО Е 230 PRINT "АТРИБУТ ";1-3;"-"; 235 INPUT Т$(1); 240 NEXT I 245 REM ВЫЗОВ ПРОЦЕДУРЫ СОЗДАНИЯ ОБЪЕКТА 250 GOSUB 3200 255 RETURN 300 REM *** ИМЕНА ВСЕХ СТРУКТУР 310 REM ПЕЧАТЬ ИМЕН ВСЕХ СТРУКТУР 315 GOSUB 4400 320 RETURN 400 REM ***♦ ИМЕНА ВСЕХ ОБЪЕКТОВ 405 INPUT "ВВЕДИТЕ ИМЯ СТРУКТУРЫ",Т$< 1) 410 REM ПЕЧАТЬ ИМЕН ВСЕХ ОБЪЕКТОВ СТРУКТУРЫ 415 GOSUB 4200 420 RETURN 500 REM *** ПРОСМОТР СТРУКТУРЫ 505 INPUT "ВВЕДИТЕ ИМЯ СТРУКТУРЫ ’;Т$(1) 510 REM ПЕЧАТЬ АТРИБУТОВ СТРУКТУРЫ 515 GOSUB 3400 520 RETURN 600 REM *** ПРОСМОТР ОБЪЕКТА 605 INPUT "ВВЕДИТЕ ИМЯ СТРУКТУРЫ";Т$(1) 610 INPUT "ВВЕДИТЕ ИМЯ ОБЪЕКТА";Т$(2) 615 REM *** ПРОСМОТР ОБЪЕКТА 620 GOSUB 4000 625 RETURN 700 REM *** ПРИСВОЕНИЕ ЗНАЧЕНИЯ ОБЪЕКТУ 705 INPUT "ВВЕДИТЕ ИМЯ СТРУКТУРЫ";Т$(1) 710 INPUT "ВВЕДИТЕ ИМЯ ОБЪЕКТА";Т$(2) 715 INPUT "ВВЕДИТЕ ИМЯ АТРИБУТА”;Т$(3) 720 INPUT "ВВЕДИТЕ ЕГО ЗНАЧЕНИЕ";Т$(4) 725 REM *** ПРИСВОЕНИЕ ЗНАЧЕНИЯ АТРИБУТУ ОБЪЕКТА 730 GOSUB 5000 735 RETURN
190 ПРИМЕНЕНИЕ ОБЪЕКТНО-ОРИЕНТИРОВАННЫХ СИСТЕМ В ТЕХНИКЕ 800 REM *** КОПИРОВАНИЕ ЗНАЧЕНИЯ ИЗ АТРИБУТА В ПЕРЕМЕННУЮ 805 INPUT "ВВЕДИТЕ ИМЯ СТРУКТУРЫ";Т$(1) 810 INPUT "ВВЕДИТЕ ИМЯ ОБЪЕКТА";Т$(2) 815 INPUT "ВВЕДИТЕ ИМЯ АТРИБУТА"";Т$(3) 820 REM **» КОПИРОВАНИЕ АТРИБУТА В Z$ 825 GOSUB 5200 830 PRINT "ЗНАЧЕНИЕ АТРИБУТА - ";Z 835 RETURN 900 REM ВЫХОД 905 STOP 999 REM ****** ПОДПРОГРАММЫ ПОЛЬЗОВАТЕЛЯ ****** 2999 REM ***** СИСТЕМНЫЕ ПОДПРОГРАММЫ ********* 3000 REM ***** СОЗДАНИЕ СТРУКТУРЫ 3010 REM Т$ (1) — ИМЯ СТРУКТУРЫ 3015 REMT$ (2) —ЧИСЛО АТРИБУТОВ 3020 REM АТРИБУТ 1. * ОЗНАЧАЕТ, ЧТО ПОСЛЕ Т$ (3) ИДЕТ НОМЕР ПОД- ПРОГРАММЫ 3025 REM.... 3030 REM T$(N+2) — АТРИБУТ N 3035 REM ПОИСК ИМЕНИ СТРУКТУРЫ В ВЕРХНЕЙ ИЛИ НИЖНЕЙ ПОЛОВИ- НЕ 3040 REM ПО ЭТОМУ АДРЕСУ ЗАПОМИНАЮТСЯ АРГУМЕНТЫ СТРУКТУРЫ 3045 Y-l; REM АДРЕС НИЖНЕЙ ПОЛОВИНЫ 3050 IF FO$ < 1 > «» THEN Y-l 01: REM УКАЗАТЕЛЬ НА ВЕРХНЮЮ 3051 REM НЕ ПУСТУЮ ПОЛОВИНУ 3055 N-VAL(T$(2>): N-N+2: 3056 REM ЧИСЛО ЭЛЕМЕНТОВ В СТРУКТУРЕ - ЧИСЛО АРГУМЕНТОВ +2 3060 FOR Z-1 ТО N 3065 FO$ (Y)-T$ <Z>: Y-Y+l 3070 NEXT Z 3080 RETURN 3200 REM ***** СОЗДАНИЕ ПОСЛЕДОВАТЕЛЬНОСТИ ДЛЯ ВЫЗОВА ОБЪЕКТА 3210 REM Т$ (1 > — ИМЯ СТРУКТУРЫ 3215 REM Т$ (2) — ИМЯ ОБЪЕКТА 3220 REM Т$(3) — ЧИСЛО ЗНАЧЕНИЙ АТРИБУТОВ 3225 REM Т$ (4) — ЗНАЧЕНИЕ АТРИБУТА 1 3230 REM Т$(...) — ЗНАЧЕНИЕ АТРИБУТА ... 3235 REM T$(N+3) — ЗНАЧЕНИЕ АТРИБУТА N 3240 REM УКАЗАТЕЛЬ НА СТРУКТУРУ 3245 Z-1 3250IFT$(1)-F0$(101) THEN Z-101 3255 E-Z+99: REM ПОСЛЕДНИЙ АДРЕС В ОБЛАСТИ СТРУКТУРЫ 3260 REM ПОИСК ПЕРВОГО СВОБОДНОГО МЕСТА ДЛЯ РАЗМЕЩЕНИЯ ОБЪ- ЕКТА 3265 FOR I-ZTOE 3270 IF FO$(I)-""" THEN GOTO 3280 3275 NEXT I 3280 REM ЗАПИСЬ ИМЕНИ ОБЪЕКТА 3285 L-I: FO$(L) -T$(2): L-L+l: REM ЗАПИСЬ ИМЕНИ ОБЪЕКТА 3290 REM ПОЛУЧИТЬ ЧИСЛО АТРИБУТОВ 3295 N-VAL(T$(3)): FO$(L)-T$(3): L-L+l: REM ЗАПОМНИТЬ НОМЕР 3300 E-L+N-l: REM АДРЕС ПОСЛЕДНЕГО АТРИБУТА 3305 Х-4: REM АДРЕС ПОСЛЕДНЕГО АТРИБУТА
СОЗДАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ РАЗВИТЫХ СИСТЕМ ИИ 191 3310 FOR I-LTO Е 3315 FO$(I)-T$(K): К-К+1 3320 NEXT I 3325 RETURN 3400 REM ****** ПЕЧАТЬ АТРИБУТОВ СТРУКТУРЫ 3405 REM Т$(1) — ИМЯ СТРУКТУРЫ 3410 REM АДРЕС ПОСЛЕДНЕГО АТРИБУТА 3415 Z-1 3420 IFT$(1)-F0$(101) TIIENZ-I01 3425 PRINT'CTPyKTyPA ";T$(D: Z-Z+1 3430 PR1NT"4HOIO АТРИБУТОВ -";FO$(Z) 3435 N-VAL(FO$(Z>): Z-Z+1 3440 E-Z+N-l 3445 K-l: REM ПОМЕР АТРИБУТА 3450 FOR I-ZTOE 3455 PRINT'HOMEP АТРИБУТА";К;"-”;РО(1) 3460 K=K+1 3465 NEXT I 3470 RETURN 3600 REM ПОИСК НОМЕРА АТРИБУТА В ОБЪЕКТЕ 3603 REM Z-IГОМЕР АТРИБУТА, A-Q ЕСЛИ НЕТ * И А-1, ЕСЛИ * ЕСТЬ 3605 REM ИМЯ СТРУКТУРЫ Т$ (1) 3610 REM... РЕЗЕРВ 3615 REM ИМЯ АТРИБУТА Т#(3) 3630 REM УКАЗЫВАЕТ НА СТРУКТУРУ 3635 Z-1 3640 IFT$(1)-FO$(101) THENZ-101 3645 Z-Z+2: N-l: REM НАЧАЛО ПОИСКА 3650 IF T$(3)-FO$(Z) THEN GOTO 3665 3655 Z=Z+1: N-N+l 3660 GOTO 3650: REM ЕЩЕ ПОПЫТКА 3665 REM ЕСТ Ь ЛИ В АТРИБУТЕ * 3670 А=0: Z-Z-l: REM УКАЗЫВАЕТ НА ПОЛОЖЕНИЕ * 3675 IF FO$(Z)-"*" THEN А-1 3680 Z-N+l: RETURN 3800 REM *********** УКАЗАТЬ ОБЪЕКТ 3810 REM T$( 1) — ИМЯ СТРУКТУРЫ 3815 REM Т$<2> — ИМЯ ОБЪЕКТА 3820 Z-1 3825 IFT$(I)-FO$(I01) THEN Z-101 3830 REM ЧИСЛО АТРИБУТОВ СТРУКТУРЫ 3835 Z-Z+1: N=VAL(FO$(Z>) 3840 Z-Z+N+l: REM ПЕРВЫЙ ОБЪЕКТ В СТРУКТУРЕ 3845 REM СВОБОДНОЕ МЕСТО РАЗМЕЩЕНИЯ ОБЪЕКТА ? 3850 IF FOS(Z) "" THEN GOTO 3865 3855 REM ПОИСК МЕСТА, ЗАНЯТОГО ОБЪЕКТОМ 3860 Z-Z+1: GOTO 3850 3865 REM ПОЛУЧИТЬ ЧИСЛО АТРИБУТОВ ОБЪЕКТА 3870 Z-Z+1: N-VAL(FO$(Z): Z-Z+1: 3871 REM УКАЗАТЕЛЬ УСТАНОВИТЬ НА ИМЯ ОБЪЕКТА 3875 REM ЭТО ОБЪЕКТ ? 3880 IF 15(2) - FO$(Z) Т1IEN RETURN: REM Z — АДРЕС ОБЪЕКТА 3885 REM СЛЕДУЮЩИЙ ОБЪЕКТ
192 ПРИМЕНЕНИЕ ОБЪЕКТНО-ОРИЕНТИРОВАННЫХ СИСТЕМ В ТЕХНИКЕ 3890 Z-Z+N+2: GOTO 3880 4000 REM ******** ПРОСМОТР ОБЪЕКТА 4005 REM Т$ (1) — ИМЯ СТРУКТУРЫ 4010 REM Т$(2) — ИМЯ ОБЪЕКТА 4015 REM Т$(1) — ИМЯ СТРУКТУРЫ‘010 REM Т$(2) — ИМЯ ОБЪЕКТА 4020 REM Z-ЗНАЧЕНИЕ УКАЗАТЕЛЯ ОБЪЕКТА 4025 GOSUB 3800 4030 PRINT «ОБЪЕКТ-»;FO$(Z):2>Z+1 4035 PRINT «ЧИСЛО АТРИБУТОВ -»;FO$(Z) :2>Z+1 4040 E-Z+N-l: P-1 4045 FOR I-ZTOE 4050 PRINT"АТРИБУТ НОМЕР ”;P;"PABEH ",FO$(I):P=P+1 4055 NEXT I 4060 RETURN 4200 REM »»»♦♦♦♦ ПЕЧАТЬ ИМЕН ВСЕХ ОБЪЕКТОВ 4205 REM ИМЯ СТРУКТУРЫ Т$ (i > 4210 REM УКАЗАТЕЛЬ НА СТРУКТУРУ 4215 Z-1 4220 IF Т$ (1 )-FO$ (101) THEN Z-101 4225 E-Z+99: REM КОНЕЦ МАССИВА СТРУКТУР 4230 REM ЧИСЛО АТРИБУТОВ СТРУКТУРЫ 4235 Z-Z+l: N-VAL(FO$(Z)) 4240 REM ПОЛУЧЕНИЕ ЧИСЛА АТРИБУТОВ ОБЪЕКТА 4245 Z-Z+N+2: N-VAL(FO$(Z)>: Z-Z-1.REM ПЕРВЫЙ ОБЪЕКТ 4250 FOR I-Z ТО Е STEP N+2 4255 IF FO$(I) THEN PRINT-ИМЯ ОБЪЕКТА — ”;FO$(I) 4260 NEXT I 4265 RETURN 4400 REM ♦♦♦****** ПЕЧАТЬ ИМЕН ВСЕХ СТРУКТУР 4405 PRINT-СТРУКТУРА" 4410 PRINT FO$(1) 4415 PRINT FO$(101) 4420 RETURN 4600 REM ♦*♦♦♦*♦*♦ УДАЛИТЬ ОБЪЕКТ 4605 REM T$(l) — ИМЯ СТРУКТУРЫ 4610 REM T$(2) — ИМЯ ОБЪЕКТА 4615 REM Z-АДРЕС ОБЪЕКТА, N- ЧИСЛО АТРИБУТОВ 4620 GOSUB 3800 4625 E-Z+N+2: REM КОНЕЦ РАЗМЕЩЕНИЯ ОБЪЕКТОВ 4630 FOR I-ZTOE 4635 FO$(I)-"" 4640 NEXT I 4645 RETURN 4800 REM ******** НАЙТИ АТРИБУТ ОБЪЕКТА 4805 REM T$(1) — ИМЯ СТРУКТУРЫ 4810 REM Т$(2) — ИМЯ ОБЪЕКТА 4815REM Т$(3) — ИМЯ АТРИБУТА 4820 REM ОПРЕДЕЛИТЬ НОМЕР АТРИБУТА ПО АДРЕСУ (Z), 4821 REM ЕСЛИ АТРИБУТ-* А-1 4825 GOSUB 3600: AN-Z 4830 REM ОПРЕДЕЛИТЬ АДРЕС ОБЪЕКТА (Z) 4835 GOSUB 3800 4840 REM ОПРЕДЕЛИТЬ АДРЕС АТРИБУТА
СОЗДАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ РАЗВИТЫХ СИСТЕМ ИИ 193 4845 Z-Z+AN-1 4850 RETURN 5000 REM »***»***» ПРИСВОИТЬ ЗНАЧЕНИЕ АТРИБУТУ ОБЪЕКТА 5005 REM Т$(1) — ИМЯ СТРУКТУРЫ 5010 REM Т$(2) — ИМЯ ОБЪЕКТА 5015 REM Т$(3) — ИМЯ АТРИБУТА 5020 REM Т$(4) — ЗНАЧЕНИЕ 5025 REM ОПРЕДЕЛИТЬ АДРЕС АТРИБУТА ОБЪЕКТА <Z) 5030 GOSUB 4800 5035 REM ЗАПИСАТЬ ЗНАЧЕНИЕ В АТРИБУТ, ЕСЛИ НЕТ *, А-0 5040 IF А-0 THEN GOTO 5060: REM » НЕТ 5045 REM ♦ — ВЫЗОВ ПОДПРОГРАММЫ ПОЛЬЗОВАТЕЛЯ 5050 Z-Z+1: N-VAL(FO$(Z): ON N GOSUB 10000 5055 Z-Z-l: FO$(Z)-T$(4): RETURN: REM ОПРЕДЕЛИТЬ АДРЕС АТРИБУТА 5060 Z-Z+1: FO$(Z)-T$(4) 5065 RETURN 5200 REM ***♦***»» СКОПИРОВАТЬ АТРИБУТ ОБЪЕКТА В Z$ 5005 REM T$< 1) — ИМЯ СТРУКТУРЫ 5010 REM Т$ (2) — ИМЯ ОБЪЕКТА 5015 REM Т$ <3) — ИМЯ АТРИБУТА 5020 REM Т$ (4) — ЗНАЧЕНИЕ 5225 REM ОПРЕДЕЛИТЬ АДРЕС АТРИБУТА ОБЪЕКТА 5230 GOSUB 4800 5235 Z$=FO$(Z) 5240 IF А-0 THEN GOTO 5260: REM * HET 5245 REM * — ВЫЗОВ ПОДПРОГРАММЫ ПОЛЬЗОВАТЕЛЯ 5255 Z$=FO$(Z): RETURN: REM ОПРЕДЕЛИТЬ АДРЕС АТРИБУТА 5260 Z-Z+1: Z$-FO$(Z) 5265 RETURN 9000 REM ПРОГРАММА ПРОВЕРКИ НАПРЯЖЕНИЯ 9002 REM ПРОВЕРКА НАПРЯЖЕНИЯ, ВЫБИРАЕМОГО ФУНКЦИЕЙ RND(X), 9004 REM НА ПСЕВДОВРЕМЕННЫХ ИНТЕРВАЛАХ (ЦИКЛ FOR QB) 9020 T$(l)-'"': Т$(2)-'"’: Т$(3)-"ВРЕМЯ": Т$(4)-"5" 9040 FOR QA-1 ТО 30: GOSUB 5000 9060 FOR QB-1 ТО 1000: NEXT QB: REM ПСЕВДОВРЕМЯ ЗАДЕРЖКИ 9080 NEXT QA: RETURN 9999 REM *»*»»»***»*** ПРОГРАММА ПОЛЬЗОВАТЕЛЯ »»»*»*»»» 10000 QQ-RND(Z): IF QQ 0.7 THEN PRINT-НАПРЯЖЕНИЕ СЛИШКОМ ВЕЛИКО"^ 10005 RETURN Пример работы программы RUN ВВЕДИТЕ НУЖНЫЙ НОМЕР 1 — СОЗДАТЬ СТРУКТУРУ 2 — СОЗДАТЬ ОБЪЕКТ 3 — ВЫВЕСТИ ИМЕНА ВСЕХ СТРУКТУР 4 — ВЫВЕСТИ ИМЕНА ВСЕХ ОБЪЕКТОВ 5 — ПРОСМОТРЕТЬ СТРУКТУРУ 6 — ПРОСМОТРЕТЬ ОБЪЕКТ 7 — ПРИСВОИТЬ ЗНАЧЕНИЕ ОБЪЕКТУ 7 Заказ № 476
194 ПРИМЕНЕНИЕ ОБЪЕКТНО-ОРИЕНТИРОВАННЫХ СИСТЕМ В ТЕХНИКЕ 8 — СКОПИРОВАТЬ ЗНАЧЕНИЕ АТРИБУТА В ПЕРЕМЕННУЮ 9 — ПРОВЕРИТЬ ПСЕВДОНАПРЯЖЕНИЕ ? 1 ВВЕДИТЕ ИМЯ СТРУКТУРЫ ? НАПРЯЖЕНИЕ ВВЕДИТЕ ЧИСЛО АТРИБУТОВ ? 2 АТРИБУТ 1 ? * АТРИБУТ 2? ВРЕМЯ ВВЕДИТЕ НУЖНЫЙ НОМЕР 1 — СОЗДАТЬ СТРУКТУРУ 2 —СОЗДАТЬ ОБЪЕКТ 3 — ВЫВЕСТИ ИМЕНА ВСЕХ СТРУКТУР 4 — ВЫВЕСТИ ИМЕНА ВСЕХ ОБЪЕКТОВ 5 — ПРОСМОТРЕТЬ СТРУКТУРУ 6 — ПРОСМОТРЕТЬ ОБЪЕКТ 7 — ПРИСВОИТЬ ЗНАЧЕНИЕ ОБЪЕКТУ 8 — СКОПИРОВАТЬ ЗНАЧЕНИЕ АТРИБУТА В ПЕРЕМЕННУЮ 9 — ПРОВЕРИТЬ ПСЕВДОНАПРЯЖЕНИЕ ?2 ВВЕДИТЕ ИМЯ СТРУКТУРЫ ? НАПРЯЖЕНИЕ ВВЕДИТЕ ИМЯ ОБЪЕКТА ? ОБОРУДОВАНИЕ ВВЕДИТЕ ЧИСЛО АТРИБУТОВ ? 2 АТРИБУТ 1 ? 9:00 АТ РИБУТ 2? 1 ВВЕДИТЕ НУЖНЫЙ НОМЕР 1 — СОЗДАТЬ СТРУКТУРУ 2 —СОЗ ДАТЬ ОБЪЕКТ 3 — ВЫВЕСТИ ИМЕНА ВСЕХ СТРУКТУР 4 — ВЫВЕСТИ ИМЕНА ВСЕХ ОБЪЕКТОВ 5 — ПРОСМОТРЕТЬ СТРУКТУРУ 6 — ПРОСМОТРЕТЬ ОБЪЕКТ 7 — ПРИСВОИТЬ ЗНАЧЕНИЕ ОБЪЕКТУ 8 — СКОПИРОВАТЬ ЗНАЧЕНИЕ АТРИБУТА В ПЕРЕМЕННУЮ 9 — ПРОВЕРИТЬ ПСЕВДОНАПРЯЖЕНИЕ ?9 НАПРЯЖЕНИЕ СЛИШКОМ ВЕЛИКО-.767173 НАПРЯЖЕНИЕ СЛИШКОМ ВЕЛИКО- .8798876 НАПРЯЖЕНИЕ СЛИШКОМ ВЕЛИКО- .8236365 НАПРЯЖЕНИЕ СЛИШКОМ ВЕЛИКО- .9229655 НАПРЯЖЕНИЕ СЛИШКОМ ВЕЛИКО- .8604398 НАПРЯЖЕНИЕ СЛИШКОМ ВЕЛИКО- .8269814 НАПРЯЖЕНИЕ СЛИШКОМ ВЕЛИКО-.7464719 НАПРЯЖЕНИЕ СЛИШКОМ ВЕЛИКО-.7312078 НАПРЯЖЕНИЕ СЛИШКОМ ВЕЛИКО- .9698101
СОЗДАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ РАЗВИТЫХ СИСТЕМ ИИ 195 ГЛАВА 13 ОБЪЕКТНО-ОРИЕНТИРОВАННЫЕ ЭКСПЕРТНЫЕ СИСТЕМЫ Объектно-ориентированный подход используется и при разработке экспертных систем. В качестве примера рассмотрим разработку экс- пертной системы, определяющей, нужно ли эвакуировать расположен- ный у реки город при угрозе наводнения. Система будет работать со структурой, описывающей некоторые объекты. На первый взгляд мо- жет показаться, что создать такую систему непросто из-за сложности самой задачи, но в дальнейшем вы увидите, что это не так. Создание структуры Прежде всего, исходя из задачи, нужно выявить факторы, которые будут использоваться для прогноза. Эти факторы станут атрибутами структуры. Для примера возьмем 4 атрибута, которым согласно нечет- кой логике будут присваиваться такие значения, как высокий, теплый и т.д. В качестве атрибутов возьмем наиболее значимые в прогнозиро- вании наводнений факторы. 1. УРОВЕНЬ ВОДЫ. Если уровень воды в реке в черте города высок, существует угроза наводнения. Уровень воды может повышать- ся за счет стоков дождя и талого снега. 2. ДОЖДЬ. Если ожидаются обильные дожди и уровень воды вы- сок, то есть вероятность наводнения. Если дождей не ожидается, то в предсказании наводнений этот фактор не учитывается. 3. ТЕМПЕРАТУРА. Если предсказана теплая погода и с гор в реку стаяло много снега, а уровень воды в реке высок, есть опасность навод- нения. 4. СНЕГ. В расчет принимается количество снега в горах. Таяние снега может вызвать дополнительный сток воды в реку и повысить опасность наводнения. Если в горах мало снега, то этот фактор менее важен при прогнозировании наводнений, чем ТЕМПЕРАТУРА и ДОЖДЬ. Пусть структура называется НАВОДНЕНИЕ. Запишем функцию создания этой структуры: СОЗДАТЬ-СТРУКТУРУ (ИМЯ-СТРУКТУРЫ-НАВОДНЕНИЕ, ЧИСЛО-АТРИБУТОВ-4, АТРИБУТ-УРОВЕНЬ ВОДЫ, АТРИБУТ-ДОЖДЬ, АТРИБУТ-ТЕМПЕРАТУРА, АТРИБУТ-СНЕГ) <7*
196 ОБЪЕКТНО-ОРИЕНТИРОВАННЫЕ ЭКСПЕРТНЫЕ СИСТЕМЫ Создание объекта При создании объекта берутся значения факторов на определенный день, скажем на 1 апреля 1985 г. Предположим, объекты создаются метеослужбой для двух городов, расположенных на одной реке, — Ривер-Сити и Редвуд-Сити. Объекты именуются так же, как и города: РИВЕР-СИТИ и РЕДВУД-СИТИ. Запишем функцию создания объек- тов: СОЗДАТЬ-ОБЪЕКТ(ИМЯ-СТРУКТУРЫ-НАВОДНЕНИЕ, ИМЯ-ОБЪЕКТА-РИВЕР-СИТИ, УРОВЕНЬ ВОДЫ-ВЫСОКИЙ, ДОЖДЬ-ОБИЛЬНЫЙ, ТЕМПЕРАТУР А-ВЫСОКАЯ, СНЕГ-МНОГО) Итак, 1 апреля 1985 г. в Ривер-Сити были обильные дожди, жаркая погода, в горах много снега, уровень воды в реке высокий. СОЗДАТЬ-ОБЪЕКТ(ИМЯ-СТРУКТУРЫ-НАВОДНЕНИЕ, ИМЯ-ОБЪЕКТА-РЕДВУД-СИТИ, УРОВЕНЬ воды-низкий, ДОЖДЬ=НЕТ, ТЕМПЕРАТУРА-СРЕДНЯЯ, СНЕГ-МНОГО) В Редвуд-Сити в этот день было ясно, тепло, в горах много снега, уровень воды в реке низкий. Построение базы знаний Как и ранее, представим базу знаний в виде дерева решений, а затем преобразуем его в правила ЕСЛИ-TO. Дерево решений показано на рис. 13.1. Преобразовать дерево решений в набор правил, как помнит чита- тель, можно, проследив все возможные пути, ведущие к логическому выводу. В примере существует только один логический вывод, указы- вающий, нужно ли эвакуировать город. Правила К логическому выводу ведут 9 путей: 1. 1,2,4. 2. 1,2,5,8,11. 3. 1,2,5,8,12,15. 4. 1,2,5,8,12,16.
СОЗДАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ РАЗВИТЫХ СИСТЕМ ИИ 197 Нет VILLAGE- не беспокоиться 7 VILLAGE- эвакуировать 4 Нет Нет Нет Да Да Да Нет Да TEMPERA- TURE" высокая VILLAGE- не беспокоиться 14 VILLAGE эвакуировать 11 VILLAGE- не беспокоиться 9 RAIN- об ильный SNOW- много WATER -LEVEL высокий RAIN обильный EMPERA- TURE высокая 10 SNOW много 6 Нет VILLAGE- усилить внимание 13 VILLAGE- усилить внимание 15 Нет RAIN умеренный 12 VILLAGE- не беспокоиться 16 Рис. 13.1. Дерево решений для системы прогнозирования наводнений 5. 1,2,5,9. 6.1,3,6,10,13. 7. 1,3,6,10,14. 8. 1,3,6,7. 9. 1,3,7. Для каждого пути можно записать правило. Совокупность всех правил составит базу знаний. Напомним, что при записи правил ис- пользуются переменные.
198 ОБЪЕКТНО-ОРИЕНТИРОВАННЫЕ ЭКСПЕРТНЫЕ СИСТЕМЫ 1 ЕСЛИ WATER-LEVEL - ВЫСОКИЙ И RAIN - ОБИЛЬНЫЙ, ТО VILLAGE - ЭВАКУИРОВАТЬ 2 ЕСЛИ WATER-LEVEL - ВЫСОКИЙ И RAIN - НЕ СИЛЬНЫЙ И SNOW-МНОГО, TEMPERATURE - ВЫСОКАЯ, ТО VILLAGE - ЭВАКУИРОВАТЬ 3 ЕСЛИ WATER-LEVEL - ВЫСОКИЙ И RAIN - НЕ СИЛЬНЫЙ И SNOW-МНОГО, TEMPERATURE - СРЕДНЯЯ И RAIN-УМЕРЕННЫЙ, ТО VILLAGE - УСИЛИТЬ ВНИМАНИЕ 4 ЕСЛИ WATER-LEVEL - ВЫСОКИЙ И RAIN - НЕТ И SNOW-МНОГО, TEMPERATURE - СРЕДНЯЯ И RAIN-СЛАБЫЙ, ТО VILLAGE - НЕ БЕСПОКОИТЬСЯ 5 ЕСЛИ WATER-LEVEL - ВЫСОКИЙ И RAIN - НЕ СИЛЬНЫЙ И SNOW-МАЛО, ТО VILLAGE - НЕ БЕСПОКОИТЬСЯ 6 ЕСЛИ WATER-LEVEL - НЕ ВЫСОКИЙ И RAIN-СИЛЬНЫЙ И SNOW-МНОГО, TEMPERATURE - ВЫСОКАЯ, ТО VILLAGE - УСИЛИТЬ ВНИМАНИЕ 7 ЕСЛИ WATER-LEVEL - НЕ ВЫСОКИЙ И RAIN - СИЛЬНЫЙ И SNOW-МНОГО, TEMPERATURE - СРЕДНЯЯ, ТО VILLAGE - НЕ БЕСПОКОИТЬСЯ 8 ЕСЛИ WATER-LEVEL - НЕ ВЫСОКИЙ И RAIN-СИЛЬНЫЙ И SNOW-МАЛО, ТО VILLAGE - НЕ БЕСПОКОИТЬСЯ 9 ЕСЛИ WATER-LEVEL - ВЫСОКИЙ И RAIN-НЕ СИЛЬНЫЙ , ТО VILLAGE - НЕ БЕСПОКОИТЬСЯ Использование базы знаний Для того чтобы проследить применение объектов в правилах, соста- вим таблицу:
СОЗДАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ РАЗВИТЫХ СИСТЕМ ИИ 199 Имена атрибутов Ривер-Сити Редвуд-Сити УРОВЕНЬ ВОДЫ высокий НИЗКИЙ дождь ОБИЛЬНЫЙ НЕТ ТЕМПЕРАТУРА ВЫСОКАЯ СРЕДНЯЯ СНЕГ МНОГО много Возьмем для примера первое правило и посмотрим, как при работе с ним используются объекты (помните о переменных !): 1 ЕСЛИ WATER-LEVEL - ВЫСОКИЙ И RAIN - ОБИЛЬНЫЙ, ТО VILLAGE - ЭВАКУИРОВАТЬ Предположим, что мы хотим знать, надо ли эвакуировать Ривер- Сити. Для того чтобы воспользоваться правилом, всем переменным условия надо присвоить значения, а для этого необходимо распола- гать информацией об уровне воды в реке и о количестве осадков. Такая информация уже содержится в объекте РИВЕР-СИТИ, и передать ее в переменные можно с помощью функции КОПИРО- ВАТЬ. Функции КОПИРОВАТЬ передаются имена структуры, объ- екта и атрибута. Она находит нужный атрибут, выбирает его значение и заносит его в указанную переменную. Например: WATER-LEVEL- КОПИРОВАТЬ (ИМЯ-СТРУКТУРЫ-НАВОДНЕНИЕ, ИМЯ- ОБЪЕКТА-РИВЕР-СИТИ, УРОВЕНЬ-ВОДЫ) Подпрограмма, реализующая эту функцию, ищет объект с именем РИВЕР-СИТИ, выбирает значение атрибута УРОВЕНЬ-ВОДЫ (в данном случае ВЫСОКИЙ) и присваивает это значение переменной WATER-LEVEL. Первое условие правила 1 удовлетворяется: «ЕСЛИ WATER-LEVEL=BbICOKHft». Теперь надо проверить на истинность второе условие правила — РАШ=ОБИЛЬНЫЙ. Это можно сделать с помощью той же функции: RAIN - КОПИРОВАТЬ (ИМЯ-СТРУКТУРЫ-НАВОДНЕНИЕ, ИМЯ-ОБЪЕК- ТА-РИВЕР-СИТИ, ДОЖДЬ) Поскольку атрибут ДОЖДЬ объекта РИВЕР-СИТИ имеет значе- ние ОБИЛЬНЫЙ, оно и будет присвоено переменной RAIN. Все усло- вия правила истинны, и, значит, срабатывает часть ТО — нужно эвакуировать город. Подобные операции можно проделать и для Ре- двуд-Сити. По такой схеме информация передается от объектов в пе- ременные правил, которые затем работают в системе прогноза наводнений.
200 ОБЪЕКТНО-ОРИЕНТИРОВАННЫЕ ЭКСПЕРТНЫЕ СИСТЕМЫ Прямая и обратная цепочки рассуждений В прямой и обратной цепочках рассуждений также можно приме- нять объекты. При этом к атрибутам объектов добавляются операции доступа, т.е. используются функции ПРИСВОИТЬ и КОПИРОВАТЬ. В остальном все сказанное в предыдущих главах о прямой и обратной цепочках рассуждений остается справедливым. Какую же цепочку рас- суждений выбрать для данного примера — прямую или обратную ? Как читатель уже, вероятно, догадался, больше подойдет прямая цепочка рассуждений, поскольку, исходя из известных условий, нужно сделать логический вывод. В нашем примере условия — это дождь, снег и т.д. Система проверяет истинность условных частей правил для того чтобы выполнить логический вывод. Однако даже для этого примера обратную цепочку рассуждений нельзя сбрасывать со счетов. Она может быть полезна, если есть инфор- мация об уже происшедшем наводнении. С помощью обратной цепочки рассуждений уточняются условия, которые к нему привели. В этом случае обратная цепочка рассуждений работает так же, как в приме- рах, обсуждавшихся раньше. Иными словами, по следствию ищутся причины. В системе, реализующей обратную цепочку рассуждений, сначала просматриваются части ТО правил на совпадение с уже изве- стным событием (в последнем примере — наводнением), а уже затем — условные части (ЕСЛИ) правил для выявления условий. Поиск причин, вызвавших наводнение, с помощью обратной це- почки рассуждений — прекрасный способ настройки системы прогно- зирования наводнений, в которой реализована прямая цепочка рассуждений. Уточнение причин даст возможность делать более точ- ные прогнозы на будущее. Обратная цепочка рассуждений использует- ся для выявления причин, прямая — для прогнозирования.
5 БОЛЕЕ СЛОЖНЫЕ МЕТОДЫ ПРЕДСТАВЛЕНИЯ ЗНАНИЙ В СИСТЕМАХ ИИ •Представление знаний в задачах с неопределенностями и са- мообучающихся системах •Подробные примеры и тексты программ ГЛАВА 14 СЕМАНТИЧЕСКИЕ СЕТИ При разработке экспертных систем для графического представле- ния знаний используются семантические сети. Семантические сети, так же как и деревья решений, состоят из узлов, изображаемых окруж- ностями, и соединяющих их линий со стрелками. Узлы сети обознача- ют некоторые порции информации, а соединяющие их линии — взаимосвязи между ними. На рис. 14.1 показана семантическая сеть, графически представля- ющая базу знаний о птицах и самолетах. Линии указывают на отно- шения между узлами, содержащими информацию. Например, глядя на рисунок, можно сказать, что узел «двигатель» связан с узлом «бензин» отношением «использует», т.е. двигатель использует бензин. Структура и объекты семантических сетей Один из способов применения семантических сетей — создание объектов. Посмотрим, как это делается на примере семантической сети (рис. 14.1). Прежде всего нужно разработать структуру, описывающую все объекты с общим названием ПТИЦА. Принадлежность объектов структуре ПТИЦА определяется отношением «является». Этим отно- шением в структуре связаны объекты ОРЕЛ и СОКОЛ, т.е. так конста- тируется факт, что орел и сокол — птицы. Все остальные линии (отношения) на рисунке связаны с атрибутами структуры ПТИЦА. Отношением «имеет» в структуре связаны атрибуты КРЫЛЬЯ, ОПЕ- РЕНИЕ и КЛЮВ. Другими словами, объекты с общим названием ПТИ- ЦА имеют все указанные атрибуты, как это показано на рисунке. Отношением «умеет» в структуре связан атрибут ЛЕТАТЬ, т.е. птицы умеют летать. Атрибут АЭРОДИНАМИЧЕСКИЕ ПРИНЦИПЫ свя-
202 СЕМАНТИЧЕСКИЕ СЕТИ зан в структуре отношением «использует», т.е. птицы используют аэродинамические принципы. Воспользовавшись описанными атрибу- тами, создадим структуру ПТИЦА. СОЗДАТЬ-СТРУКТУРУ (ИМЯ СТРУКТУРЫ-ПТИЦА, ЧИСЛО АТРИБУТОВ - 5, АТРИБУТ - КЛЮВ,АТРИБУТ - ОПЕРЕНИЕ, АТРИБУТ-КРЫЛЬЯ, АТРИБУТ-ЛЕТАТЬ, АТРИБУТ - АЭРОДИНАМИЧЕСКИЕ ПРИНЦИПЫ) На основе этой структуры можно создать объекты ОРЕЛ и СОКОЛ. Создадим, например, объект ОРЕЛ: СОЗДАТЬ-ОБЪЕКТ (ИМЯ СТРУКТУРЫ - ПТИЦА, ИМЯ ОБЪЕКТА - ОРЕЛ, КЛЮВ-ДЛИННЫЙ, ОПЕРЕНИЕ - БЛЕДНОЕ, КРЫЛЬЯ -ШИРОКИЕ, ЛЕТАТЬ-ВЫСОКО, АЭРОДИНАМИЧЕСКИЕ ПРИНЦИПЫ - ПЛАНИРОВАНИЕ) Теперь, применяя имеющиеся объекты, можно сформировать базу знаний, которая поможет нам при ответах да различные вопросы, относящиеся к этим объектам. Использование семантической сети в системе, основанной на правилах С помощью семантической сети можно создать базу знаний, хра- нящую сведения о птицах и самолетах. В дальнейшем ее можно приме- нять для идентификации летающих объектов. Частью базы знаний, содержащей сведения о птицах и самолетах, могут быть, например, такие правила: ЕСЛИ АТРИБУТ-ОБЪЕКТА - КЛЮВ, ТО ЛЕТАЮЩИЙ ОБЪЕКТ - ПТИЦА ЕСЛИ АТРИБУТ-ОБЪЕКТА - КРЫЛЬЯ, ТО ЛЕТАЮЩИЙ ОБЪЕКТ - ПТИЦА ИЛИ ЛЕТАЮЩИЙ ОБЪЕКТ - САМОЛЕТ ЕСЛИ АТРИБУТ-ОБЪЕКТА - СОКОЛ ИЛИ АТРИБУТ-ОБЪЕКТА - ОРЕЛ, ТО ЛЕТАЮЩИЙ ОБЪЕКТ - ПТИЦА ЕСЛИ АТРИБУТ-ОБЪЕКТА - ОПЕРЕНИЕ И АТРИБУТ-ОБЪЕКТА - КРЫЛЬЯ И АТРИБУТ-ОБЪЕКТА - КЛЮВ, ТО ЛЕТАЮЩИЙ ОБЪЕКТ - ПТИЦА
БОЛЕЕ СЛОЖНЫЕ МЕТОДЫ ПРЕДСТАВЛЕНИЯ ЗНАНИЙ В СИСТЕМАХ ИИ 203 ЕСЛИ ЛЕТАЮЩИЙ ОБЪЕКТ - ПТИЦА, ТО АТРИБУТ ОБЪЕКТА - ОПЕРЕНИЕ Рис. 14.1. Семантическая сеть, отражающая взаимоотношения между атрибутами птицы и самолета Подытожим основные свойства семантических сетей. 1. Семантические сети описывают отношения между объектами, которые задаются узлами сети. 2. Узлы обозначаются окружностями и имеют имена. 3. Отношения между узлами указываются связывающими их ли- ниями. 4. Семантическую сеть можно использовать для создания структур и объектов. 5. Семантическую сеть можно использовать для создания правил базы знаний.
204 СЕМАНТИЧЕСКИЕ СЕТИ Пример программы На листинге 14.1 показана написанная на Бейсике программа, ра- ботающая с семантической сетью (рис. 14.2). Эта семантическая сеть только часть сети, показанной на рис. 14.1. Пояснение к программе Листинг программы 14.1 можно разделить на 3 функциональные части. Каждая часть иллюстрирует различные аспекты работы с се- мантической сетью. Например, можно получить все пары узлов, свя- занные определенным отношением; так, отношением «является» связаны пары СОКОЛ — ПТИЦА и ОРЕЛ — ПТИЦА. Каждый аспект работы с семантической сетью иллюстрируется не более 15 предложе- ниями, написанными на Бейсике. Рис. 14.2. Семантическая сеть Семантическая сеть определяется в двух массивах. Первый массив, N$, содержит имена всех узлов, а второй двумерный массив, R$, содер- жит имена отношений (линий, соединяющих узлы). Значения элемен- там массивов присваиваются в предложениях 70 и 75 программы в соответствии с рис. 14.3. На этом рисунке дано еще одно представление семантической сети в виде матрицы, более удобное для заполнения массивов N$ и R$. Программа ведет с пользователем диалог (предложения 300 - 365), предлагая ему выбрать один из пунктов меню.
БОЛЕЕ СЛОЖНЫЕ МЕТОДЫ ПРЕДСТАВЛЕНИЯ ЗНАНИЙ В СИСТЕМАХ ИИ 205 ВВЕДИТЕ НУЖНЫЙ НОМЕР: 1 - ПОЛУЧИТЬ ВСЕ УЗЛЫ, СВЯЗАННЫЕ С ОТДЕЛЬНЫМ УЗЛОМ КОНКРЕТНЫМ ОТНОШЕНИЕМ 2 - ПОЛУЧИТЬ ИМЕНА ВСЕХ ОТНОШЕНИЙ ДЛЯ ОТДЕЛЬНОГО УЗЛА 3 - ПОЛУЧИТЬ ВСЕ ПАРЫ УЗЛОВ. СВЯЗАННЫЕ КОНКРЕТНЫМ ОТНОШЕНИЕМ 4 - ВЫХОД ? Функции, указанные в меню, реализованы, начиная с предложе- ний программы 1000, 1100, 1200 и 1300 соответственно. Листинг программы Листинг 14Л 1 REM ♦♦*♦♦♦♦♦♦♦♦ СЕМАНТИЧЕСКИЕ СЕТИ ♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦ 5 REM МАССИВ ОТНОШЕНИЙ. МАТРИЦА ИМЕН СОЕДИНЯЮЩИХ УЗЛЫ ЛИ- НИЙ 10 DIM R$(10,10) 15 REM МАССИВ ИМЕН УЗЛОВ 20 DIM N$(10) 25 REM ИНИЦИАЛИЗАЦИЯ МАССИВОВ ОТНОШЕНИЙ И ИМЕН УЗЛОВ 30FORI-1TO10 35 FOR J-1 ТО 10 40R$(I,J)-"": N$(I)-H" 45 NEXT J 50 NEXT I
206 СЕМАНТИЧЕСКИЕ СЕТИ 55 REM В ЭТОЙ ЧАСТИ ПРОГРАММЫ ЭЛЕМЕНТАМ МАССИВОВ ИМЕН I УЗЛОВ 1 60 REM И ОТНОШЕНИЙ ПРИСВАИВАЮТСЯ ЗНАЧЕНИЯ. НО ПРОГРАММИСТ МОЖЕТ 65 REM ЗАМЕНИТЬ ЭТИ ПРЕДЛОЖЕНИЯ НА ПРЕДЛОЖЕНИЯ ВВОДА ДАННЫХ 69 REM ****** СЕМАНТИЧЕСКАЯ СЕТЬ ****** 70 И$(1)-"ПТИЦА":Н$(2)-"СОКОЛ":Н$(3)-"ОРЕЛ":Н$(4)-"КРЫЛЬЯ" 71 М$(5)-"ОПЕРЕНИЕ”:Н$(2,1)-"ЯВЛЯЕТСЯ" 75 Р$(3.1)-"ЯВЛЯЕТСЯ":Р$(1.4)-”ИМЕЕТ":Я$(1,5)-"ИМЕЕТ" 299 REM ************************************************** 300 PRINT "ВВЕДИТЕ НУЖНЫЙ НОМЕР: " 305 PRINT ”1 — ПОЛУЧИТЬ ВСЕ УЗЛЫ. СВЯЗАННЫЕ С ОТДЕЛЬНЫМ" 306 PRINT " УЗЛОМ КОНКРЕТНЫМ ОТНОШЕНИЕМ" 310 PRINT "2 — ПОЛУЧИТЬ ИМЕНА ВСЕХ ОТНОШЕНИЙ ДЛЯ ОТДЕЛЬНОГО УЗЛА" 315 PRINT "3 — ПОЛУЧИТЬ ВСЕ ПАРЫ УЗЛОВ. СВЯЗАННЫЕ КОНКРЕТНЫМ ОТНОШЕНИЕМ" 325 PRINT "4 —ВЫХОД" 360 INPUT N$ 365 ON N$ GOSUB 1000.1100,1200,1300 370 GOTO 300 1000 REM ***** ПОЛУЧЕНИЕ УЗЛОВ. СВЯЗАННЫХ С ОТДЕЛЬНЫМ УЗЛОМ 1005 REM ***** КОНКРЕТНЫМ ОТНОШЕНИЕМ 1010 INPUT "ВВЕДИТЕ ИМЯ УЗЛА";НИ$ 1015 INPUT "ВВЕДИТЕ ИМЯ ОТНОШЕНИЯ";ЯМ$ 1020 REM ПОИСК НУЖНОГО УЗЛА 1025 FOR 1-1 ТО 10 1030 IF NN$ - N$(l) THEN GOTO 1040 1035 NEXT I 1040 REM ДЛЯ УЗЛА НОМЕР I ПОИСК НУЖНОГО ОТНОШЕНИЯ В МАТРИЦЕ 1045 REM ОТНОШЕНИЙ. ОРГАНИЗАЦИЯ ЦИКЛА ПО J 1050 FOR J-1 ТО 10 1055 IF R$(I,J)-RM$ THEN PRINT N$(J) 1060 NEXT J 1065 RETURN 1100 REM ****** ПОЛУЧЕНИЕ ИМЕН ВСЕХ ОТНОШЕНИЙ ДЛЯ ОТДЕЛЬНОГО УЗЛА 1110 INPUT "ВВЕДИТЕ ИМЯ УЗЛА”^И$ 1115 REM ПОИСК СТРОКИ В МАТРИЦЕ ОТНОШЕНИЙ, СОДЕРЖАЩИЙ НУЖНОЕ ИМЯ 1120 FOR 1-1 ТО 10 1125 IF NN$ - N$(l) THEN GOTO 1135 1130 NEXT I 1135 REM ПЕЧАТЬ ВСЕХ ОТНОШЕНИЙ И ИМЕН УЗЛОВ 1140 FOR J-1 ТО 10 1145 IF R$(I,J)-"" THEN GOTO 1155 1150 PRINT N$(J);" ”;R$(I.J) 1155 NEXT J 1160 RETURN £
БОЛЕЕ СЛОЖНЫЕ МЕТОДЫ ПРЕДСТАВЛЕНИЯ ЗНАНИЙ В СИСТЕМАХ ИИ 207 1200 REM ****** ПОЛУЧЕНИЕ ВСЕХ ПАР УЗЛОВ, СВЯЗАННЫХ КОНКРЕТНЫМ 1201 REM ****** ОТНОШЕНИЕМ 1205 INPUT “ВВЕДИТЕ ИМЯ ОТНОШЕНИЯ";ЯМ$ 1210 FOR 1-1 ТО 10 1215 FOR J-1 ТО 10 1220 IF R$(l,J) - RM$ THEN PRINT N$(l);“ «;N$(J) 1225 NEXT J 1230 NEXT I 1235 RETURN 1400 REM ****** ВЫХОД 1405 STOP Пример работы программы RUN ВВЕДИТЕ НУЖНЫЙ НОМЕР: 1 — ПОЛУЧИТЬ ВСЕ УЗЛЫ. СВЯЗАННЫЕ С ОТДЕЛЬНЫМ УЗЛОМ КОНКРЕТНЫМ ОТНОШЕНИЕМ 2 — ПОЛУЧИТЬ ИМЕНА ВСЕХ ОТНОШЕНИЙ ДЛЯ ОТДЕЛЬНОГО УЗЛА 3 — ПОЛУЧИТЬ ВСЕ ПАРЫ УЗЛОВ, СВЯЗАННЫЕ КОНКРЕТНЫМ ОТНОШЕНИЕМ 4 —ВЫХОД ? 1 ВВЕДИТЕ ИМЯ УЗЛА ? ПТИЦА ВВЕДИТЕ ИМЯ ОТНОШЕНИЯ ? ИМЕЕТ КРЫЛЬЯ ОПЕРЕНИЕ ВВЕДИТЕ НУЖНЫЙ НОМЕР: 1 — ПОЛУЧИТЬ ВСЕ УЗЛЫ, СВЯЗАННЫЕ С ОТДЕЛЬНЫМ УЗЛОМ КОНКРЕТНЫМ ОТНОШЕНИЕМ 2 — ПОЛУЧИТЬ ИМЕНА ВСЕХ ОТНОШЕНИЙ ДЛЯ ОТДЕЛЬНОГО УЗЛА 3 — ПОЛУЧИТЬ ВСЕ ПАРЫ УЗЛОВ, СВЯЗАННЫЕ КОНКРЕТНЫМ ОТНОШЕНИЕМ 4 — ВЫХОД ? 1 ВВЕДИТЕ ИМЯ УЗЛА ? ОРЕЛ ВВЕДИТЕ ИМЯ ОТНОШЕНИЯ ? ЯВЛЯЕТСЯ ПТИЦА ВВЕДИТЕ НУЖНЫЙ НОМЕР: 1 — ПОЛУЧИТЬ ВСЕ УЗЛЫ. СВЯЗАННЫЕ С ОТДЕЛЬНЫМ УЗЛОМ КОНКРЕТНЫМ ОТНОШЕНИЕМ 2 — ПОЛУЧИТЬ ИМЕНА ВСЕХ ОТНОШЕНИЙ ДЛЯ ОТДЕЛЬНОГО УЗЛА 3 — ПОЛУЧИТЬ ВСЕ ПАРЫ УЗЛОВ. СВЯЗАННЫЕ КОНКРЕТНЫМ ОТНОШЕНИЕМ 4 —ВЫХОД ?2 ВВЕДИТЕ ИМЯ УЗЛА ? ПТИЦА КРЫЛЬЯ ИМЕЕТ ОПЕРЕНИЕ ИМЕЕТ
208 КОЭФФИЦИЕНТЫ УВЕРЕННОСТИ Самое главное при работе программы — найти только отношения, соответствующие дугам, выходящим из узла, а отношения «является» для узла ПТИЦА соответствуют линиям, входящим в него от узлов СОКОЛ и ОРЕЛ. ВВЕДИТЕ НУЖНЫЙ НОМЕР: 1 — ПОЛУЧИТЬ ВСЕ УЗЛЫ, СВЯЗАННЫЕ С ОТДЕЛЬНЫМ УЗЛОМ КОНКРЕТНЫМ ОТНОШЕНИЕМ 2 — ПОЛУЧИТЬ ИМЕНА ВСЕХ ОТНОШЕНИЙ ДЛЯ ОТДЕЛЬНОГО УЗЛА 3 — ПОЛУЧИТЬ ВСЕ ПАРЫ УЗЛОВ, СВЯЗАННЫЕ КОНКРЕТНЫМ ОТНОШЕНИЕМ 4--ВЫХОД ?3 ВВЕДИТЕ ИМЯ ОТНОШЕНИЯ ? ИМЕЕТ ПТИЦА КРЫЛЬЯ ПТИЦА ОПЕРЕНИЕ ГЛАВА 15 КОЭФФИЦИЕНТЫ УВЕРЕННОСТИ Коэффициенты уверенности (КУ) используются в области матема- тики, называемой нечеткой логикой. Поскольку эвристические прави- ла ЕСЛИ-TO основываются исключительно на человеческом опыте, с полной определенностью никогда нельзя сказать, что они верны. Поль- зователь экспертной системы также не может быть полностью уверен, что значения, которые он присваивает переменным, абсолютно кор- ректны. Например, правило: ЕСЛИ ПРОЦЕНТНЫЕ СТАВКИ - ПАДАЮТ И НАЛОГИ УМЕНЬШАЮТСЯ, ТО УРОВЕНЬ ЦЕН НА БИРЖЕ - РАСТЕТ верно не всегда, поэтому можно приписать ему значение некоторого коэффициента уверенности. КУ может иметь значение от -1 до 1. Отрицательное значение КУ показывает степень уверенности в том, что правило не верно, а положительное значение — что правило верно. Таким образом, КУ, равный +1, указывает на полную уверенность в том, что правило верно, а-1 — на полную уверенность в некорректно- сти правила. Конечно, правила, для которых КУ равно -1, рассматри- вать нет смысла. Пусть приведенное правило имеет КУ, равный 0,9, и нельзя утвер- ждать, что процентные ставки падают, т.е. первому условию правила назначен КУ, равный 0,6. Кроме того, допустим, что налоги колеблют- ся (то увеличиваются, то уменьшаются), поэтому предположить уменьшение налогов можно, только если КУ равен 0,8. Тогда пра- вило можно записать так:
БОЛЕЕ СЛОЖНЫЕ МЕТОДЫ ПРЕДСТАВЛЕНИЯ ЗНАНИЙ В СИСТЕМАХ ИИ 209 ЕСЛИ ПРОЦЕНТНЫЕ СТАВКИ - ПАДАЮТ (КУ - 0.6) И НАЛОГИ УМЕНЬШАЮТСЯ (КУ - 0.8), ТО УРОВЕНЬ ЦЕН НА БИРЖЕ - РАСТЕТ (КУ правила - 0.9) Коэффициент уверенности, что уровень цен на бирже будет расти может быть подсчитан следующим образом: выбирается минимальный КУ для условий части ЕСЛИ правила, разделенных логическим опера- тором И, и умножается на КУ для всего правила. Для приведенного примера: (minimum (0.6, 0.8))*0.9 = 0.6*0.9 - 0.54 Следовательно, при КУ = 0,54 можно сказать, что уровень цен на бирже будет падать. Если есть еще одно правило с тем же логическим выводом о росте уровня цен на бирже, но другим набором условий, то КУ для этого вывода нужно выбрать максимальным из КУ для вывода первого правила и КУ для вывода второго правила. На первый взгляд все это кажется очень сложным, поэтому разберем пример. Прежде всего сформулируем общие принципы. 1. Выбрать максимальное значение КУ из КУ для условий правила, разделенных логическим оператором И. 2. Если в правиле есть оператор ИЛИ, выбрать максимальное зна- чение из КУ для всех условий правила, разделенных оператором И для всех условий, связанных оператором ИЛИ. 3. Умножить выбранный КУ на КУ правила. 4. Если существует несколько правил с одинаковым логическим выводом, выбрать из всех полученных КУ максимальный. Рассмотрим два правила с одним и тем же логическим выводом С: ЕСЛИ А (КУ-0.3) И В (КУ-0.6), ТО С (КУ-0.5) ЕСЛИ D (КУ-0.4) И Е (КУ-0.7), ТО С (КУ-0.9) В приведенных правилах КУ для логического вывода С подсчиты- вается следующим образом: maximum ((minimum(0.3,0.6)*0.5), (minimum (0.4,0.7) *0.9)) = maximum ((03*0.5),(0.4*0.9)) = maximum (0.15,0.36) = 0.36 Возьмем пример с использованием логического оператора ИЛИ: 8 Заказ №476
210 КОЭФФИЦИЕНТЫ УВЕРЕННОСТИ ЕСЛИ А (КУ-0.3) И В (КУ-0.6) ИЛИ D (КУ-0.5), ТО С (КУ-0.4) В этом примере КУ для логического вывода С считается так: maximum (minimum (0.3,0.6), 0.5)*0.4 = maximum (0.3,0.5)*0.4 = 0.5*0.4=0.2 Граничные значения коэффициента уверенности Во многих случаях изначально заданы граничные значения коэф- фициента уверенности. Логический вывод считается верным только в том случае, если его КУ превышает заранее заданные граничные зна- чения. Работа с базой знаний продолжается до тех пор, пока значение коэффициента уверенности логического вывода больше граничного значения. В процессе работы выполняются определенные вычисления. Предположим, для частного логического вывода КУ равно 0,4. Это значение запоминается. Затем оно сравнивается с граничным значени- ем КУ (допустим, что оно равно 0,8). Запомненное значение оказалось меньше граничного, и, значит, работа с базой знаний продолжается. Если при работе с базой знаний встретился тот же самый логический вывод, КУ для нового правила умножается на 1 минус значение запом- ненного ранее КУ и результат прибавляется к запомненному ранее КУ. Значение КУ, равное 1, свидетельствует об абсолютной уверенности в правильности вывода. Затем вновь запомненное значение КУ сравни- вается с граничным и если оно больше, выполняется логический вывод, в противном случае, работа с базой знаний продолжается. Вышесказан- ное можно записать с помощью равенства: Запомненный КУ - Ранее запомненный КУ + (1-Ранее запомненный КУ) ♦ КУ нового правила Например: Граничное значение КУ -0,8 Правило: ЕСЛИ А, ТО В (КУ-0,6) Запомненный КУ: 0,6 Новое правило: ЕСЛИ С,ТО В (КУ-0,7) Запомненный КУ-0,6+ (1-0,6)*0,7-0,88 (граничные значения превышены, и выполняется вывод).
БОЛЕЕ СЛОЖНЫЕ МЕТОДЫ ПРЕДСТАВЛЕНИЯ ЗНАНИЙ В СИСТЕМАХ ИИ 211 Пример программы Ниже показана программа, работающая с коэффициентами уве- ренности. Пояснения к программе Правило, использующееся в программе, приведено в предложени- ях 20 — 60 и запрограммировано в предложениях 400 — 430. Для каждой переменной условия правила отведен один элемент массива коэффициентов уверенности. Поскольку в правиле 3 переменных ус- ловия А,В и С, то в массиве под них отведены элементы CF(1), CF(2) и CF(3). Программа запрашивает у пользователя значения этих пере- менных и соответствующих им КУ в предложениях 320,340 и 360. Если пользователь вводит значение КУ, то оно заменяет значение КУ, при- нятое по умолчанию (предложения 330,350 и 370). По умолчанию всем КУ присваивается значение 1 (предложения 150-170). Инженер базы знаний может заменить какие-то из этих значений (предложение 190). Значения, принятые по умолчанию, передаются в массив CF в предло- жениях 230-250. Пользователь также может изменить принятые по умолчанию значения (предложения 320-370). Окончательные вычис- ления выполняются в предложениях 450-500. Листинг программы 15Л 10 REM ♦♦♦♦♦ КОЭФФИЦИЕНТЫ УВЕРЕННОСТИ ♦♦♦♦♦♦♦♦♦♦♦♦♦♦ 20 REM РАССМОТРИМ ПРАВИЛО 30 REM ЕСЛИ А-2 (КУ-0.6) И 40 REM В - 3 (КУ-О.З) И 50REM С-5 (КУ-1), 60REMTO D-5 (КУ-0.4) 70 REM ЧИСЛА В СКОБКАХ ПРЕДСТАВЛЯЮТ СОБОЙ ЗНАЧЕНИЯ КУ, 80 REM ПРИСВОЕННЫЕ ЭКСПЕРТОМ ПРИ РАЗРАБОТКЕ ПРАВИЛА. 90 REM ЭТИ ЗНАЧЕНИЯ СЧИТАЮТСЯ ПРИНЯТЫМИ ПО УМОЛЧАНИЮ, НО 100 REM ПОЛЬЗОВАТЕЛЬ МОЖЕТ ИХ ИЗМЕНИТЬ. 110REM 120 REM МАССИВ CF СОДЕРЖИТ ЗНАЧЕНИЯ КУ, ПРИСВОЕННЫЕ ЭКСПЕР- ТОМ 130 DIMD(100) 140 REM ИНИЦИАЛИЗАЦИЯ МАССИВА D 150 FOR 1-1 ТО 100 160 D (I)-1: REM КУ РАВЕН 1 170 NEXTI 180 REM ЗНАЧЕНИЯ ПО УМОЛЧАНИЮ ♦♦♦♦♦♦♦♦♦♦♦♦ 190 D(l)-.6:D(2)-.3 200 REM В НАЧАЛЕ ПРОГРАММЫ УМАЛЧИВАЕМЫЕ ЗНАЧЕНИЯ 210 REM ПЕРЕСЫЛАЮТСЯ В МАССИВ КОЭФФИЦИЕНТОВ УВЕРЕННОСТИ 8*
212 КОЭФФИЦИЕНТЫ УВЕРЕННОСТИ 220 DIM CF(IOO) 230 FOR 1-1 TO 100 240 CF(I)-D(I) 250 NEXT I 260 REM »»•*»»•••»»» ПРИСВОЕНИЕ ЗНАЧЕНИЙ ПЕРЕМЕННЫМ 270 PRINT’TUIH КАЖДОЙ ПЕРЕМЕННОЙ ВВЕДИТЕ ЗНАЧЕНИЯ, " 280 PRINT "ЗАТЕМ ЗАПЯТУЮ И ПО ЖЕЛАНИЮ ЗНАЧЕНИЕ КУ" 290 PRINT "ИЛИ 0 ДЛЯ ТОГО, ЧТОБЫ ИСПОЛЬЗОВАТЬ" 300 PRINT " ЗНАЧЕНИЕ КУ, ПРИНЯТОЕ ПО УМОЛЧАНИЮ" 310 REM ПРАВИЛО БУДЕТ ИСПОЛЬЗОВАТЬ ПЕРВЫЕ 3 ЭЛЕМЕНТА МАССИВА CF 320 INPUT "ПЕРЕМЕННАЯ А-";А,С1 330 IF СЮ THEN CF(1)-C1 340 INPUT'nEPEMEHHAR В-";В,С1 350 IF СЮ THEN CF(2)-C1 360 INPUT "ПЕРЕМЕННАЯ C-";C,C1 370 IF Cl 0 THEN CF(3)-C1 380 EX-0:REM ФЛАГ ВЫПОЛНЕНИЯ, ЕСЛИ EX-1, 381 REM ВЫЧИСЛЯЕТСЯ ЧАСТЬ TO И КУ 390 IF (А-2) AND (В-3) AND (С-5) THEN EX-1 400 IF EX-0 THEN GOTO 500 410 REM ВЫПОЛНЕНИЕ ПРАВИЛА 420 D-5:PRINT "ПОЛУЧЕННОЕ ЗНАЧЕНИЕ D-";D 430 REM ВЫЧИСЛЕНИЕ КУ ДЛЯ ПРАВИЛА 440REM КУ (CF) -(MINIMUM CF(l),CF(2),CF(3))*0.4 450X-CF(l) 460PRINT"Ky(l)-";CF(l);"Ky(2)-";CF(2);" КУ(3)-";СЕ(3) 470 IF CF(2) THEN X-CF(2) 480 IF CFO) THEN X-CF(3) 490 CF-X*.4:PRINT"Ky - ";CF:STOP 500 PRINT"**** ПРАВИЛО HE РАБОТАЕТ ”:STOP Пример выполнения программы RUN ДЛЯ КАЖДОЙ ПЕРЕМЕННОЙ ВВЕДИТЕ ЗНАЧЕНИЯ, ЗАТЕМ ЗАПЯТУЮ И ПО ЖЕЛАНИЮ ЗНАЧЕНИЕ КУ ИЛИ 0 ДЛЯ ТОГО. ЧТОБЫ ИСПОЛЬЗОВАТЬ ЗНАЧЕНИЕ КУ, ПРИНЯТОЕ ПО УМОЛЧАНИЮ ПЕРЕМЕННАЯ А-?2.0 ПЕРЕМЕННАЯ В-7 3,0 ПЕРЕМЕННАЯ С-7 5.0 ПОЛУЧЕННОЕ ЗНАЧЕНИЕ D-5 КУ(1) - 0.6 КУ(2) - 0.3 КУ(3) - 1 КУ-0.12 Break In 500 Ok ДЛЯ КАЖДОЙ ПЕРЕМЕННОЙ ВВЕДИТЕ ЗНАЧЕНИЯ, ЗАТЕМ ЗАПЯТУЮ И ПО ЖЕЛАНИЮ ЗНАЧЕНИЕ КУ ИЛИ 0 ДЛЯ ТОГО. ЧТОБЫ ИСПОЛЬЗОВАТЬ ЗНАЧЕНИЕ КУ, ПРИНЯТОЕ ПО УМОЛЧАНИЮ
БОЛЕЕ СЛОЖНЫЕ МЕТОДЫ ПРЕДСТАВЛЕНИЯ ЗНАНИЙ В СИСТЕМАХ ИИ 213 ПЕРЕМЕННАЯ А7 2,0.4 ПЕРЕМЕННАЯ В-7 3,0.6 ПЕРЕМЕННАЯ С-7 5,0 ПОЛУЧЕННОЕ ЗНАЧЕНИЕ D - 5 КУ(1) - 0.4 КУ(2) - 0.6 КУ(3) - 1 КУ-0.16 Break In 500 Ok ДЛЯ КАЖДОЙ ПЕРЕМЕННОЙ ВВЕДИТЕ ЗНАЧЕНИЯ, ЗАТЕМ ЗАПЯТУЮ И ПО ЖЕЛАНИЮ ЗНАЧЕНИЕ КУ ИЛИ 0 ДЛЯ ТОГО, ЧТОБЫ ИСПОЛЬЗОВАТЬ ЗНАЧЕНИЕ КУ. ПРИНЯТОЕ ПО УМОЛЧАНИЮ ПЕРЕМЕННАЯ А-72,0 ПЕРЕМЕННАЯ В-74,0 ПЕРЕМЕННАЯ С-73,0 **** ПРАВИЛО НЕ РАБОТАЕТ Break In 510 Ok ГЛАВА 16 САМООБУЧАЮЩИЕСЯ СИСТЕМЫ Существует много способов обучения человека. Можно излагать ему абстрактные факты или учить на примерах. Если сказать ребен- ку, что, дотронувшись до горячей плиты, он сильно обожжется, то вряд ли ребенок сделает из этого вывод, что он обязательно обожжется, дотронувшись до любого горячего предмета. Объяснить ребенку, что нельзя дотрагиваться до горячей плиты, можно и другим способом — просто сформулировав общее правило: дотронешься до горячего — обожжешься. Какой бы метод ни использовался при обучении, человек всегда пополняет свои знания, сталкиваясь с чем-то новым. Например, если ребенок еще не понимает, что соприкосновение с горячим предме- том приведет к ожогу, и сунул палец в кипяток, то он может, наконец, прийти к нужному выводу. Такая форма приобретения знаний назы- вается обратной связью. Обучение с помощью обратной связи пока- зано на рис. 16.1. Человек, благодаря механизму обратной связи и уже имеющихся знаний, приобретает новые. Следовательно, человек учит- ся на опыте. Приблизительно также «обучается» компьютерная программа. В нее заложен алгоритм хранения фактов и выполнения логических вы- водов. Логические выводы связаны в программе с постоянно пополня- ющими ее новыми фактами. Ниже приводится пример самообучающейся системы, который следует рассматривать исходя из предпосылки:
214 САМООБУЧАЮЩИЕСЯ СИСТЕМЫ Система будет самообучаться только в том случае, если она соприкоснулась с чем-то противоречащим ранее известному По такому же принципу обучается и человек. В конце концов он изменит свое мнение, если знает или чувствует, что оно ошибочно. Пример самообучающейся системы Рассмотрим систему, которая должна понимать различия между автомобилем и танком. Некоторые свойства, отличающие автомобиль от танка, приведены на рис. 16.2. Танки и автомобили обладают, напри- мер, такими признаками: у танка есть пушка и люк у автомобиля есть дверца и колеса у танка и у автомобиля есть кузов Компьютерную программу можно обучить, объяснив ей разницу только между двумя объектами. Но затем заложенный в нее принцип работы она может распространять на большее число объектов. В про- грамме содержатся 3 списка: в списке 1 хранятся атрибуты автомобиля, в списке 2 — танка, а в списке 3 — атрибуты общие и для танка, и для автомобиля. Заметим, что система будет работать одинаково независимо от того, о каких объектах пойдет речь. Обучающаяся программа прежде всего запросит у пользователя имена объектов: ВВЕДИТЕ ИМЯ ОБЪЕКТА 1 ? АВТОМОБИЛЬ ВВЕДИТЕ ИМЯ ОБЪЕКТА 2 ? ТАНК .Прежде чем программа приступит к описанию одного из объектов, она запросит ввод его атрибутов:
БОЛЕЕ СЛОЖНЫЕ МЕТОДЫ ПРЕДСТАВЛЕНИЯ ЗНАНИЙ В СИСТЕМАХ ИИ 215 Танк Пушка Люк Автомобиль Кузов Колеса - Дверцы Рис. 16.2. Отличительные черты объектов ВВЕДИТЕ АТРИБУТЫ ЛЮБОГО ОБЪЕКТА И ВК В КОНЦЕ ВВЕДИТЕ АТРИБУТ 1 ? ПУШКА ВВЕДИТЕ АТРИБУТ 2 ? Л ЮК ВВЕДИТЕ АТРИБУТ 3 ? КУЗОВ ВВЕДИТЕ АТРИБУТ 4 ? ВК Затем программа начинает сравнивать введенные атрибуты с атри- бутами первого списка, описывающими автомобиль. Поскольку про- грамма еще ничего не знает об автомобиле, первый список пуст, и результатом сравнения будет оценка нуль, показывающая, что совпа- дений нет. По тем же причинам и сравнение с атрибутами второго списка, описывающими танк, даст нулевую оценку. Получив нулевую оценку, программа предположит, что введенные атрибуты относятся к списку 1. Она запросит у пользователя подтверждения этого предположения. Пользователь ответит отрицательно, поскольку это атрибуты не автомобиля, а танка. В системе сработает механизм обрат- ной связи, так как предположение оказалось ошибочным. Пользова- тель сообщил программе, что введенные атрибуты не относятся к автомобилю, и она оставит список 1 пустым. В общий список также ничего не будет занесено, все атрибуты войдут в список 2, где хранятся атрибуты танка. В дальнейшем как только в список 1 будет занесен атрибут, совпадающий с атрибутом списка 2, он будет удален из этих списков и перенесен в общий список. Программа полагает, что совпа- дающие в списках атрибуты принадлежат общему списку, и выполнит
216 САМООБУЧАЮЩИЕСЯ СИСТЕМЫ все действия автоматически. После первой операции списки будут иметь вид: Список 1 (автомобиль) Список 2 (танк)Список 3 (общий) ПУШКА ЛЮК кузов Почему бы не разработать систему так, чтобы она сразу помещала атрибуты в правый спйсок, избегая дополнительных действий ? Но именно этим и отличается система, в которую уже заложены все знания, от системы, способной к обучению. В предложенном варианте система ведет себя как человек, а не как машина и должна сама разо- браться, куда поместить атрибуты. Теперь введем атрибуты автомобиля: ВВЕДИТЕ АТРИБУТЫ ЛЮБОГО ОБЪЕКТА И ВК В КОНЦЕ ВВЕДИТЕ АТРИБУТ 1 ? ДВЕРЦА ВВЕДИТЕ АТРИБУТ 2? КОЛЕСА ВВЕДИТЕ АТРИБУТ 3 ? КУЗОВ ВВЕДИТЕ АТРИБУТ 4 ? ВК Программа приступит к сравнению введенных атрибутов с атрибу- тами списка 1 (автомобиль). Результатом сравнения опять будет оцен- ка нуль, поскольку список 1 все еще пуст. Затем при сравнении со списком 2 программа обнаружит совпадение атрибутов КУЗОВ. Спи- сок атрибутов танка получит оценку 1. Программа предположит, что речь идет о танке, и запросит подтверждения у пользователя: ЭТО ТАНК? НЕТ Предположение опять оказалось ошибочным, и снова сработает механизм обратной связи. Система увидит, что атрибуты ДВЕРЦА, КОЛЕСА и КУЗОВ не относятся к танку, и поместит атрибут КУЗОВ (поскольку он уже есть в списке 2) в общий список, где еще ничего нет. Оставшиеся два атрибута будут занесены в список 1, описывающий автомобиль. После этого списки примут вид: Список 1 (автомобиль)Список 2 (танк) Список 3 (общий) ДВЕРЦЫ ПУШКА КУЗОВ КОЛЕСА ЛЮК Теперь, приступая к диалогу с пользователем, программа будет делать верные предположения, поскольку, получив от пользователя значения атрибутов и используя механизм обратной связи, система научилась различать автомобиль и танк. Еще раз кратко опишем ос- новные шаги обучения системы.
БОЛЕЕ СЛОЖНЫЕ МЕТОДЫ ПРЕДСТАВЛЕНИЯ ЗНАНИЙ В СИСТЕМАХ ИИ 217 1. Система вносит изменения только в том случае, если встречают- ся противоречия. Это обеспечивается с помощью механизма обратной связи. 2. Система сравнивает введенные атрибуты с атрибутами, храня- щимися в ней, пытаясь их идентифицировать и выбрать наиболее по- хожие. Для этого используются специальные оценки. Вся работа выполняется с помощью механизма логического вывода. Пример программы Рассмотрим пример программы, написанной на Бейсике, который иллюстрирует основные концепции этой главы. Пояснения к программе Для списков 1, 2 и 3 в программе (листинг 16.1) отведены массивы LI, L2 и LC соответственно. При инициализации в предложениях от 30 до 50 массивам присваиваются пустые значения. Имена объектов вво- дятся в предложениях 60 — 70. Атрибуты неизвестного объекта вводят- ся в предложениях 90 — 130. Самообучающаяся программа пытается идентифицировать объект по этим атрибутам в предложениях со 180 по 220. Идентификация выполняется с помощью некоторой оценки. Оценка получается из сравнения введенных атрибутов с атрибутами каждого объекта. Предполагается, что введенные пользователем атри- буты принадлежат объекту с наивысшей оценкой (предложение 240). При нулевой оценке выбирается объект 1. Если это предположение верно и в списке атрибутов объекта или общем списке введенных атри- бутов еще нет, то они заносятся в список объектов. Атрибуты удаляются из списков объектов и заносятся в общий список в предложениях 330- 410 для первого объекта и 780-860 для второго. Остальные операции для первого объекта выполняются в предложениях 420- 560, а для второго — в предложениях 920-990. Листинг программы Листинг 16.1 1 REM ♦♦♦***♦ САМООБУЧАЮЩАЯСЯ СИСТЕМА ♦♦♦♦♦*♦*♦♦ 2 REM ПРОГРАММА ВЫДВИГАЕТ ПРЕДПОЛОЖЕНИЕ ОБ ОБЪЕКТЕ 3 REM ИСХОДЯ ИЗ ВВЕДЕННЫХ АТРИБУТОВ 10 REM БЛОК ИНИЦИАЛИЗАЦИИ ДЛЯ 11 REM СПИСКА ОБЪЕКТА 1 (Ы$), 12 REM СПИСКА ОБЪЕКТА 2(L2$) И 13 REM ОБЩЕГО СПИСКА (LC$) 14 REM Т$ — ВРЕМЕННЫЙ БУФЕР ДЛЯ ЗНАЧЕНИЙ АТРИБУТА 20 DIM Ll$(10>,L2$(10>,LC$(10>,T$(l 1)
218 САМООБУЧАЮЩИЕСЯ СИСТЕМЫ 30 FOR 1-1 ТО 10 40 L1$(1)-”":L2$(I)-"":LC$(I)-"" 50 NEXT I 60 INPUT "ВВЕДИТЕ ИМЯ ОБЪЕКТА 1”;O1$ 70 INPUT "ВВЕДИТЕ ИМЯ ОБЪЕКТА 2";О2$ 80 PRINT'BBEflHTE АТРИБУТЫ ЛЮБОГО ОБЪЕКТА И ВК В КОНЦЕ" 90 FOR 1-1 ТО 11 :Т$ (I)-"”:NEXT I 95 FOR 1-1 ТО 11 100 PRINT "ВВЕДИТЕ АТРИБУТ ";1 110 INPUT Т$(1) 120 IF Т$ (I)-"" THEN GOTO 140 130 NEXT I 140 REM ЧИСЛО АТРИБУТОВ МЕНЬШЕ НА 1, ТАК КАК БЫЛ ВКЛЮЧЕН 0 150L-1-1 160 REM СРАВНЕНИЕ АТРИБУТОВ СО СПИСКАМИ ОБЪЕКТОВ 1 И 2 170 REM СНАЧАЛА УСТАНОВИТЬ ОЦЕНКУ ДЛЯ ОБЪЕКТОВ 1 И 2 В 0 180 Sl-0:S2-0 190 FOR 1-1 ТО L 195 FOR К-1 ТОЮ 200 IF O1$(K)-T$(I) THEN SI-S1+1 210 IF O2$(K)-T#(I) THEN S2-S2+1 215 NEXT К 220 NEXT I 230 REM ОБЪЕКТ 2 ПРЕДПОЛАГАЕТСЯ ТОЛЬКО, ЕСЛИ ОЦЕНКА 2 БОЛЬШЕ 231 REM ОЦЕНКИ 1 240IFS1 S2 THEN GOTO 700 250 PRINT "ЭТО ";О1$ 260 INPUT 'BEPHO ? ДА ИЛИ НЕТ";1$ 270 IF I$-”HET" THEN GOTO 780 290 REM ПОМЕСТИТЬ КАЖДЫЙ АТРИБУТ ВО ВРЕМЕННЫЙ БУФЕР, 300 REM А НЕ В СПИСОК ОБЪЕКТОВ 1 ИЛИ 2 ИЛИ ОБЩИЙ СПИСОК 310 REM ПЕРЕМЕСТИТЬ АТРИБУТ ИЗ СПИСКА 2 В ОБЩИЙ СПИСОК, 320 REM ЕСЛИ ЭТО НЕОБХОДИМО 330 FOR 1-1 ТО L 340 FOR К-1 ТО 10 350IFT$(I> 02$ (К) THEN GOTO 400 360 REM ПЕРЕМЕСТИТЬ АТРИБУТ ИЗ ВТОРОГО СПИСКА В ОБЩИЙ 370 FOR L-1 ТО 10 380IFLC$(L) ’"THEN GOTO 390 382 LC$(L)-O2$(K):O2$(K)-"":T$(I)-"” 390 NEXT L 400 NEXT К 410 NEXT I 420 FOR 1-1 TO L:REM УКАЗАТЕЛЬ НА ВРЕМЕННЫЙ БУФЕР 430 FOR K-l TO 10: REM УКАЗАТЕЛИ НА ОБЩИЙ СПИСОК И СПИСОК 431 REM ОБЪЕКТА 1 440 IF Т$ <I)—LC$ (К) THEN GOTO520: REM ЕСТЬ В ОБЩЕМ СПИСКЕ 450 IF T$(I)-O1$(K)-"":T$(I)-"": REM ЕСТЬ В СПИСКЕ ОБЪЕКТА 1 460 NEXT К 470 REM ПОМЕСТИТЬ ПЕРЕМЕННУЮ В СПИСОК 1 480 REM ПОИСК СВОБОДНОГО МЕСТА ПОД ПЕРЕМЕННУЮ 490 FOR К-1 ТО 10 495 IF T$(I)-"” THEN GOTO 510
БОЛЕЕ СЛОЖНЫЕ МЕТОДЫ ПРЕДСТАВЛЕНИЯ ЗНАНИЙ В СИСТЕМАХ ИИ 219 500 IF О1$(К)-"" THEN O1$(K)-T$(I):GOTO 520 510 NEXT К 520 NEXT I: REM СЛЕДУЮЩИЙ АТРИБУТ 530 REM ПЕЧАТЬ ВСЕХ СПИСКОВ 540 GOSUB 2000 550 REM СЛЕДУЮЩИЕ АТРИБУТЫ 560 GOTO 80 700 PRINT "ЭТО ”;О2$ 710 INPUT'BEPHO ДА ИЛИ НЕТ";1$ 720 IF I$-"HET" THEN GOTO 330 740 REM ПОМЕСТИТЬ КАЖДЫЙ АТРИБУТ ВРЕМЕННОГО БУФЕРА, КОТОРО- ГО 750 REM НЕТ В ОБЩЕМ СПИСКЕ И В СПИСКЕ ОБЪЕКТА 2, В СПИСОК 2 760 REM ПЕРЕМЕСТИТЬ СОВПАДАЮЩИЕ АТРИБУТЫ ИЗ СПИСКА 1 770 REM В ОБЩИЙ СПИСОК 780 FOR 1-1 ТО L 790 FOR К-1 ТО 10 800 IFT$(I) О1$(К) THEN GOTO 850 810 REM ПЕРЕМЕСТИТЬ АТРИБУТ ИЗ СПИСКА 1 В ОБЩИЙ СПИСОК 820 FOR L-1 ТО 10 830 IF LC$(L) "" THEN GOTO 840 832 LC$(L)-O1$(K):O1$(K)-"":T$(I)-"" 840 NEXTL 850 NEXT К 860 NEXT I 870 FOR 1-1 TO L: REM УКАЗАТЕЛЬ НА ВРЕМЕННЫЙ БУФЕР 880 FOR K-l TO 10: REM УКАЗАТЕЛЬ НА ОБЩИЙ СПИСОК И СПИСОК 2 890 IF Т$ (I)-LC$ (К) THEN GOTO 970:REM ЕСТЬ В ОБЩЕМ СПИСКЕ 900 IF T$(I)-O2$(K) THEN GOTO 970:REM ЕСТЬ В СПИСКЕ 2 910 NEXT К 920 REM ПОМЕСТИТЬ ПЕРЕМЕННУЮ В СПИСОК 2 930 REM ПОИСК СВОБОДНОГО МЕСТА ДЛЯ ПЕРЕМЕННОЙ 940 FOR К-1 ТО 10 945 IF Т$ (I)-"” THEN GOTO 960 950 IF 02$(К)-”" THEN O2$(K)-T$(I):GOTO 970 960 NEXT К 970 NEXT I:REM ОБЩИЙ АТРИБУТ 980 REM ОБЩАЯ ПЕЧАТЬ 990 GOSUB 2000 1000 REM СЛЕДУЮЩИЙ АТРИБУТ 1010 GOTO 80 2000 REM ПЕЧАТЬ ВСЕХ СПИСКОВ 2010 PRINT 01 $,О2$,"ОБЩИЙ СПИСОК" 2020 FOR 1-1 ТО 10 2030 PRINT 01 $(I) ,02$ (I) ,LC$ (I) 2040 NEXT I 2050 RETURN Пример работы программы RUN ВВЕДИТЕ ИМЯ ОБЪЕКТА 1 ? АВТОМОБИЛЬ
220 САМООБУЧАЮЩИЕСЯ СИСТЕМЫ ВВЕДИТЕ ИМЯ ОБЪЕКТА 2 ? ТАНК ВВЕДИТЕ АТРИБУТЫ ЛЮБОГО ОБЪЕКТА И ВК В КОНЦЕ ВВЕДИТЕ АТРИБУТ 1 ? ПУШКА ВВЕДИТЕ АТРИБУТ 2 ? ЛЮК ВВЕДИТЕ АТРИБУТ 3 ? КУЗОВ ЭТО АВТОМОБИЛЬ ВЕРНО ДА ИЛИ НЕТ ? НЕТ АВТОМОБИЛЬ ТАНК ОБЩИЙ СПИСОК ПУШКА ЛЮК КУЗОВ ВВЕДИТЕ АТРИБУТЫ ЛЮБОГО ОБЪЕКТА И ВК В КОНЦЕ ВВЕДИТЕ АТРИБУТ 1 ? КУЗОВ ВВЕДИТЕ АТРИБУТ 2 ? КОЛЕСА ВВЕДИТЕ АТРИБУТ 3 ? ДВЕРЦЫ ЭТО ТАНК ВЕРНО ДА ИЛИ НЕТ ? НЕТ АВТОМОБИЛЬ ТАНК ОБЩИЙ СПИСОК КОЛЕСА ПУШКА КУЗОВ ДВЕРЦЫ ЛЮК ВВЕДИТЕ АТРИБУТЫ ЛЮБОГО ОБЪЕКТА И ВК В КОНЦЕ ВВЕДИТЕ АТРИБУТ 1 ? КУЗОВ ВВЕДИТЕ АТРИБУТ 2 ? ДВЕРЦЫ ВВЕДИТЕ АТРИБУТ 3 ? ВК ЭТО АВТОМОБИЛЬ ВЕРНО ДА ИЛИ НЕТ ? ДА АВТОМОБИЛЬ ТАНК ОБЩИЙ СПИСОК КОЛЕСА ПУШКА КУЗОВ ДВЕРЦЫ ЛЮК
6 ЯЗЫКИ ПРОГРАММИРОВАНИЯ ЗАДАЧ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА • Краткое введение в языки программирования PROLOG и LISP ГЛАВА 17 ЯЗЫК PROLOG PROLOG — это язык программирования, созданный специально для работы с базами знаний, основанными на фактах и правилах. Название языка представляет собой сокращение английского словосо- четания Programming in Logic — логическое программирование. В язы- ке PROLOG реализован механизм возврата для выполнения обратной цепочки рассуждений. Как упоминалось ранее, обратная цепочка рас- суждений — это способ рассуждения, при котором предполагается, что некоторые выводы или заключения истинны, а затем эти предположе- ния проверяются в базе знаний, содержащей правила и факты. Если предположение не подтверждается, выполняется возврат, и выдвигает- ся новое предположение. Концептуальный пример Для пояснения основных концепций языка PROLOG рассмотрим задачу, решение которой выполним с помощью обратной цепочки рас- суждений. Пусть задано правило: ЕСЛИ мужчина по имени X со своей матерью по имени М находятся в комнате, И женщина по имени Y со своей матерью по имени М находятся в комнате, ТО мужчина по имени X и женщина по имени Y — брат и сестра Это правило содержит ряд условий, позволяющих определить, дей- ствительно ли в комнате находятся брат и сестра. Для решения такой задачи понадобятся некоторые факты. Пусть эти факты представлены в виде двух списков: списка имен всех находящихся в комнате мужчин и их матерей, и списка имен всех находящихся в комнате женщин и их матерей. Воспользовавшись этими списками, можно определить муж- чин и женщин имеющих одну и ту же мать, а исходя из приведенного правила сделать вывод об их родстве. Рассмотрим задачу подробнее.
222 ЯЗЫК PROLOG Сведем известные факты в таблицы. Таблица 1 Таблица 2 Имена мужчин Имена их матерей Имена женщин Имена их матерей Дэниел Диана Энн Лори Ларри Лори Лаура Ширли Майкл Бонни Сьюзи Бонни Пит Джейн Просмотрев таблицы, можно предположить, что братом и сестрой могут быть: Ларри и Энн (мать обоих носит имя Лори) и Майкл и Сьюзи (мать обоих носит имя Бонни). Попробуем представить логику работы программы. Прежде всего предположим, что часть правила, идущая за словом ТО, верна и действительно существуют мужчина X и женщина Y, приходящиеся друг другу братом и сестрой. Выполним обратную це- почку рассуждений исходя из истинности такого заключения. Подтвер- дить истинность заключения можно, доказав истинность каждого из условий, входящих в правило. Первое условие гласит: «Мужчина по имени X со своей матерью по имени М находятся в комнате». Сначала попытаемся отыскать имена для мужчины X и его матери М в табл.1. Это легко сделать, выбрав первую же строчку, т.е. X присвоим значе- ние «Дэниел», а М — значение «Диана»: Мужчина по имени Дэниел со своей матерью по имени Диана находятся в комнате. Таблица 1 Таблица 2 Имена мужчин Имена их матерей Имена женщин Имена их матерей Дэниел Диана Энн Лори Лаура Ширли Сьюзи Бонни Теперь нужно попытаться доказать истинность второго условия правила: «Женщина по имени Y со своей матерью по имени М находят- ся в комнате». Но значение М уже выбрано — Диана, и, следовательно, нужно найти в табл. 2 имя женщины, чью мать зовут Диана. Но имени Диана нет в правой половине табл. 2. Значит, нужно вернуться назад и для первого условия правила отыскать в табл. 1 другие значения для X и М. Выберем следующую строку с именами Ларри и Лори: X - Ларри М “Лори
ЯЗЫКИ ПРОГРАММИРОВАНИЯ ЗАДАЧ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА 223 Таблица 1 Таблица 2 Имена мужчин Имена их матерей Имена женщин Имена их матерей Дэниел Диана Энн Лори Ларри Лори Лаура Ширли Сьюзи Бонни Теперь для подтверждения второго условия правила в табл. 2 нуж- но найти имя женщины, мать которой носит имя Лори. Из табл. 2 видно, что это Энн: Y-Энн Обратившись к части ТО правила, можно заключить, что Ларри и Энн брат и сестра. Подытожим выполненные действия. 1. В качестве заключения мы взяли часть ТО правила, попытались подтвердить его истинность на основании истинности входящих в пра- вило условий. 2. Подтверждение истинности первого условия. 3. Истинность первого условия определяется значением входящих в него переменных, которые выбираются из первой таблицы. 4. Подтверждение истинности второго условия. 5. Сделать это не удалось, так как во второй таблице не оказалось подходящих данных. 6. Пришлось вернуться назад и попытаться добиться истинности первого условия, а затем и второго с новыми значениями входящих в них переменных. 7. С новыми значениями переменных X и Y последняя цель была успешно достигнута. 8. Заключение в части ТО правила оказалось истинным при новых выбранных значениях переменных. Представление правил в языке PROLOG Выше была продемонстрирована логика работы программы на язы- ке PROLOG. Программа автоматически выполняет поиск информации и обратную цепочку рассуждений, используя механизм возврата. Для работы программы необходимо преобразовать формат правил, входя- щих в базу знаний, в формат, принятый в языке PROLOG. Между этими форматами существует взаимооднозначное соответствие. Вновь обращаемся к примеру, рассмотренному в гл. 6:
224 ЯЗЫК PROLOG ЕСЛИ DEGREE - НЕТ, ТО POSITION - НЕТ То же самое правило на языке PROLOG записывается следующим образом: position(HeT):-write(’DEGREE’). read(DEGREE), DEGREE-нет. Операторы read и write служат для обмена данными через терми- нал пользователя. По оператору write (’DEGREE’) на терминал будет выведено слово DEGREE, после чего пользователь может ввести зна- чение переменной DEGREE. Это значение будет введено в переменную по оператору read. Если пользователь введет слово «нет», последняя часть выражения DEGREE = нет будет иметь значение «истина». На этом же примере рассмотрим синтаксис и некоторые свойства языка PROLOG. 1. Полная запись правила на языке PROLOG: position (нет) :- write (’DEGREE’), read (DEGREE), DEGREE = нет. называется пред- ложением. В языке существует два типа предложений: для записи правил и для записи фактов (предложения для записи фактов будут рассмотрены позднее). Приведенное выше предложение — это предло- жение для записи правил. 2. Часть предложения языка, соответствующая части ТО правила, записывается слева от знака «:-» и называется заголовком правила: position (нет) :- 3. Часть ЕСЛИ правила в предложении языка записывается справа от знака «:-»: :-write(’DEGREE’), read(DEGREE), DEGREE = нет. и называется телом предложения. 4. Тело предложения состоит из отдельных частей, разделенных запятыми. Каждая часть в теле предложения называется целью. Запя- тая, разделяющая цели в предложении, имеет смысл логического И. Тело приведенного выше предложения может быть прочитано следую- щим образом: write(’DEGREE’) И read (DEGREE) И DEGREE - нет Здесь каждая строка — это цель. 5. Все предложения языка PROLOG заканчиваются точкой. 6. Слова, находящиеся до открывающейся левой скобки, т.е. слова position, write и read, называются предикатами. Предикаты всегда на- чинаются со строчной буквы. 7. Слова, взятые в круглые скобки и идущие следом за именем предиката, называются аргументами. Для предиката position аргумен-
ЯЗЫКИ ПРОГРАММИРОВАНИЯ ЗАДАЧ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА 225 том является слово «нет». Аргументы могут быть представлены и зна- чениями, и переменными. Аргумент, заданный значением, должен начинаться со строчной буквы, а аргумент, заданный переменной, — с заглавной буквы. 8. Символы «:-» в языке имеют смысл логического ЕСЛИ. Напри- мер, предложение qualify (да) :-degree (да) можно прочесть как «qualify имеет значение "да", ЕСЛИ degree имеет значение "да"». Вернемся к правилам, рассмотренным в гл.6 в примере о приеме на работу, и переведем их в формат языка PROLOG. Напомним эти пра- вила: 10 ЕСЛИ DEGREE - НЕТ, ТО POSITION-НЕТ 20 ЕСЛИ DEGREE - ДА, ТО QUALIFY-ДА 30 ЕСЛИ DEGREE - ДА И DISCOVERY - ДА, ТО POSITION - НАУЧНЫЙ СОТРУДНИК 40 ЕСЛИ QUALIFY - ДА И AVERAGE 3.5 И EXPERIENCE 2, ТО POSITION-ИНЖЕНЕР ПО ЭКСПЛУАТАЦИИ 50 ЕСЛИ QUALIFY - ДА И AVERAGE 3.5 И EXPERIENCE 2, ТО POSITION-НЕТ 60 ЕСЛИ QUALIFY - ДА И AVERAGE - 3.5 И EXPERIENCE 2, ТО POSITION-ИНЖЕНЕР-КОНСТРУКТОР Запись этих же правил на языке PROLOG будет выглядеть так: /* 10 */position(HeT):-write(’DEGREE’), read(DEGREE),DEGREE-HeT. /* 20 */qualifyfaa):-write('DEGREE'), read(DEGREE), DEGREE -да /* 30 */ ро8Шоп(научный сотрудник):-и/г1ге('РЕСРЕЕ'), read(DEGREE), DEGREE - да, write('DISCOVERY’), read(DISCOVERY), DISCOVERY-да. /* 40 */ ро8К1оп(инженер по эксплуатации):-диа1Иу(да), writef AVERAGE'), read(AVERAGE), AVERAGE <3.5, write('EXPERIENCE'),read(EXPERIENCE), EXPERIENCED. /* 50 */ positlon(HeT):-qualifyOia), write('AVERAGE'), read(AVERAGE), AVERAGE <3.5, write('EXPERIENCE'), read(EXPERIENCE), EXPERIENCE 2.0. /* 60 */ position(nHxeHep-KOHCTpyKTop):-qualify(fla), rite('AVERAGE'), read(AVERAGE), AVERAGE >-3.5. Для удобства в этой записи сохранена нумерация правил. Номера заключены в пары символов «/*» и «*/» — так в языке PROLOG записываются комментарии. Комментарии служат только для поясне- ния предложений языка. Еще раз рассмотрим уже известное правило:
226 ЯЗЫК PROLOG ЕСЛИ мужчина по имени X со своей матерью по имени М находятся в комнате, И женщина по имени Y со своей матерью по имени М находятся в комнате, ТО мужчина по имени X и женщина по имени Y брат и сестра Используя это правило и факты, собранные в табл.1, напишем программу на языке PROLOG, т.е. в сущности создадим базу знаний: /* 1 */ brother-sisterfX, Y, М):- maile(X.M), female(Y,M). /* 2 */ та1е(дэниел,диана) /* 3 */ та1е(ларри,лори) /* 4 */ та1е(майкл,бонни) /* 5 */ та1е(пит,джейн) /* 6 */ Гета1е(энн,лори) /* 7 */ Гета1е(лаура,ширли) /* 8 */ Тета1е(сьюзи,бонни) В предикате brother-sister аргументы X, Y, М могут принимать значения имен предполагаемых брата и сестры и их матери соответст- венно. Предикат male эквивалентен утверждению «X — это имя муж- чины, мать которого носит имя М», а предикат female — утверждению «У — это имя женщины, мать которой носит имя М». Введя эту про- грамму в компьютер, пользователь может приступить к диалогу с ней. PROLOG выдает на терминал символ приглашения к работе «?», после которого пользователь может ввести: ?-brother-sister(X, Y, М) Программа попытается подобрать значения для аргументов преди- ката male (Х,М), т.е. имена мужчины и его матери. Первый же преди- кат male в базе знаний окажется подходящим, и программа выберет факт /♦ 2 ♦/ male(дэниел,диана). Присвоив X значение «Дэниел», а М значение «Диана», программа попытается присвоить аргументам пре- диката female(Y,M) такие значения, при которых он истинен. Посколь- ку М уже имеет значение «Диана», программа будет просматривать перечень фактов в поисках предиката female (Y,диана). Предикат female содержится в фактах /♦ 6 */ — /* 8 */, но значения «Диана» в них нет, и, значит, обеспечить истинность female(Y,диана) невозмож- но. Следовательно, PROLOG воспользуется механизмом возврата. Пе- ременные X и М будут «деинициализированы», и программа приступит к поиску новых значений для этих переменных. В соответствии с фак- том /* 3 */ male(ларри,лори) переменной X будет присвоено значение «Ларри», а переменной М — «Лори». PROLOG вновь будет пытаться обеспечить истинность выражения female(Y,лори). Просматривая факты, программа дойдет до факта /* 6 */ female(энн,лори), который удовлетворяет нужным требованиям. Переменной Y будет присвоено значение «Энн», и программа напечатает:
ЯЗЫКИ ПРОГРАММИРОВАНИЯ ЗАДАЧ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА 227 ?-Х - Ларри Y-Энн М - Лори Таким образом, будет установлено родство Энн и Ларри, поскольку у них одна и та же мать, носящая имя Лори. Резюме В этой главе дано краткое введение в язык PROLOG и приведены два важнейших его свойства — обратная цепочка рассуждений и меха- низм возврата. ГЛАВА 18 ЯЗЫК LISP Введение в LISP LISP — это широко используемый в задачах искусственного интел- лекта язык программирования. Название языка представляет собой сокращение английского словосочетания LISt Processing — обработка списков. Одно из важнейших свойств языка — простота работы со списками. Список может состоять из слов некоторого предложения, имен рабочих на предприятии или любых других слов, идущих в про- извольном порядке. В любое время можно обратиться к отдельным частям списка и выполнить с ними различные операции. В этой главе приведены только основные свойства языка с тем, чтобы заинтересо- вать читателя и стимулировать его дальнейшую самостоятельную ра- боту. Вычисление функций LISP основан на вычислении функций. Функции в языке записы- ваются в префиксной форме, т.е. сначала записывается операция, за- тем ее операнды и вся конструкция заключается в круглые скобки. Например, функция сложения двух чисел на языке LISP записывается следующим образом: (+42) Результатом вычисления этой функции будет число 6. Согласно пре-
228 ЯЗЫК LISP фиксному формату сначала нужно написать + , а затем аргументы. Операцию вычитания можно записать так: (-52) Если ввести эту запись во время диалога с LISP-системой, она автоматически вернет число 3. Пользователь может ввести более слож- ный пример: (+(-52)4) a LISP вернет: 7 В языке LISP прежде всего вычисляется функция, заключенная во внутренние скобки: (-5 2) и система заменит выражение во внутренних скобках на результат вычисления — 3: (+34) после чего будет получен окончательный результат: -7. Умножение и выбор максимального значения пользователь может задать, введя следующие выражения: (* 5 4) система вернет: 20 и (МАХ 5 9 2) система вернет: 9 Нужно твердо запомнить, что: 1) функции записываются в префиксной форме; 2) функции заключаются в круглые скобки.
ЯЗЫКИ ПРОГРАММИРОВАНИЯ ЗАДАЧ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА 229 Списки Список — это некоторый набор элементов. Элементы списка назы- ваются членами списка. Читатель, например, может составить список людей, которые занимали у него деньги. Этот список может состоять из имен: ’( БОБ ТОМ МЭЙ СЬЮ) Отметим, что подобно функциям, список заключается в круглые скобки. Другой пример списка — перечень предметов, лежащих на рабочем столе: ’( КАРАНДАШ РУЧКА-ЧАСЫ БУМАГА СКРЕПКИ ) Пробелы в именах членов списка недопустимы, поскольку они служат для разделения членов в списке. Имя РУЧКА-ЧАСЫ относится к одному члену списка, а дефис служит в нем для соединения слов РУЧКА и ЧАСЫ в единое целое. Можно создать список, членами которого будут числа. Они могут означать, например, количество людей, работающих в каждом отделе предприятия: ’(20 10 30) Можно создать список, членами которого в свою очередь являются тоже списки. Такой список может, например, содержать имена знако- мых читателю людей, живущих в трех различных городах: ’((БОБ ЛОРИ ДЖЕЙН) (ТОМ ГАРРИ) (ДЖОН ДЭВИД)) Отметим, что каждый из трех внутренних списков заключен в круглые скобки. Весь список также заключен в круглые скобки. Чита- тель, наверное, уже заметил, что в приведенных примерах перед каж- дым списком стоит символ одинарной кавычки «’». Посмотрим, какова ее роль. Предположим, есть список: ’(GOTO YOUR HOME) Если бы перед открывающейся скобкой не было кавычки, список имел бы вид функции, как было описано выше. Функции в языке LISP записываются в префиксной форме (сразу за скобкой идет имя функ- ции) , поэтому без кавычки словосочетание GOTO интерпретировалось бы как имя функции. Именно кавычка «говорит» языку LISP, что далее идет список, a GOTO — не имя функции, а просто член списка. Встроенные функции обработки списков С помощью встроенных функций обработки списков выполняются стандартные операции. Наиболее важные из этих функций — CAR, CDR, CONS и APPEND. Функция CAR выбирает из списка первый член. Введя
230 ЯЗЫК LISP (CAR ’(А В С)) пользователь получит в ответ: А В следующем примере первым элементом списка также является список (12), поэтому результатом работы предложения (CAR ’(1 2) А В) будет: (1 2) Функция CDR удаляет из списка первый элемент и возвращает оставшуюся часть списка. Результатом выполнения предложения (CDR ’(А В С)) будет список без первого элемента: (В С) А результатом выполнения предложения (CDR ’((А В) (С D))) будет список, состоящий из одного члена: ((с D)) Функция CONS добавляет новый член в начало списка. Если поль- зователь введет (CONS ’К ‘(J К L)) LISP вернет список: (К J К L) А после ввода предложения: (CONS ’(А В) ’(J К L)) пользователь получит список: ((A B)(J К L))
ЯЗЫКИ ПРОГРАММИРОВАНИЯ ЗАДАЧ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА 231 Функция APPEND объединяет два списка в один, например: (APPEND ’(А В) ’(J К L)) даст в результате: (А В J К L) В языке LISP гораздо больше встроенных функций, но здесь мы их не будем обсуждать, поскольку цель этой главы — дать только общее представление о языке. Предикаты или функции проверки условий Напомним, что условная часть правила ЕСЛИ-TO может иметь значение «истина» или «ложь». Если она имеет значение «истина», вызывается часть ТО правила, если «ложь» — часть ТО правила игно- рируется. В языке LISP есть ряд функций, выполняющих проверку условий и возвращающих значение «ложь» или «истина», но в языке они обозначаются NIL и Т соответственно. Функции, которые прове- ряют условие и возвращают NIL или Т, называются предикатами. Познакомимся с некоторыми предикатами. Предикат EQUAL воз- вращает значение Т, если все его аргументы одинаковы. Например: (EQUAL 8 8) даст в результате: т a (EQUAL 3 2) даст в результате: NIL Если пользователь введет: (EQUAL ’(1 2 А) ’(1 2 А)) LISP вернет: т
232 ЯЗЫК LISP Символ > обозначает предикат, осуществляющий последователь- ную проверку аргументов слева направо, на следующее условие: «Предыдущий больше последующего». Например: (>5 2 1) будет иметь значение: т а (> 1 2 з) будет иметь значение: NIL В более сложном примере: (>54(+12)) LISP-система сначала вычислит внутреннюю функцию, в результате чего получится: (>5 4 3) а затем вернет значение: т Присваивание значений переменным Ниже рассматривается инициализация переменных в языке LISP. Значение переменной может быть присвоено с помощью следующего предложения: (SETQ X Y) В результате выполнения этого предложения переменной X будет присвоено значение Y. Например, если пользователь введет: (SETQX25) LISP вернет: 25 т.е. X будет присвоено значение 25. Еще пример:
ЯЗЫКИ ПРОГРАММИРОВАНИЯ ЗАДАЧ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА 233 (SETQ X ’(А В С)) В результате выполнения этого предложения переменной X будет при- своено значение, представляющее собой список (АВС). Представление правил с помощью условной функции Условная функция (COND) позволяет проверить совокупность ус- ловий и в случае их истинности (Т) выполнить некоторые действия. В работе этой функции видна тесная аналогия с работой правил ЕСЛИ- ТО. Рассмотрим пример: (COND ((EQUAL 5 2 (SETQ X 5))) Условной частью или частью ЕСЛИ в предложении COND служит выражение (EQUAL 5 2), а частью ТО — выражение (SETQ X 5). Поскольку в приведенном примере (EQUAL 5 2) вернет значение NIL, часть ТО вызвана не будет, т.е. переменной X не будет присвоено значение. Изменим пример: (COND ((EQUAL 3 3 (SETQ X 5))) В этом случае (EQUAL 3 3) вернет значение Т, и, значит, будет выпол- нено предложение (SETQ X 5). Рассмотрим два предложения COND: (COND ((EQUAL Y 3) (SETQ X 5))) (COND ((GREATERP 4 Z) (SETQ P 3))) Первое предложение можно прочесть так: ЕСЛИ Y имеет значение 3, ТО присвоить X значение 5. Второе предложение говорит следую- щее: ЕСЛИ 4 больше Z, ТО присвоить Р значение 3. В этих примерах предложение COND состояло из двух частей, ЕСЛИ и ТО, т.е. (COND(( часть ЕСЛИ ) (часть ТО))) В общем случае функция COND может включать несколько частей ЕСЛИ и ТО. Создание новых функций Новые функции определяются в языке LISP функцией DEFUN. Например, предложение (DEFUN ADD-DIF(X YZ)
234 ЯЗЫК LISP (+ Z( X ¥))) определяет новую функцию с именем ADD-DIF. Элементы, идущие в скобках за именем функции, — ее аргументы. Таким образом, аргу- ментами функции ADD-DIF будут переменные X,Y и Z. Аргументы используются при вычислении функции. Сами вычисления задаются после аргументов. В нашем примере вычисления заданы выражением (+Z(-XY)) Подобная запись уже знакома читателю, она применялась выше. Прежде всего из X вычитается Y, а затем полученное значение скла- дывается со значением Z. Если вновь определенную функцию вызвать с аргументами 4,5,6: (ADD-DEF5 4 6) результатом ее работы будет число 7. Прежде всего функция присвоит пременной X значение 5, Y — значение 4, a Z — значение 6. Затем из 5 вычтет 4, а результат 1 сложит с 6. В конечном счете функция вернет значение 7. Прежде чем продолжить, приведем пример работы функ- ции PRINT. Выполняя предложение: (PRINT'EXAMPLE) LISP-система напечатает две строки: EXAMPLE EXAMPLE Здесь нет необходимости заострять внимание на том, почему выво- дятся именно две строки. Рассмотрим следующую новую функцию: (DEFUN IF-THEN (X) (COND ((EQUAL X 3) (PRINT ’EXAMPLE)))) В результате работы этой функции функция PRINT будет вызвана только в том случае, если X имеет значение 3, т.е. если ввести (IF-THEN (3)) LISP напечатает: EXAMPLE EXAMPLE Но если ввести
ЯЗЫКИ ПРОГРАММИРОВАНИЯ ЗАДАЧ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА 235 (IF-THEN (4)) LISP вернет значение NIL. Это происходит потому, что в условной части предложения COND задано (EQUAL X 3). Если результатом выполнения условной части будет Т, вызывается часть ТО вновь определенной функции (PRINT ’EXAMPLE). При первом обращении к функции (IF-THEN (3)) первая часть COND имела вид (EQUAL 3 3) и вернула значение Т. Следова- тельно, COND вызвала функцию PRINT. При втором обращении (IF- THEN (4)) первая часть COND имела вид (EQLTAL 4 3) и вернула значение NIL. Резюме Наиболее важные концепции этой главы. 1. Концепция функций и значение скобок при их определении. 2. Концепция списков. Читателю рекомендуется интенсивно поработать с функциями и списками на языке LISP на компьютере.
БИБЛИОГРАФИЯ Книги Barr, A., and E.A.Feigenbaum: The Handbook of Artificial Intelligence. Volumes I and II. HeuristTech Press and William Kaufman, Inc., Los Altos, CA, 1981. Cohn, P.R. and E.A.Feigenbaum: The Handbook of Artificial Intelligence. Volumes III. HeuristTech Press and William Kaufman, Inc., Los Altos, CA, 1981. Clocksin, W.F. and C.S. Mellish: Programming in PRO LOG. Springer-Velarg, New York, Inc., 1984. Graham, Neil: Artificial Intelligence - Making Machines "Think”. TAB Books Inc., Blue Ridge Summit, PA, 1979. Hayes-Roth, F., D.A. Waterman, and D.B. Lenat: Building Expert Systems. Addison- Wesley Publishing Co Inc., Reading, MA, 1983. Lipschutz, S * Finite Mathematics. McGraw-Hill Book Company, New York, 1966. Naylor, Chris: Build Your Own Expert System. Halstes Press, a Division of John Willey and Sons Inc. New York, 1983. Negoita, C.N.: Expert Systems and Fuzzy Systems. The Benjamin/Cammings Publishing Co., Menlo Park, CA, 1985. Winston, P.H. and B.K.P Hom: LISP. Addison-Wesley Publishing Co. Inc., Reading, MA, 1981. Статьи Нечеткая логика Zadeh, L.A. "Making Computer Think Like People”. IEEE SPECTRUM vol.21, no. 8, August 1984, pp. 26-32. Искусственный интеллект Hayes-Roth, F.: "The Knowledge-Based Expert System: A Tutorial". IEEE COMPUTER, vol. 17, no. 9, September 1984, pp. 11-28. Представление знаний (семантические сети, PROLOG и т.д.) IEEE COMPUTER, vol. 16, no. 10, October 1983 Объектноориентированное программирование Сох, В.J.: ”Message/Object Programming: An Evolution Change in Programming Technology". IEEE SOFTWARE, vol. 1, no. 1, January 1984, pp. 51-61. Muge, T.N.: "Object Based Computing and the Ada Language", IEEE COMPUTER, vol. 18, no. 3, March 1985, pp. 11-19. Проблемные области Финансовое планирование Casey, Douglas: Crisis Investing, Pocket Books, Simon & Schuster Publishing Co., New York, 1979.
237 БИБЛИОГРАФИЯ Huang, Stanley: Investment Analysis and Management. Little, Brown & Co., Boston, 1981. Weinstein, Grace W.: The lifetime Book, of Money Management. The New American Library, Inc., New York, 1983 Торговля Buzzotte, V.R., Lefton, and M. Sherberg: Effective Selling through Psychology. Psyhological Associates, 1981. Haas, Kenneth and J.W. Ernest: Creative Salesmanship, Understanding Essentials. Glencoe Publishing Co., Inc. Encino, CA, 1974. Образование Brutten, Milton, Silvia Richardson, and Charles Mangel: Somethings Wrong with My Child. Harcourt Brace Jovanovich, New York, 1973. DeHirsch, Katrina: "Learning Disabilities: An Overview". Bulletin, N.Y. Academy of Medicine, vol. 50, no. 4, April 1974. Green, L.J.: Kids Who Hate School; A Survival Handbook on Learning Disabilities. Humanic Press, Atlanta, GA, 1984 Machalaba, Danielle, ’’Hidden Handicap; For Americans Unable to Read Well, Life Is a Series of Small Crises”. Wall Street Jornal, Tuesday, January 17, 1984. Sanders, Marion: Clinical Assesment of Learning Problems, Allyon & Bacon, Inc., Newton, MA, 1978.
ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ Аргумент 225 Алгоритм 48, 61 Аналоговое представление 182 Атрибут 157,161,164,195, 199, 201, 215 База данных 162 База знаний 19, 36, 43, 112, 196, 202, 210 Вероятность 96-97 Весовой фактор 19-20, 25, 127, 129, 131, 143 Возрастная группа 114-115 Двоичная система 183 Дерево решений 61, 117, 196, 201 вершина 65, 67, 119 путь 64,66,119 Имя структуры 161 Искусственный интеллект (ИИ) 9-10, 29 Коэффициент уверенности 208-209 Лексический анализ 29 Логический вывод 61,73, 75, 196, 209 Методы ИИ 9-10, 20 Механизм возврата 223, 226 Механизм вывода 14-15,21, 112, 114, 146,217 Механизм упрощения 13, 12, 23 Нечеткая логика 208 Обратная связь 213 Обратная цепочка рассуждений 22, 60, 67,84, 121,200, 221,223 Объект 158, 162, 199, 201,214 Объектно-ориентированное программирование 157-158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180 Очередь переменных логического вывода 39, 41,47 Правило ЕСЛИ-TO 11-12, 15, 35-36, 66, 112, 122, 147,203, 221 констатирующая часть 67 условная часть 34, 39, 70 Предикат 226, 232 Предметная область 112-113 Переменная условия 211 Процедура 159-160, 165 Прямая цепочка рассуждений 21, 34-35, 200 Семантическая сеть 201, 203 отношения 201 узел 201 Самообучающиеся системы 213-214, 216,218, 220 Семантический анализ 29 Синтаксический анализ 29 Система реального времени 187 Слот 157, 165 Список 227 Список логических выводов 68-69, 80, 84 Список переменных 40, 43, 69 Список переменных условия 37, 39, 72, 77 Стек логических выводов 72, 84 Структура 157, 160, 166, 185, 201 Указатель переменных условия 43 Указатель списка переменных условия 40 Уровень решения 146, 152 Упрощение 12-13, 26, 112 Условная вероятность 97-98, 102 Факт 11-12, 14-15, 17, 112, 126, 142, 213 Функция 199, 227, 233 Цель 14-17, 22, 223 Эвристические правила 95, 208 Экспертная система 25, 27, 33, 61, 112-113, 115, 117, 119, 121, 123, 125, 134 анализа обучения 140-141, 143, 145,147,149, 151, 153, 155 в торговле 124-125, 127, 129, 131, 133,135, 137, 139 объектно-ориентированный подход 182, 195 система финансового планирования 112 фондовой биржи 35
СОДЕРЖАНИЕ 1 .ЧЕЛОВЕЧЕСКИЙ И МАШИННЫЙ ИНТЕЛЛЕКТ 9 ГЛАВА 1. ПРЕДИСЛОВИЕ 9 ГЛАВА 2. ВВЕДЕНИЕ В СИСТЕМЫ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА 15 ГЛАВА 3. РАЗРАБОТКА СИСГЕМ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА 24 ГЛАВА 4. ОБЩИЕ СВЕДЕНИЯ ОБ ЭКСПЕРТНЫХ СИСТЕМАХ 28 2 .МЕХАНИЗМ ВЫВОДА: СРЕДСТВО МАШИННОГО МЫШЛЕНИЯ 33 ГЛАВА 5. ПРЯМАЯ ЦЕПОЧКА РАССУЖДЕНИЙ 33 ГЛАВА 6. ОБРАТНАЯ ЦЕПОЧКА РАССУЖДЕНИЙ 59 ГЛАВА 7. ВЕРОЯТНОСТЬ И НЕЧЕТКАЯ ЛОГИКА В ЭКСПЕРТНЫХ СИСТЕМАХ 95 З .ЭКСПЕРТНЫЕ СИСТЕМЫ: ЗНАНИЯ ПЛЮС ЛОГИЧЕСКИЙ ВЫВОД 112 ГЛАВА 8. ЭКСПЕРТНАЯ СИСТЕМА ФИНАНСОВОГО ПЛАНИРОВАНИЯ 112 ГЛАВА 9. ЭКСПЕРТНАЯ СИСТЕМА В ОБЛАСТИ ТОРГОВЛИ 124 ГЛАВА 10. ЭКСПЕРТНЫЕ СИСТЕМЫ АНАЛИЗА ОБУЧЕНИЯ 140 4 .СОЗДАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ РАЗВИТЫХ СИСТЕМ ИИ 157 ГЛАВА 11. ОСНОВЫ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ 157 ГЛАВА 12. ПРИМЕНЕНИЕ ОБЪЕКТНО-ОРИЕНТИРОВАННЫХ СИСТЕМ В ТЕХНИКЕ 181 ГЛАВА 13. ОБЪЕКТНО-ОРИЕНТИРОВАННЫЕ ЭКСПЕРТНЫЕ СИСТЕМЫ 195 5 .БОЛЕЕ СЛОЖНЫЕ МЕТОДЫ ПРЕДСТАВЛЕНИЯ ЗНАНИЙ В СИСТЕМАХ ИИ 201 ГЛАВА 14. СЕМАНТИЧЕСКИЕ СЕТИ 201 ГЛАВА 15. КОЭФФИЦИЕНТЫ УВЕРЕННОСТИ 208 6 .ЯЗЫКИ ПРОГРАММИРОВАНИЯ ЗАДАЧ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА 221 ГЛАВА 17. ЯЗЫК PROLOG 221 ГЛАВА 18. ЯЗЫК LISP 227 БИБЛИОГРАФИЯ 236 ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ 238
Научное издание Левин Роберт Дранг Диана Эделсон Барри ПРАКТИЧЕСКОЕ ВВЕДЕНИЕ В ТЕХНОЛОГИЮ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА И ЭКСПЕРТНЫХ СИСТЕМ С ИЛЛЮСТРАЦИЯМИ НА БЕЙСИКЕ Книга одобрена на заседании секции редсовета по электронной обработке данных в экономике 24.12.87 Зав. редакцией К. В. Коробов Редактор О. А. Ермилина Худ. редактор Ю. И. Артюхов Техн, редактор И. В. Юдинцева Корректор Т. М. Колпакова Переплет художника А. Е. Рачинского ИБ № 2432 Подписано в печать 24.04.90. Формат бОхЗЗ1/^. Бум. кн.-журн. Гарнитура Таймс . Печать офсетная. Усл. п. л. 14,7. Усл. кр.-отт. 14,7. Уч.-изд. л. 14,1. Тираж 100 000 экз. (1-й завод 1—50 000). Заказ № 476. Цена 3 руб. Издательство „Финансы и статистика”, 101000, Москва, ул. Чернышевского, 7. Предприятие „Юнити” Советско-американского Фонда „Культурная инициатива”, 101000, Москва, Мансуровский пер., 5—3. Книга подготовлена на ППЭВМ с использованием программы верстки ’’Xerox Ventura Publisher 2.0” Типография им. Котлякова издательства „Финансы и статистика” Государствен- ного комитета СССР по печати, 195273, Ленинград, ул. Руставели, 13.