机构教师跑课的数学模型

2019-08-19  本文已影响0人  Josephx

问题的提出

曾经在机构代课期间担任过排课工作,机构有10几,20个校区,分布在市区内,因为门面小,每个门面都不能保证给老师排满一天甚至或半天。这就需要想出一个科学的办法,既能满足校区的需要,又不能让教师尽量减少劳顿。

问题的解决

1.收集数据

收集各个校区到彼此之间的时间

image
2.建立规则

半小时到达设为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.5+1+0+1=2.5
连续俩节课-0.25,所有中午系数-0.25,实际总系数为:
2.5-0.25-0.25=2
除了计算总系数,还要计算平均系数,以避免课程不多,但是非常跑的情况出现。
2\div4=0.5
故总系数为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+2+0=2
所有中午系数-0.25,实际总系数为:
2-0.25=1.75
因为只有一次(A到C)是跑课过程,所以平均系数为
1.75\div1=1.75
故总系数为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

总系数为:
1+1.75+1.25+1.25=5.25
所有中午系数-0.25,实际总系数为:
5.25-0.25=5
一共跑课4次,平均系数为
5\div4=1.25
故总系数为5.25,平均系数为1.25。既一天付出了5个单位,平均每俩节课之间平均付出1.25个单位。

这种课总消耗高,平均消耗高,所有教师都应该避免

上面通过三个实例,说了三种情况,分别为:

课程安排 总系数 平均系数 新教师 老教师 吃苦新教师
实例1 2(低) 0.5(低) ✔️ ⭕️
实例2 1.75(低) 1.75(高) ⭕️
实例3 5.25(高) 1.25(高)

通过上表可以得出结论:

  1. 双高课程不推荐任何教师

  2. 双低教师推荐老教师上,既能提高收入又不至于太累

  3. 底高课程对于特别有潜力的吃苦的新教师推荐。

    吃苦老教师也不推荐上“低高”课程,这会造成老教师心理不平衡,缺乏认同感而离职

  1. ⭕️表示待定,要根据情况选择

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!A1,MATCH(AR12,Sheet1!A2:A20,0),MATCH(AR11,Sheet1!A2:A20,0)),0)

AT13: =IFERROR(OFFSET(Sheet1!A1,MATCH(AR13,Sheet1!A2:A20,0),MATCH(AR12,Sheet1!A2:A20,0)),0)

AT14: =IFERROR(OFFSET(Sheet1!A1,MATCH(AR14,Sheet1!A2:A20,0),MATCH(AR13,Sheet1!A2:A20,0)),0)

AT15: =IFERROR(OFFSET(Sheet1!A1,MATCH(AR15,Sheet1!A2:A20,0),MATCH(AR14,Sheet1!A2:A20,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

拉进群分享电子表格

上一篇下一篇

猜你喜欢

热点阅读