# 智能排课系统设计方案
## 需求分析
根据所给学生goal,course和subject信息,确定每个学生要上的课程。要教室、教具、老师等全部因素,尽可能充分利用学校的资源。
1. 不同学生有不同目标,需要根据学生目标给学生分配学期课程
2. 课程分不同subject,每个subject中包含本学期需要给学生安排的该subject的课时数,当前设置的course的总课时数不足时需要循环上课。
3. 每个subject下包括众多course,每个course有不同的教室类型和教具要求
4. 当教室、教具或教师资源无法满足所有学生的不同需求时,选择放弃少部分学生的需求
## 程序输入
包括学生、教室、教具、和学期时间等设置的json文件
## 程序原理
用学生的goal信息给学生进行聚类。如图把数据中的学生聚为四类,按照聚类结果进行排课可以一定程度上考虑不同学生的需求,聚类的数量也能调整,聚类数设置越大,学生之间就分得越细致,需要投入更多教学资源。这样一来在一定程度上满足了充分利用教学资源的目标。

聚类中学生goal情况显示如下:

同一个cluster下的学生goal叠加,安排为这个聚类的goal。再根据这个goal列表设置这些学生需要学习的课程。同一个subject下的course会重复上课,以满足对每个学生每个subject规定课程数的要求。
整理完需要排的课程,接下来按照同一时间点,老师、教具、教室资源不冲突,把每节课安排的时间,教室和教具按照遗传算法的方式找出来。
<img src="G:\lxy\智能排课系统\CoursesSchedule\v2-960dcb5691fc3c1d494154cb197e9b4b_720w.jpg"style="zoom:80%;" />
左侧序号表示一个课时,由于当前的数据只用到了一个教室,所以全部课程呈线性排列。

## 后续可设置部分
cluster数量
遗传算法的种群大小,迭代代数,变异率
## 程序输出
根据需求给出每节课程安排的信息列表。输出为json文件
至于每节课应该由哪些学生参加,可以根据cluster中的学生分布给出
Python基于遗传算法实现智能排课系统源码.zip
(253.42 KB, 需要: RMB 19 元)


雷达卡




京公网安备 11010802022788号







