Экспертная система, разрабатываемая в рамках дисциплины "Модели и методы искусственного интеллекта". Необходимо было разработать rule-based систему, которая поможет оценивать работы студентов на основании их оценок и посещаемости. На самом деле к логике оценок студентов в программе нет никакой привязки, т.е. можно создать любые домены и правила на любую тему.
С логикой оценок и обычный человек легко справится, но нужно было что-нибудь написать, хотя бы не оценка темперамента по тесту "какая ты фея винкс".
Имеется небольшой функционал для работы с правилами, доменами и их значениями
- Добавление, удаление и изменение:
- правил системы;
- доменов (переменных) системы;
- значений доменов системы.
- Внесение значений текущего состояния системы;
- Вычисление результатов по значениям состояния.
Заполнить все имеющиеся поля в таблице значений состояния системы.
Дождаться вывода дерева рассуждений и логического вывода новых значений по системе правил.
Я в своё время не потрудился подкрутить нормальную обработку ошибок, так что следует следовать ряду правил, чтобы прога не упала прямо во время раздувания базы правил и доменов.
Все вводимые правила должны выглядеть как условные предикаты в языке Python
domen1 == d1meaning1 and domen2 == d2meaning1 or domen1 == d1meaning2
Названия доменов могут быть буквально любыми. Например, fruit
, veg
или score5
.
А вот значения этих доменов уже должны соответсовать либо строкам, либо числам в языке Python. То есть, если значения для домена fruit
- это бананы и яблоки, а для score5 - это массив числа от 2 или 5, то в системе необходимо будет вводить данные в формате:
{
fruit: 'banana', 'apple',
score5: 2, 5
}
Есть ещё особенности записи в файл, но мне проще вставить его содержимое.
D R fruit:'banana','apple'
D vegan:'tomato','potato'
R fruit == 'banana' -> vegan = 'tomato'
R fruit == 'apple' -> vegan = 'potato'