-
Работа с редактором знаний и изучение исходного кода
В правом нижнем углу окна 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.
Аналогичным образом Вы можете, использовав код примера в качестве шаблона, реализовать собственную экспертную систему.
-
Анализ сгенерированного кода на c#
В системе Knowledge.NET исходный код на языке представления знаний конвертируется в исходный код на чистом языке C#, содержащий библиотечные вызовы, реализующие работу с базой знаний.

Рис. 5. Открытие сгенерированного файла кода на C#.
При необходимости исследования этого кода (его имя для данного примера – frmain.expert_.cs), он может быть открыт двойным щелчком на имени этого файла в правом верхнем углу – в окне Solution explorer (см. рис. 5).
Чтобы проанализировать код на C#, сгенерированный конвертором, необходимо открыть скрытый регион этого кода, находящийся в конце файла исходного кода на C#.
-
Выводы
Таким образом, мы изучили основы работы в системе Knowledge.NET – по-видимому, первой системы для платформы .NET, в которой реализован принцип интеграции методов инженерии программ и инженерии знаний.
Дальнейшие сведения о системе можно найти в прилагаемом списке литературы, а также на сайте проекта [1].
Для разработки собственной экспертной системы на языке Knowledge.NET Вы можете использовать дополнительный тип проекта – Knowledge, который инсталлируется вместе с системой Knowledge.NET.
Литература
-
Web-сайт проекта Knowledge.NET. http://www.knowledge-net.ru
-
Сафонов В.О., Новиков А.В. Сигалин М.В., Смоляков А.Л., Черепанов Д.Г. Интеграция методов инженерии знаний и инженерии программ: Система управления знаниями Knowledge.NET. - Компьютерные инструменты в образовании, 2005, № 5, 52-68.
-
Сафонов В.О., Новиков А.В. Сигалин М.В., Смоляков А.Л., Черепанов Д.Г. Редактор знаний Knowledge Editor. - Компьютерные инструменты в образовании, 2005, № 6, 6-16.
