机构教师跑课的数学模型
问题的提出
曾经在机构代课期间担任过排课工作,机构有10几,20个校区,分布在市区内,因为门面小,每个门面都不能保证给老师排满一天甚至或半天。这就需要想出一个科学的办法,既能满足校区的需要,又不能让教师尽量减少劳顿。
问题的解决
1.收集数据
收集各个校区到彼此之间的时间
image2.建立规则
半小时到达设为1,连续三节课(俩个俩节课相连)-1,连续俩节课-0.25,中午连续上课-0.5,中午所有系数-0.25
系数 | 时间 |
---|---|
0.5 | 0-20min |
1 | 20-30min |
1.25 | 30-40min |
1.5 | 40-50min |
1.75 | 50-55min |
2 | 55-65min |
2.25 | 65-75min |
2.5 | 75-90min |
3. 数据汇总
数据汇总4. 时间转系数
根据规则将时间转化为相应系数
Sub 计算()
'将时间转化为系数
Dim WshShell As Object
With Sheet2
a = .Range("A65535").End(xlUp).Row
For i = 2 To a
For j = 2 To a
b = .Cells(i, j)
Select Case b
Case 0
Sheet1.Cells(i, j) = 0
Case 1 To 20
Sheet1.Cells(i, j) = 0.5
Case 20 To 30
Sheet1.Cells(i, j) = 1
Case 30 To 40
Sheet1.Cells(i, j) = 1.25
Case 40 To 50
Sheet1.Cells(i, j) = 1.5
Case 50 To 55
Sheet1.Cells(i, j) = 1.75
Case 55 To 65
Sheet1.Cells(i, j) = 2
Case 65 To 75
Sheet1.Cells(i, j) = 2.25
Case 75 To 90
Sheet1.Cells(i, j) = 2.5
End Select
Next j
Next i
End With
Sheet1.Activate
Set WshShell = CreateObject("Wscript.Shell")
WshShell.popup "系数转化完毕!", 1, "提示", 64
Set WshShell = Nothing
End Sub
转化后时间变为系数
时间转系数5. 系数计算
5.1 实例一
时间 | A | B | C |
---|---|---|---|
A | 0 | 15min | 20min |
B | 15min | 0 | 20min |
C | 20min | 20min | 0 |
因为所有时间都少于30分钟,故系数均为1
系数 | A | B | C |
---|---|---|---|
A | 0 | 1 | 1 |
B | 1 | 0 | 1 |
C | 1 | 1 | 0 |
假设某人的路线如下:
地点 | 系数计算 |
---|---|
A | 第一节课没有跑课系数 |
B | 0.5: A到B时间小于30min |
C | 1: B到C时间小于30min |
C | 0: 原地不动没有距离 |
A | 1: C到A时间小于30min |
总系数为:
连续俩节课-0.25,所有中午系数-0.25,实际总系数为:
除了计算总系数,还要计算平均系数,以避免课程不多,但是非常跑的情况出现。
故总系数为2,平均系数为0.5。既一天付出了2个单位,平均每俩节课之间平均付出0.5个单位。
5.2 实例二
时间 | A | B | C |
---|---|---|---|
A | 0 | 25min | 60min |
B | 25min | 0 | 50min |
C | 60min | 50min | 0 |
根据规则转化系数:
系数 | A | B | C |
---|---|---|---|
A | 0 | 1 | 2 |
B | 1 | 0 | 1.75 |
C | 2 | 1.75 | 0 |
假设某人的路线如下:
地点 | 系数计算 |
---|---|
A | 第一节课没有跑课系数 |
C | 2: A到C时间大于55min小于65min |
B | 上面没有课 |
总系数为:
所有中午系数-0.25,实际总系数为:
因为只有一次(A到C)是跑课过程,所以平均系数为
故总系数为1.75,平均系数为1.75。既一天付出了1.75个单位,平均每俩节课之间平均付出1.75个单位。
虽然实例2比实例1的总系数要低,但是平均值太高,说明这个安排不很合理,课程总量少而跑动很大,应根据教师意愿和个人情况(身体状况,性别等)斟酌安排或者取消。
5.3 实例3
时间 | A | B | C | D |
---|---|---|---|---|
A | 0 | 25min | 60min | 35min |
B | 25min | 0 | 50min | 25min |
C | 60min | 50min | 0 | 35min |
D | 35min | 25min | 35min | 0 |
根据规则转化系数:
系数 | A | B | C | D |
---|---|---|---|---|
A | 0 | 1 | 2 | 1.25 |
B | 1 | 0 | 1.75 | 1 |
C | 2 | 1.75 | 0 | 1.25 |
D | 1.25 | 1 | 1.25 | 0 |
假设某人的路线如下:
地点 | 系数计算 |
---|---|
A | 第一节课没有跑课系数 |
B | 1: A到C时间大于20min小于30min |
C | 1.75: B到C时间大于50min小于55min |
D | 1.25: C到D时间大于30min小于40min |
A | 1.25: D到A时间大于30min小于40min |
总系数为:
所有中午系数-0.25,实际总系数为:
一共跑课4次,平均系数为
故总系数为5.25,平均系数为1.25。既一天付出了5个单位,平均每俩节课之间平均付出1.25个单位。
这种课总消耗高,平均消耗高,所有教师都应该避免
上面通过三个实例,说了三种情况,分别为:
课程安排 | 总系数 | 平均系数 | 新教师 | 老教师 | 吃苦新教师 |
---|---|---|---|---|---|
实例1 | 2(低) | 0.5(低) | ✔️ | ✅ | ⭕️ |
实例2 | 1.75(低) | 1.75(高) | ❎ | ❎ | ⭕️ |
实例3 | 5.25(高) | 1.25(高) | ❎ | ❎ | ❎ |
通过上表可以得出结论:
-
双高课程不推荐任何教师
-
双低教师推荐老教师上,既能提高收入又不至于太累
-
底高课程对于特别有潜力的吃苦的新教师推荐。
吃苦老教师也不推荐上“低高”课程,这会造成老教师心理不平衡,缺乏认同感而离职
- ⭕️表示待定,要根据情况选择
5.4 计算机实现
这里推荐用Microsoft excel公式实现,可以简单实现上述功能随时查看,手机电脑端同步。
5.4.1 将所有情况分类
课程情况 | 系数变化 |
---|---|
只有1,2节课相连 | -0.25 |
1,2且3,4相连 | -1 |
只有1,2,3节课相连 | -1.5 |
只有2,3节课相连 | -0.75 |
1,2且3,4,5节课相连 | -2 |
只有3,4节课相连 | -0.25 |
1,2且4,5节课相连 | -1 |
只有2,3,4节课相连 | -1.5 |
只有4,5节课相连 | -0.25 |
只有3,4,5节课相连 | -1 |
没有任何课相连 | -0.25 |
5.4.2 将系数汇总表放入Excelsheet中待查询,记录为sheet1
5.4.3 输入公式
地点(AR) | 系数计算(AT) | (AU) | (AV) | (AW) |
---|---|---|---|---|
A(11) | AT11 | AU11 | AV11 | AW11 |
B(12) | AT12 | AU12 | AV12 | AW12 |
C(13) | AT13 | AU13 | AV13 | AW13 |
C(14) | AT14 | AU14 | AV14 | AW14 |
A(15) | AT15 | AU15 | AV15 | AW15 |
(16) | AT16 | AU16 | AV16 | AW16 |
AR16: =IF(SUM(AT12:AT15)-AV16<0,0,SUM(AT12:AT15)-AV16)
AT12: =IFERROR(OFFSET(Sheet1!1,MATCH(AR12,Sheet1!2:20,0),MATCH(AR11,Sheet1!2:20,0)),0)
AT13: =IFERROR(OFFSET(Sheet1!1,MATCH(AR13,Sheet1!2:20,0),MATCH(AR12,Sheet1!2:20,0)),0)
AT14: =IFERROR(OFFSET(Sheet1!1,MATCH(AR14,Sheet1!2:20,0),MATCH(AR13,Sheet1!2:20,0)),0)
AT15: =IFERROR(OFFSET(Sheet1!1,MATCH(AR15,Sheet1!2:20,0),MATCH(AR14,Sheet1!2:20,0)),0)
AT16: =IFERROR(AQ16/SUM(AW11:AW15),0)
AU11: =IF(AR11=AR12,IF(AND(AR12<>AR13,AR13<>AR14,AR14<>AR15),0.25,0),0)
AU12: =IF(AR11=AR12,IF(AND(AR12<>AR13,AR13=AR14,AR14<>AR15),1,0),0)
AU13: =IF(AND(AR11=AR12,AR12=AR13),IF(AND(AR13<>AR14,AR14<>AR15),1.5,0),0)
AU14: =IF(AR12=AR13,IF(AND(AR11<>AR12,AR13<>AR14,AR14<>AR15),0.75,0),0)
AU15: =IF(AND(AR13=AR14,AR14=AR15),IF(AND(AR11=AR12,AR12<>AR13),2,0),0)
AU16: =IF(AR13=AR14,IF(AND(AR11<>AR12,AR12<>AR13,AR14<>AR15),0.25,0),0)
AV11: =IF(AR11=AR12,IF(AND(AR12<>AR13,AR13<>AR14,AR14=AR15),1,0),0)
AV12: =IF(AND(AR12=AR13,AR13=AR14),IF(AND(AR11<>AR12,AR14<>AR15),1.5,0),0)
AV13: =IF(AR14=AR15,IF(AND(AR11<>AR12,AR12<>AR13,AR13<>AR14),0.25,0),0)
AV14: =IF(AND(AR13=AR14,AR14=AR15),IF(AND(AR11<>AR12,AR12<>AR13),1,0),0)
AV15: =IF(AND(AR11<>AR12,AR12<>AR13,AR13<>AR14,AR14<>AR15),0.25,0)
AV16: =SUM(AU11:AU16,AV11:AV15)
AW12: =IF(AND(AQ12<>"",AQ11<>""),1,0)
AW13: =IF(AND(AQ13<>"",AQ12<>""),1,0)
AW14: =IF(AND(AQ14<>"",AQ13<>""),1,0)
AW15: =IF(AND(AQ15<>"",AQ14<>""),1,0)
公式部分不做讲解了,表格已经做好了,在百度盘里,进群获得链接
搜素微信号:fanhuadadao110
拉进群分享电子表格