Пример экспертной системы
День добрый многоуважаемые форумчане. Возникла необходимость за короткие сроки сделать простенькую экспертную система на Visual Studio и языке C#. А так как не знаю с чего начать, хотелось бы увидеть пример.
Если вдруг завалялась старая или ненужная ЭС на любую тему, с любым логическим выводом и тд.
Будьте любезны, поделитесь исходниками, буду очень вам благодарен.
Заранее спасибо.
Добавлено через 6 часов 7 минут
а есть идеи, как реализовать?
ps, наткнулся на полезный ресурс, там качественно все объясняется. Но вот только, дальнейшие уроки платные(
http://easyprog.ru/index.php?o. &Itemid=47
Разработка экспертной системы
Подскажите какую нибудь полезную литературу, где можно почитать про разработку экспертной системы в.
Реализация экспертной системы
Как можно реализовать в HTML чтобы ты задавал вопрос, и тебе на него давало ответ, или выбор, чтобы.
Реализация экспертной системы
Не могу никак сделать задание. Вдруг кто шарит. По аналогии с программой GENI написать.
Создание экспертной системы
Доброго времени суток! В рамках дипломной работы создаю модель для поиска канала продаж товара.
Создание экспертной системы
Привет, друзья 🙂 Помогите, пожалуйста, сделать лабораторную по CLisp 6.3. Тема:простая.
Реализация экспертной системы
Нужна помощь в реализации экспертной системы. Т.е. необходимо связать базу данных с программой. Вот.
Построение экспертной системы
Построить систему, которая дает возможность распознавать виды транспорта (автобус, троллейбус.
Персональный сайт
Факультет компьютерных наук и технологий
Кафедра компьютерной инженерии
Системное программирование
Тема выпускной работы:
Разработка и исследование подсистемы топологического анализа сетевых динамических систем как объектов моделирования
Научный руководитель: проф., д.т.н. Святный Владимир Андреевич
Использование C# и технологии WPF на примере разработки экспертной системы
Аннотация
Рассматривается разработка диагностирующей экспертной системы с использованием языка программирования C# и технологии построения приложений WPF. На примере обработки базы знаний системы продемонстрирована работа с форматом XML. Рассматривается привязка данных в пользовательском интерфейсе, описанном с помощью языка разметки XAML, а также шаблоны и стили. При разработке кода приведен пример использования некоторых паттернов проектирования и технологии LINQ.
Содержание
Введение
В данном разделе на примере разработанной мной экспертной системы я хотел бы познакомить Вас с новой технологией WPF, изучением которой занимался на протяжении обучения в университете. Мотивацией к написанию статьи послужило желание продемонстрировать возможности и удобство языка программирования и технологии, которые я в данный момент использую в своей профессиональной деятельности и планирую развиваться в этом направлении дальше.
В статье рассматриваются преимущества использования языка программирования C# совместно с технологией Microsoft Windows Presentation Foundation (WPF) при разработке прикладных приложений.
Материал носит ознакомительный характер и не претендует на детальное изучение всех аспектов программирования на WPF, призван пробудить интерес к данной технологии, показав на реальном примере некоторые из основных возможностей.
Данная технология является достаточно актуальной по многим причинам и имеет привлекательные возможности для разработчиков:
WPF использует векторную систему визуализации, которая не зависит от разрешения экрана и создана с учетом возможностей современного графического оборудования. Для создания графического интерфейса используется язык разметки XAML (Extensible Application Markup Language), производный от XML [4]. WPF в легкой и удобной форме позволяет использовать элементы управления, привязку данных, макеты, стили, шаблоны, документы, двумерную и трехмерную графику, анимацию, текст, мультимедиа, оформление и многое другое [1]. Интерфейс разработанных WPF-приложений получается очень гибким и во многом напоминает Web-сайты, в которых расположение элементов на экране меняется динамически в зависимости от текущего содержимого.
С помощью WPF могут быть созданы как автономные настольные, так и запускаемые в браузерах и телефонах приложения. Microsoft активно развивает поддержку, естественно, платформы Windows, но есть возможность запускать приложения и под Linux за счет средств Mono стороннего разработчика [1, 2].
1. Спецификация задачи разработки
Экспертная система – это программа, которая призвана заменить человека-эксперта в решении определенной проблемы. Обычно, подобные «помощники» состоят из базы знаний (совокупности фактов в определенной предметной области) и, собственно, программы, которая производит опрос пользователя и использует базу знаний для принятия решения. [5]
Интерфейс и метод опроса может быть реализован различными способами: программа может задавать пользователю последовательные вопросы, при ответе на которые он должен будет выбрать нужный ему вариант ответа, либо, например, предлагать набор опций-фильтров для отображения только нужных результатов (подобный вид часто используется в интернет-магазинах). В любом случае, программа постоянно использует свою базу знаний для поиска тех объектов, которые подходят под критерии человека. Таким образом, разработку необходимо начинать именно с выбора представления данных и наполнения базы знаний.
В качестве тематики примера выбираются классы персонажей известной игры World Of WarCraft. Система будет «советовать» игроку класс, каким ему следует начинать играть, в зависимости от его предпочтений. Необходимо выбрать несколько возможных объектов и определить список признаков, которые им присущи и по которым их можно будет идентифицировать. Для демонстрации составляется табл. 1, в которой строки представляют объекты (игровые классы), а столбцы – их признаки (способности классов).
Таблица 1 – База знаний экспертной системы
Может лечить других | Может танковать | Наносит сильный урон | Имеет питомца | Хорошо контролирует противника | Усиливает группу | Носит мощную броню | Выполняет разные роли | Наносит дальний урон | Наносит ближний урон | Носит щит | Расходует ману | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Друид | + | + | + | + | + | + | + | + | + | + | ||
Паладин | + | + | + | + | + | + | + | + | + | |||
Шаман | + | + | + | + | + | + | + | |||||
Жрец | + | + | + | + | + | |||||||
Рыцарь смерти | + | + | + | + | + | |||||||
Воин | + | + | + | + | + | |||||||
Чернокнижник | + | + | + | + | + | |||||||
Охотник | + | + | + | + | ||||||||
Маг | + | + | + | + | + | |||||||
Разбойник | + | + | + |
2. Проектирование базы знаний
В табл. 1 представлен набор объектов и их признаков, достаточный для реализации примера. Следующим шагом является вопрос хранения составленной информации.
Предложена следующая структура файла:
Атрибут Name тега Database задает имя экспертной системы, которое в будущем будет отображаться в заголовке интерфейса приложения.
Раздел Attributes перечисляет все виды характеристик объектов (т.е. столбцы из табл. 1) и присваивает им идентификаторы ID (для удобства выбран числовой вид), по которым они будут заданы в объектах. Атрибут Caption – это визуальное описание признака объекта для пользователя.
Раздел Objects описывает, соответственно, все объекты (атрибут Name) и характеристики (заданы в атрибуте Attributes в виде присвоенных ранее идентификаторов ID, перечисленных через знак-разделитель), которые они имеют.
Атрибут Caption обоих разделов служит той надписью, которая будет отображена над соответствующим списком в графическом интерфейсе пользователя.
Предложенная структура файла содержит минимально необходимый набор полей для представления базы знаний на любую тематику. Разработанная экспертная система будет универсальной и то, что она делает, будет всецело определяться данным файлов базы.
Следует отметить, что это лишь один из возможных способов представления. От того, как будет организована база, зависит лишь способ чтения данных и удобство их обработки.
Следующий этап – организация чтения файла базы знаний и представление всей информации в удобном для хранения и доступа виде.
3. Разработка структур данных экспертной системы
Приложения WPF предпочтительно разрабатывать, придерживаясь паттерна проектирования MVVM (Model-View-ViewModel), предложенного Джоном Госсманом (John Gossman) в 2005 году как модификации паттерна Presentation Model. Данный паттерн предполагает разделение логики приложения и визуального представления, что особенно актуально в связи со всеми возможностями, предлагаемыми WPF в этом направлении. [6, 7]
Следующий класс будет представлять признак объекта и выбор пользователя в системе:
Класс имеет поля ID и Name, определяющие идентификатор и имя признака. Они описаны в виде свойства, доступного извне только для чтения, и задаются один раз в конструкторе при создании экземпляра класса. Также имеются поля used и unused, которые показывают, должен ли данный признак присутствовать или отсутствовать у объектов. Если оба установлены в False, то признак должен игнорироваться. Иначе только одно поле может иметь значение True.
Привязка данных WPF, пример которой будет рассмотрен ниже, требует, чтобы привязываемые данные обязательно являлись свойствами. Именно поэтому ID и Name описаны в виде авто-свойств (компилятор автоматически сгенерирует для них поле, которое будет хранить устанавливаемое значение), а used и unused устанавливаются с помощью Used и Unused.
Свойства Used и Unused при установке их значений генерируют описанное событие с помощью метода InvokePropertyChanged. Таким образом, изменения в экземплярах данного класса всегда могут быть без проблем отслежены как WPF, так и самим программистом во внешнем коде.
Следует отметить еще одну удобную особенность C#-программ – возможность использования XML-комментариев, которые обеспечивают автодокументирование кода.
Класс объекта экспертной системы выглядит следующим образом:
Свойства Name и Attributes возвращают, соответственно, имя и признаки объекта экспертной системы. Список Attributes создается в конструкторе и формируется методом SetAttributes из строки атрибутов, прочитанной из файла базы знаний. В методе SetAttributes с помощью регулярных выражений (класс Regex) выделяются все идентификаторы атрибутов и вносятся в список.
4. Разработка экспертной системы
Система должна загружать базу знаний из файла, формировать списки возможных объектов и их признаков, а также производить поиск объектов по выбранным признакам. Результаты работы должны быть легкодоступны для подключения к GUI.
Для хранения объектов и признаков необходима такая коллекция, которая бы оповещала WPF обо всех изменениях. Для этой цели используется ObservableCollection, которая при добавлении, удалении или обновлении всего списка элементов генерирует специальное событие.
Описанная коллекция может быть использована для хранения объектов экспертной системы, которые удовлетворяют выбранным пользователем признакам. Когда пользователь делает выбор, состав элементов данной коллекции будет меняться и WPF моментально отобразит результаты на экране.
Однако для хранения самих признаков ObservableCollection не подходит, так как не реагирует на изменение в их свойствах. В качестве одного из вариантов решения проблемы является унаследование класса с добавлением необходимого функционала [8]. Это позволит отслеживать изменения и оставить базовую функциональность, необходимую WPF. Предлагается следующая реализация данной идеи:
Идея достаточно простая: перегружаются все методы ObservableCollection, которые каким-либо образом изменяют состав коллекции. В перегруженных методах производится установка обработчика события изменения каждого элемента. Когда какой-либо элемент будет оповещать об изменении своих свойств, вся коллекция NotifiableCollection будет генерировать событие изменения и указывать, какой именно ее элемент был изменен.
Теперь становится возможна разработка непосредственно самой экспертной системы:
Класс DiagnosticExpertSystem также реализует интерфейс INotifyPropertyChanged и генерирует событие при изменении таких свойств, как Name (имя экспертной системы), AttributesCaption (надпись для списка признаков), ObjectsCaption (надпись для списка отфильтрованных в соответствии с установленными признаками объектов). Данные свойства будут изменятся при загрузке базы знаний.
Имеются коллекции признаков Attributes, всех объектов AllObjects и отфильтрованных объектов FilteredObjects. Признаки и объекты загружаются один раз и не меняются во время работы, а отфильтрованные объекты изменяются после каждого выбора признака пользователя.
Когда пользователя делает выбор признака, свойства Used или Unused соответствующего признака меняются, на что класс генерируется событие, перехватываемое коллекцией Attributes. Коллекция генерирует свое событие, которое уже обрабатывается внутри DiagnosticExpertSystem. Обработка заключается в вызове функции Filter.
Данная схема может показаться достаточно сложной или запутанной. Но на практике подобный подход дает легкость разработки GUI, а также модификации, расширения и сопровождения кода программы.
В классе главного окна создается экземпляр экспертной системы и описывается функция загрузки базы знаний из файлов:
В конструкторе окна создается экземпляр, а в функции-обработчике события нажатия кнопки загрузки, которая вскоре будет размещена в интерфейсе пользователя, происходит выбор файла с базой знаний.
Последним шагом является разработка интерфейса пользователя и связывание его с данными.
5. Разработка пользовательского интерфейса
Интерфейс описывается средствами XAML. При грамотно разработанном коде, потребуется лишь с помощью средств привязывания данных указать источники данных. Привязывание данных (DataBinding) – инструмент WPF, который обеспечивает простой и согласованный способ представления данных и взаимодействия с ними.
Разметка простейшего интерфейса может иметь вид:
Определена сетка (2 столбца и 3 строки), в ячейках которой размещены блок текста для названия экспертной системы, кнопка для вызова диалога выбора файла с базой знаний, 2 списка с текстовыми заголовками для признаков и списка объектов. Результат изображен на рис. 1.
Рисунок 1. Простейший пользовательский интерфейс
В сетке определен контекст данных DataContext – своего рода источник информации для DataBindings элементов управления, находящихся на ней.
Строка задает поиск источника данных Expert в предках типа Window. В данном случае будет «подцеплено» свойство Expert, являющееся экземпляром экспертной системы.
В остальных элементах управления для установки свойств используется привязка вида которая берет значение указанного свойства из текущего контекста.
Описание списка атрибутов демонстрирует всю мощь WPF: возможность описывать элементы управления практически любого вида и структуры. В данном случае определяется шаблон для каждого элемента списка: два флажка с подписями «Да» и «Нет» для отметки признака и правее – его название. По данном шаблону будут отображаться элементы коллекции Attributes экспертной системы, определенной привязкой данных в свойстве ItemsSource списка. При этом каждый флажок и название привязывается к соответствующим свойствам класса ExpertSystemAttribute.
После выбора файла и загрузки базы WPF автоматически отображает всю информацию (рис. 2).
Рисунок 2. Пользовательский интерфейс с загруженной базой
Возможно построение очень гибкого интерфейса, размеры и положения элементов управления которого меняются в зависимости от их содержимого. В данном случае при появлении текста названия экспертной системы кнопка автоматически загрузки «пододвинулась» вправо.
Данное окно выглядит довольно строго. Внесенные изменения (рис. 3) сделают его приятней на вид и продемонстрируют визуальные возможности WPF.
Рисунок 3. Усовершенствованный пользовательский интерфейс
В данном случае применены тени к тексту, изменены цвета, установлена прозрачность спискам, на фоне которых просматривается графический фон. Кнопка открытия имеет стеклянный вид и мягко подсвечивается при наведении указателя мыши (использование возможностей анимации).
Код представленного интерфейса:
Заключение
В статье продемонстрировано использование C# и технологии WPF для построения простейшей диагностической экспертной системы. Дан обзор таким средствам и возможностям, как привязка данных, шаблоны, анимация, работа с XML-документами и изображениями, стили, автодокументирование кода, LINQ. Показано, как структура WPF-приложений поддерживает MVVM-паттерн проектирования. Разработан код, автоматически обновляющий содержимое всего пользовательского интерфейса. Получено полноценное работающее приложение.
WPF дает практически неограниченные возможности конструирования, позволяя работать не только с цветами и изображениями, но и даже манипулировать анимацией, видео и 3D-объектами. Все зависит лишь от фантазии дизайнера.
Искусственный интеллект на практике: создаём экспертную систему для приготовления шашлыка
Авторизуйтесь
Искусственный интеллект на практике: создаём экспертную систему для приготовления шашлыка
Рассказывает Юрий Дубровских
Экспертные системы — это вычислительные системы, способные в определённой предметной области принимать решения, схожие с решениями экспертов-людей.
Выглядит это примерно так: система задаёт ряд вопросов, причём последующие вопросы зависят от полученных ответов. Затем система делает вывод и показывает всю цепочку рассуждений, которая к нему привела. То есть знания и опыт эксперта тиражируются, а что не менее важно — тиражируется сам ход его рассуждений.
Кроме того, можно применить несколько интересных особенностей. Например, система может сделать не один вывод, а перечислить варианты с разной степенью вероятности. Можно учитывать различные виды нечётких данных — если пользователь не знает ответы на некоторые вопросы или что-то предполагает. Вместо пользователя система может опрашивать датчики или брать информацию из разных источников. Продвинутые системы могут самообучаться, то есть выявлять закономерности во время сеансов работы и генерировать новые знания.
Таким образом, экспертные системы могут применяться для довольно широкого круга задач:
Конечно, есть и ограничения. Во-первых, использовать экспертные системы есть смысл только в довольно узких предметных областях, где трудно найти экспертов и легче использовать компьютерную систему. Во-вторых, они не подходят для тех областей, в которых эксперты руководствуются не столько своими знаниями, сколько здравым смыслом, то есть сведениями из общей области знаний, не связанной с конкретным предметом. Также к недостаткам экспертных систем можно отнести то, что они плохо соотносятся с реляционными базами данных, к которым мы все так привыкли.
Тем не менее, в настоящее время существует и используется довольно много экспертных систем в сфере медицины, химии и военного дела. Вот некоторые примеры:
Попробуем создать небольшую экспертную систему. Для первого раза возьмём тренировочную предметную область. Хороший способ убедиться, что искусственный интеллект своими руками — это просто.
Не секрет, что в летний сезон в России ожидается резкий рост количества экспертов по приготовлению шашлыка. Думаю, многим знакома ситуация, когда кто-то один готовит шашлык а несколько людей стоят вокруг и дают советы и вообще высказывают своё экспертное мнение. Поведение таких шашлычных экспертов мы и попытаемся сымитировать.
Немного теории
Для начала разберёмся, что нам предстоит сделать.
Итак, экспертная система состоит из нескольких основных компонентов:
База знаний
База знаний — это, можно сказать, сердце экспертной системы. Знание — это информация вместе со способом её интерпретации, то есть это более высокий уровень информации. Система, обладающая знаниями, может не только выдавать информацию, но и объяснять её смысл и происхождение. Описание способа интерпретации называется метаданными.
Зачастую вся сложность создания экспертной системы заключается в формировании базы знаний. Этим занимаются специально обученные люди — инженеры по знаниям. Совместно с одним или несколькими экспертами они формулируют правила, имеющиеся в предметной области, и заносят их в определённом виде в базу знаний. В промышленных системах количество правил может исчисляться тысячами. При этом связи в предметной области могут быть такими запутанными и даже противоречивыми, что незначительная модификация базы знаний, например изменение порядка следования двух правил, может вызвать кардинальные изменения в работе всей системы.
Отдельная трудность заключается в самом общении с экспертами. Эксперты могут расходиться во мнениях и устраивать принципиальные споры. Кстати, поэтому предпочтительно использовать экспертные системы для тех областей знаний, которые уже устоялись. Кроме того, эксперты могут применять какие-то правила неосознанно или даже намеренно что-то скрывать. Остаётся только пожелать инженерам по знаниям, чтобы они держались.
И условие, и действие содержат в себе некие факты. Факт сам по себе может быть истинным или ложным, а также мы можем не иметь данных о его истинности. Факт может иметь определённую степень уверенности, например мы не знаем, что значит «долго» в контексте приготовления шашлыка, но кажется, что жарится уже довольно давно. Состоит факт из переменной и значения. Значение берётся из множества возможных значений — домена переменной. То есть наше условие «мясо жарится долго» можно переписать в виде: Время жарки = долго, где «время жарки» — переменная, а «долго» — значение. Если все возможные вопросы относительно времени жарки будут иметь ответ только «долго» и «недолго» — это и будет домен этой переменной.
Действие представляет собой присвоение истинности некоторому факту. То есть вместо человеческого «оно приготовилось», в ходе работы правила факт Мясо готово = да помечается как истинный.
Ещё раз посмотрим на то, что получилось из простого предложения эксперта. Из начального Если мясо жарится долго, оно приготовилось получается:
Переменные:
Правило:
Если факт «время жарки = долго» — истинный, то факт «мясо готово = да» пометить как истинный.
Конечно, если мясо долго жарится, ещё нельзя уверенно утверждать, что оно готово, может быть, угли холодные. Но в нашем примере мы закроем на это глаза и не будем использовать степень уверенности в фактах.
Так, изучая высказывания экспертов, инженеры по знаниям выделяют имеющиеся в предметной области сущности и формируют правила. Что же с этими правилами происходит дальше?
Механизм логического вывода
После того как база знаний сформирована, можно задавать вопросы системе. Механизм логического вывода обеспечивает поиск ответов на эти вопросы. Вопрос задаёт цель консультации, в общем случае это определение значения какой-либо переменной. В нашем примере мы хотим понять, что же делать с шашлыком, то есть целью консультации будет значение переменной Действие с шашлыком. Возможными вариантами будут ждать, перевернуть или снимать.
На первом шаге механизм находит в базе знаний все правила, в которых переменная-цель присутствует в качестве вывода, не важно, с каким значением. Теперь каждое правило, если они нашлись, по очереди (именно поэтому важен порядок следования правил) проверяются до первого сработавшего. То есть до того, все условия которого окажутся истинными. Для проверки правила берутся все его условия и, опять же, по очереди проверяются — объявляются целью консультации, и алгоритм запускается для них с первого шага.
Не для всех переменных существуют правила, которые их определяют. Некоторые запрашиваются из внешних источников, в простейшем случае — у пользователя. Переменные, которые определяются правилами, называются выводимыми, а определяемые пользователем во время консультации — запрашиваемыми. Тип переменной определяется ещё на этапе формирования базы знаний, и для запрашиваемых должны быть заданы способы определения, например сформулирован вопрос для пользователя. Если пользователь не может ответить или для выводимой переменной не нашлось правил, или ни одно из правил не сработало — переменная остаётся без значения, а пользователь — без установленной истины.
Существуют ещё выводимо-запрашиваемые переменные. Для них существуют и правила вывода, и вопрос пользователю. Сначала механизм логического вывода пытается определить такие переменные с помощью правил, а если не получается — задаёт вопрос.
Компонента объяснения
Ещё одна немаловажная часть экспертной системы. Именно объяснение хода рассуждений и обоснование выводов выгодно отличают экспертную систему от других отраслей искусственного интеллекта.
На этапе формирования базы знаний в качестве метаданных к правилам прилагаются их объяснения на естественном языке. После консультации система может показать все сработавшие правила вместе с этими пояснениями. Комментарии можно также добавлять к отдельным фактам или переменным.
В итоге мы узнаём не только что надо перевернуть шашлык, но и почему нужно это сделать.
Это очень серьёзное преимущество для систем поддержки принятия решений и для других применений экспертных систем. Некоторые промышленные системы в качестве результата дают несколько ответов с пояснениями и степенями вероятности.
Переход к практике
Механизм логического вывода и компонента объяснения не относятся к конкретной экспертной системе. Они используют правила и метаданные базы знаний, но представляют собой скорее оболочку для экспертных систем. Имея такую оболочку, можно конструировать различные системы, создавая только базы знаний. Возможно, потребуются какие-то настройки в механизме логического вывода, но в целом оболочка может использоваться в любой предметной области.
Оболочка экспертной системы
Конечно, существует множество готовых оболочек. Они предоставляют различные возможности и различные способы формирования базы знаний. Однако, я достаточно жаден, чтобы не использовать платные решения и достаточно высокомерен, чтобы из бесплатных ни одно меня не устроило.
Ещё в студенческие годы мне довелось написать оболочку для экспертной системы. Конечно, она далеко не идеальна, ни с точки зрения кода, ни с точки зрения пользовательского интерфейса. Но во-первых, она работает. По крайней мере для небольших задач, как наша, она вполне годится для примера. Во-вторых, как ни странно, та же Википедия называет одним из основных недостатков экспертных систем отсутствие графического пользовательского интерфейса (взаимодействие обычно идёт через терминал). Так что наличие какого бы то ни было интерфейса (который у меня есть) — уже достаточный вклад в отрасль.
Далее я опишу схему данных и основной алгоритм работы механизма логического вывода в собственной оболочке, и дальнейшее создание экспертной системы буду показывать именно в ней. Вам же предлагаю на выбор — поискать оболочки в интернете (например можно взять эту в Википедии, а вот и ссылка на сам проект), воспользоваться моей.
Модель данных можно использовать самую простую, как в теории:
Теперь, когда у нас есть модель данных и алгоритм, можем переходить к самому интересному — проектированию базы знаний.
База знаний
Что ж, начнём записывать в систему свои знания о шашлыке. При этом нужно помнить несколько вещей:
Нужно формализовать свои знания о шашлыке и представить в виде модели базы знаний, то есть выделить домены, переменные и правила. Чтобы было легче сформировать набор правил, да ещё и в нужном порядке, можно составить их графическое представление. У меня получилась довольно дикая, боюсь, понятная только мне схема:
Вершины определяют список переменных и возможных значений, а также какие переменные будут запрашиваемыми, а какие выводимыми. Дуги указывают на некоторые связи, из которых впоследствии получаются правила. Здесь я предположил, что мы будем жарить курицу или свинину, а система может подсказать три действия — ждать, перевернуть, снимать. Исходя из вашего опыта, вы можете сделать другие правила, расширить или переделать эту базу знаний. Вообще говоря, этим база знаний и хороша, что её ещё долго можно расширять, включая новые виды мяса, предполагаемые действия, обстоятельства и так далее. Пока же у меня получилось 27 правил:
В промышленных системах количество правил может исчисляться тысячами. Для нашей тренировочной области пока попробуем чуть меньше. Итак, запустим консультацию и посмотрим, что нам посоветует система.
Я сказал, что жарю свинину минут 10, и система посоветовала подождать ещё, и вот почему:
Когда смотришь на объяснение, как-то даже легче смириться с тем, что надо ещё ждать. Можно поэкспериментировать, запуская консультацию и по-разному отвечая на вопросы. Возможно, в каких-то случаях истина установлена не будет — значит, надо дополнить базу знаний новыми правилами.
Вот и всё, искусственный интеллект — система поддержки принятия решений в узкой предметной области — создан. Конечно, он не учитывает многие факторы, нечёткости и так далее. В базе знаний нет сведений о том, как захватить мир, и в отличие от некоторых промышленных систем, наша не способна анализировать консультации и сама генерировать новые правила. Но с шашлычными экспертами, которые будут кучковаться летом вокруг мангала, она уже вполне может поспорить.