Skip to content

Commit 91a25f5

Browse files
author
FLASHLACK1314
committed
fix(algorithn) : 完善更新算法文档
1 parent 9a7b616 commit 91a25f5

File tree

1 file changed

+2
-115
lines changed

1 file changed

+2
-115
lines changed

docs/final/algorithm.md

Lines changed: 2 additions & 115 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77

88
### 1.2 算法简要逻辑
99

10-
<<<<<<< HEAD
1110
1.**数据输入阶段**
1211

1312
- 前端提交排课约束条件(课程、教师、教室、时间等)
@@ -41,32 +40,6 @@
4140
- 记录迭代过程中的最优解
4241
- 最终输出冲突最少的排课方案(适应度最高的)
4342
- 保存无法避免的冲突
44-
=======
45-
1. 数据输入阶段
46-
- 前端提交排课约束条件(课程、教师、教室、时间等)
47-
- 后端接收并预处理数据,生成排课问题域
48-
2. 种群初始化
49-
- 随机生成初始种群(多个候选课表)
50-
- 每个个体表示一种排课方案(教室、教师、时间槽的合法组合)
51-
3. 适应度评估
52-
- 对每个个体进行约束检测和评分
53-
- 计算冲突数(如教师时间冲突、教室占用冲突等)
54-
- 根据冲突情况计算适应度值(冲突越少,适应度越高)
55-
4. 迭代优化阶段
56-
- 选择(Selection)​
57-
- 采用轮盘赌选择法,优先保留高适应度个体
58-
- 适应度越高的个体被选中的概率越大
59-
- 交叉(Crossover)​
60-
- 从父代中选择两个个体,交换部分课程安排
61-
- 生成新的子代个体,保留优质基因
62-
- 变异(Mutation)​
63-
- 随机调整部分课程的时间或教室分配
64-
- 引入多样性,避免早熟收敛
65-
5. 结果输出阶段
66-
- 记录迭代过程中的最优解
67-
- 最终输出冲突最少的排课方案(适应度最高的)
68-
- 保存无法避免的冲突
69-
>>>>>>> a0ac576bfc02bffdc7c763491dc44dae866af0b6
7043

7144
## 2. 核心组件与数据结构
7245

@@ -81,7 +54,6 @@
8154
| TimeSlotDTO | 时间槽,表示第几周、星期几、第几节课。 |
8255

8356
### 2.2 关键工具类
84-
<<<<<<< HEAD
8557

8658
| 工具类名称 | 工具类简介 |
8759
| ------------------------- | ----------------------------- |
@@ -90,14 +62,6 @@
9062
| TimeSlotGeneratorUtil | 时间槽生成工具类,生成符合要求的时间安排。 |
9163
| CheckConflicts | 冲突检测工具类,检查各种资源冲突。 |
9264

93-
=======
94-
| 工具类名称 | 工具类简介 |
95-
| ------------------------- | ---------------------------------------------------------- |
96-
| ClassroomSelectionUtil | 教室选择工具类,负责根据课程要求和学生人数选择合适的教室。 |
97-
| ScheduleFitnessCalculator | 适应度计算工具类,评估课程表的质量。 |
98-
| TimeSlotGeneratorUtil | 时间槽生成工具类,生成符合要求的时间安排。 |
99-
| CheckConflicts | 冲突检测工具类,检查各种资源冲突。 |
100-
>>>>>>> a0ac576bfc02bffdc7c763491dc44dae866af0b6
10165
### 2.3 算法接口
10266

10367
| 接口名称 | 接口简介 |
@@ -259,66 +223,6 @@ flowchart TD
259223
+ Σ教室容量加分(按利用率区间)
260224
+ Σ教室类型匹配分(+10或-5)
261225
+ Σ教师偏好分(按偏好级别)
262-
=======
263-
### 4.2 种群评估 (EvaluatePopulationService)
264-
265-
评估每个课程表解决方案的适应度,主要考虑因素包括:
266-
267-
#### 4.2.1 冲突检测:
268-
269-
1. 教师冲突检测​:检查同一教师在同一时间是否被分配多个课程,每发现一处冲突给予100分惩罚
270-
2. 教室冲突检测​:检查同一教室在同一时间是否被分配多个课程,每发现一处冲突给予100分惩罚
271-
3. 班级冲突检测​:检查同一班级在同一时间是否被分配多个课程,每发现一处冲突给予100分惩罚
272-
273-
#### 4.2.2 时间偏好评估
274-
275-
1. ​偏好时间段匹配​:课程被安排在教师/班级的偏好时间段时,每节课+10分
276-
2. ​非偏好时间段惩罚​:课程被安排在教师/班级的非偏好时间段时:
277-
1. 晚上但不期望晚课:每节课-5分
278-
2. 早上但不期望早课:每节课-3分
279-
280-
#### 4.2.3 连续课程优化
281-
282-
1. 连续课程奖励​:对同一班级连续安排2节以上相同课程时,每组连续课程给予(课程数-1)5分的奖励
283-
2. 合理间隔检查​:理论课与实践课之间至少间隔1天,不符合要求每处 -5 分
284-
3.
285-
#### 4.2.4 教室资源优化
286-
287-
1. ​容量匹配度​:计算教室容量利用率:
288-
- 70%-90%:+5分
289-
- 90%:+10分
290-
- 低于70%:-5分
291-
2. 教室类型匹配​:
292-
- 匹配课程需求(如实验室对应实验课):+10分
293-
- 不匹配:-5分
294-
295-
#### 4.2.5 教师偏好满足
296-
297-
根据教师对时间槽的偏好级别进行评分:
298-
299-
- 非常期望的时间段:+10分/节课
300-
- 较期望的时间段:+5分/节课
301-
- 可接受的时间段:+0分
302-
- 尽量避免的时间段:-5分/节课
303-
- 最不期望的时间段:-10分/节课
304-
305-
### 4.2.6 适应度公式
306-
307-
```
308-
适应度 = 基准分(1000)
309-
- (教师冲突数 × 100)
310-
- (教室冲突数 × 100)
311-
- (班级冲突数 × 100)
312-
+ (偏好时间段匹配数 × 10)
313-
- (非偏好晚课数 × 5)
314-
- (非偏好早课数 × 3)
315-
+ (连续课程组数 × (课程数-1) × 5)
316-
- (不合理间隔数 × 5)
317-
+ Σ教室容量加分(按利用率区间)
318-
+ Σ教室类型匹配分(+10或-5)
319-
+ Σ教师偏好分(按偏好级别)
320-
```
321-
>>>>>>> a0ac576bfc02bffdc7c763491dc44dae866af0b6
322226

323227
### 4.3 选择、交叉与变异 (IterateService)
324228

@@ -482,36 +386,19 @@ $$
482386

483387
## 7.算法输出结果
484388

485-
### 7.1 排课结果
486-
487-
<<<<<<< HEAD
488-
=======
489-
## 6 算法输出与结果处理
490-
491-
### 6.1 排课结果
492-
493-
>>>>>>> a0ac576bfc02bffdc7c763491dc44dae866af0b6
494-
系统生成的排课结果包含:
389+
### 7.1 排课结果
495390

496391
- **课程安排列表**:详细的课程安排信息,包括课程、教师、教室、时间等。
497392
- **冲突信息**:如果存在无法避免的冲突,会记录冲突详情。
498393
- **资源利用率**:包括教室利用率、教师工作量分布、时间槽使用率等。
499394

500-
<<<<<<< HEAD
501395
### 7.2 数据持久化
502-
=======
503-
### 6.2 数据持久化
504-
>>>>>>> a0ac576bfc02bffdc7c763491dc44dae866af0b6
505396

506397
- 将排课结果保存到数据库中的课程安排表和教学班表。
507398
- 记录排课过程中的冲突情况,便于管理员后续处理。
508399
- 临时保存排课结果到Redis缓存,支持查看,便于用户查看结果
509-
<<<<<<< HEAD
510-
## 8. 算法优势与特点
511-
=======
512400

513-
## 7. 算法优势与特点
514-
>>>>>>> a0ac576bfc02bffdc7c763491dc44dae866af0b6
401+
## 8. 算法优势与特点
515402

516403
1. **多约束条件支持**:同时处理教师、教室、班级等多种资源约束。
517404
2. **灵活的策略选择**:提供多种排课策略,满足不同场景需求。

0 commit comments

Comments
 (0)