Разработка базы продукционных правил
Секция: Технические науки
VI Студенческая международная научно-практическая конференция «Технические и математические науки. Студенческий научный форум»
Разработка базы продукционных правил
Экспертная система распределения учебной нагрузки кафедры будет использоваться преподавателями кафедры для составления учебной нагрузки преподавателей.
Кафедра получает учебное поручение на следующий год в формате файла Excel. После этого специалист, ответственный за распределение учебной нагрузки, вручную распределяет дисциплины между преподавателями кафедры. При этом, необходимо учитывать множество факторов:
- вид занятий. Если вид занятия – лекция, то такое занятие может вести преподаватель с должностью профессора, доцента или старшего преподавателя;
- количество часов. У каждого преподавателя есть плановое количество часов, которое зависит от ставки преподавателя, например, если ставка равна одной единице, то плановое количество часов в год равно 900 часов. Плановое количество часов нельзя превышать, но и слишком мало оставлять тоже нельзя;
- равномерность распределения часов. Желательно распределить нагрузку между преподавателями равномерно, например, не допускается, если в первом семестре у преподавателя 200 часов, а во втором семестре 700 часов;
- количество подгрупп. От количества подгрупп на той или иной дисциплине меняется количество часов, таким образом, если в учебном поручении сказано, что на лабораторные занятия выделено 32 часа, и 2 подгруппы, то необходимо умножить количество часов на количество подгрупп, кроме этого, в некоторых случаях удобнее ставить на две подгруппы двух разных преподавателей для дальнейшего составления расписания;
- руководство практиками и нормоконтроль осуществляется ответственными преподавателями, однако ответственные могут меняться.
Задача распределения учебной нагрузки кафедры является не типизированной и сложной в плане формализации знаний. Данная задача может решаться только экспертом в данной предметной области.
Для разработки базы продукционных правил необходимо выполнить следующие шаги:
– определить целевые действия задачи (являющиеся решениями);
– определить промежуточные действия или цепочку действий, между начальным состоянием и конечным (между тем, что имеется, и целевым действием);
– опередить условия для каждого действия, при котором его целесообразно и возможно выполнить. Определить порядок выполнения действий;
– добавить конкретики при необходимости, исходя из поставленной задачи;
– преобразовать полученный порядок действий и соответствующие им условия в продукции.
Разработаем продукционные правила для предметной области «Распределение учебной нагрузки кафедры».
Обязательным действием в данной предметной области является «распределение учебной нагрузки», что, по сути, представляет собой процесс соотношения конкретной дисциплины к конкретному преподавателю.
Прежде чем соотносить между собой преподавателей и дисциплины, необходимо определить какой преподаватель может вести конкретную дисциплину. Предполагается, что в систему поступают данные, полученные в опросе, то есть у каждого преподавателя имеется хотя бы одна дисциплина, которую он может вести. Для определения у каждой дисциплины преподавателей, которые могут ее преподавать, составим правило типа «Если, то»:
<Если у преподавателя в списке его дисциплин имеется данная дисциплина, то этот преподаватель может вести данную дисциплину>
Кроме этого необходимо определить кто из преподавателей может вести такой вид занятий как лекции, так как лекции могут преподавать только профессора, доценты и старшие преподаватели. Составим правило типа «Если, то»:
<Если должность преподавателя профессор ИЛИ доцент ИЛИ старший преподаватель, то этот преподаватель может вести лекции>
Далее необходимо распределить дисциплины, для которых однозначно определен преподаватель. К таким дисциплинам относятся: руководство кафедрой, ИГА, утверждение ВКР, учебная практика, производственная практика, преддипломная практика, НИР, руководство магистратурой, а также нормоконтроль, для которых есть отдельный столбцы в учебном поручении и, если в конкретном столбце стоит не ноль, то для этой дисциплины необходимо определить преподавателя именно этим способом. Фамилии преподавателей для таких дисциплин будут задаваться отдельно в настройках системы, так как например, руководители практик могут меняться каждый год, в экспертной системе имена этих преподавателей будут храниться в глобальных переменных, например: (defglobal ?*заведующий_кафедрой* = "Михайлова С.С."). Составим правило типа «Если, то» на примере НИР:
<Если для данной дисциплины в столбце НИР стоит не 0, то преподавателем назначить руководителя НИР>
Для остальных таких дисциплин правила будут выглядеть идентично.
При распределении остальных предметов необходимо учитывать, что у каждого преподавателя существует план часов в год, зависящий от занимаемой ставки. При этом необходимо распределять нагрузку равномерно. Это означает, что для первого и второго семестра распределение будет происходить поэтапно, во избежание неравномерности распределения. Также, нельзя забывать о том, что на выбор преподавателя также влияет вид занятия. Составим правило типа «Если, то» для определения преподавателя дисциплины 1-го семестра:
<Если дисциплина проводится в первом семестре И вид занятия = лекция И преподаватель может вести эту дисциплину И преподаватель – лектор И количество часов у преподавателя не превышает половины плановой часовой нагрузки, то назначить его преподавателем данной дисциплины>
Для лабораторных и практических занятий будет отсутствовать условие «преподаватель – лектор», для второго семестра правило будет выглядеть идентично, но ограничение на количество часов преподавателя будет не половина, а полная плановая часовая нагрузка.
Для того чтобы было что и с чем соотносить, необходимо иметь входные данные, а именно список преподавателей и список дисциплин, а также учебное поручение, по которому нужно распределить нагрузку.
Все эти данные на языке CLIPS можно представить в виде шаблонов deftempate. Таким образом, в системе будут использоваться три шаблона: teacher, discipline, plan. Данные шаблоны представлены ниже.
В совокупности все эти правила составляют модуль экспертной системы, который будет вызываться кнопкой «Распределить нагрузку». Заданные шаблоны будут заполняться загрузкой в модуль заранее подготовленных файлов в формате .clp, которые будут генерироваться в ходе работы системы. Результаты распределения учебной нагрузки будут предаваться из данного модуля в систему, для наглядности будет заполняться таблица, в которой пользователь сможет вносить изменения при необходимости. Данную таблицу можно будет сохранить в Excel файл.