Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Safonov / AMPN_Lab2_Knowledge.NET.doc
Скачиваний:
154
Добавлен:
16.04.2015
Размер:
377.86 Кб
Скачать
  1. Работа с редактором знаний и изучение исходного кода

В правом нижнем углу окна Visual Studio (см. рис. 1) может быть визуализирована структура знаний, используемых для решения задачи и представленных в виде исходного кода файла .expert.

Для этого рассмотрим внимательно содержимое окна Knowledge.NET Framework: в нем имеется надпись “Frames” – это и есть визуальное представление знаний.

Теперь раскроем его, нажав “+” слева от надписи Frames, и получим следующую структуру (см. рис. 3). Знания для решения задачи состоят из трех фреймов – фрейма-класса Student (представление знаний о студенте), фрейма-экземпляра Ivanov (представление знаний о конкретном студенте Иванове) и фрейма-набора правил ScoreAdviser, реализующем логику экспертной оценки.

Для того, чтобы выполнить навигацию к началу описания фрейма Student, необходимо сделать двойной щелчок на его имени в окне Knowledge.NET Framework. В результате в окне frMain.expert будет выделена курсором и цветом начальная строчка определения фрейма Student (рис. 3).

Рис. 3. Навигация к фрейму Student

Рассмотрим описание фрейма Student. Он состоит из четырех слотов, реализующих результаты оценки знаний студента.

Фрейм-экземпляр Ivanov (навигация к нему аналогична) содержит единственный слот, задающий принадлежность Иванова к фрейму-классу Student.

Выполним теперь навигацию к набору правил ScoreAdviser. Результат показан на рис. 4:

Рис. 4. Навигация к набору правил ScoreAdviser

ScoreAdviser – простой набор из трех правил, R1, R2 и R3. Каждое из них срабатывает при определенном сочетании значений индикаторов знаний студента. Заметим, что набор правил работает в контексте экземпляра фрейма-класса Student (context instance Student). Целевой переменной (goal) при выводе является слот decision (решение) фрейма Student. Ему присваивается строка, описывающая решение экспертной системы.

Обращение к экспертной системе из основной части кода на C# выполняется следующим образом.

База знаний загружается при загрузке на экран формы (в методе Form_Load) вызовом:

CSharpExpert.loadKnoweldgeBase();

Запуск набора правил осуществляется при нажатии кнопки Get decision, в методе button1_Click, вызовом:

((ScoreAdviser)CSharpExpert.getRulesetFrame("ScoreAdviser"))

.initContext("Ivanov");

ProductionSystem.consult ("ScoreAdviser", "decision");

Первый оператор находит в базе знаний набор правил ScoreAdviser и инициализирует для него контекст фрейма Ivanov.

Второй оператор запускает набор правил, передавая вторым аргументом имя целевой переменной decision.

Обмен информацией между базой знаний и программой на C# осуществляется оператором:

txtDecision.Text = Ivanov.decision;

который присваивает компоненте формы полученное при консультации значение целевой переменной decision.

Аналогичным образом Вы можете, использовав код примера в качестве шаблона, реализовать собственную экспертную систему.

  1. Анализ сгенерированного кода на c#

В системе Knowledge.NET исходный код на языке представления знаний конвертируется в исходный код на чистом языке C#, содержащий библиотечные вызовы, реализующие работу с базой знаний.

Рис. 5. Открытие сгенерированного файла кода на C#.

При необходимости исследования этого кода (его имя для данного примера – frmain.expert_.cs), он может быть открыт двойным щелчком на имени этого файла в правом верхнем углу – в окне Solution explorer (см. рис. 5).

Чтобы проанализировать код на C#, сгенерированный конвертором, необходимо открыть скрытый регион этого кода, находящийся в конце файла исходного кода на C#.

  1. Выводы

Таким образом, мы изучили основы работы в системе Knowledge.NET – по-видимому, первой системы для платформы .NET, в которой реализован принцип интеграции методов инженерии программ и инженерии знаний.

Дальнейшие сведения о системе можно найти в прилагаемом списке литературы, а также на сайте проекта [1].

Для разработки собственной экспертной системы на языке Knowledge.NET Вы можете использовать дополнительный тип проекта – Knowledge, который инсталлируется вместе с системой Knowledge.NET.

Литература

  1. Web-сайт проекта Knowledge.NET. http://www.knowledge-net.ru

  2. Сафонов В.О., Новиков А.В. Сигалин М.В., Смоляков А.Л., Черепанов Д.Г. Интеграция методов инженерии знаний и инженерии программ: Система управления знаниями Knowledge.NET. - Компьютерные инструменты в образовании, 2005, № 5, 52-68.

  3. Сафонов В.О., Новиков А.В. Сигалин М.В., Смоляков А.Л., Черепанов Д.Г. Редактор знаний Knowledge Editor. - Компьютерные инструменты в образовании, 2005, № 6, 6-16.

Соседние файлы в папке Safonov