排课问题分析摘要:本题要求我们对多约束条件的典型组合进行分析,求解,并作最优化处理。
基于此种原因,我们先对各个元素间的冲突做预处理,进行约束条件的规划,再通过matlab软件将教室、教师、课程和时间间的约束条件统一化,构成R-T-C表(详见附表),再将各个元素进行优先级的计算,从而根据排课的优化模型,求出最优解。
经过对所给的表格,数据的深入分析,我们可以得知,教师明显缺少,比如课程学时要求有160个课时,然而教师能上的课时仅有116个课时,所以开始排课时,不考虑教师,向教师中安排课程。
?由于同类课程最好不要放在一起,同时根据老师的需求和教室的开放时间进行分配,经过与我们实际的课表的排课情况的分析,比如隔一天排同一课,课程类别不同的课程不在同一时间上课,我们可以大致的排出一个按教室上课的表,即R-T-C表。
通过对R-T-C表的分析,发现有很多课没老师上和老师没课上的情况,我们就对其进行相应的,合理的调整。
最后发现还是老师要外聘。
将外聘14名老师去上相应没人上的科目,具体情况见附表。
最后,我们得到了一张相对优化的,以教室为准的课表(详见附表),从而解决问题(1)的要求。
对于我们课表的安排,发现再没对晚自习有其他条件约束是不会对所排的课表有所影响。
关键词:排课问题组合规划多目标函数数据量化优先级一、问题重述对于有课程40门,教师共有25名,教室18间的条件下合理的安排课程表,而课程、教师、教室的具体属性及要求详见附表(表1,表2,表3)对于课表德编排,题目有如下规则:每周以5天为单位进行编排;每天最多只能编排8节课(上午4节,下午4节),特殊情况下可以编排10节课(晚上2节),每门课程以2节课为单位进行编排,同类课程尽可能不安排在同一时间。
要求所要解决的问题:1.请你结合实际情况建立数学模型,通过编程计算,给出较为合理的课表编排方案,分析你所给出的方案的合理性。
2.如果不准晚上排课,排课结果是否有所变化,如何变化?3.对教师聘用,教室配置给出合理化建议。
二、问题分析随着现代教学的改革及各项教育工程的实施,新的教育体制对课表的编排提出了更高的要求。
但现实生活中,排课问题屡屡皆是,小学如此,中学如此,大学更是如此,不仅科目多样,而且教室、老师多变,这使得排课问题往往是很令人费解的。
经过分析,排课问题就是的多资源组合问题,问题的求解就是找出各个元素间的对应关系。
进而将各个元素间的联系进一步确定,转化成一个可以量度其大小的值,从而确定优先级,而我们又将如何确定各元素间的关系,目标函数的确定?根据已有知识可以知道,本题主要分析的是建立一个排课的优化模型。
而它是一个在课程类别、教师编号、教师及时间上的一个四维空间模型,在各种约束条件下的组合规划问题,其实质就是解决各因素间的冲突问题。
在模型建立后,我们有根据什么参量得到排课的最优解。
三、基本假设模型假设:1、学校的教师和教室资源及学生班结构在一个学期内不会有的变动2、所有的教室都在同一个校区,且1~2节课的教室到3~4节课的教室的路程不超过10min3、在一学期内,任课教师身体都非常健康,不存在因病因事缺课的情况4、各种教学资源(课桌、多媒体、机房电脑)在一学期内都不会发生故障,影响上课5、在上课期间,老师、学生都不迟到,不影响上课质量6、当有3个课时时,我们当做2个课时处理,及3节连堂上符号说明: 相关名词解释:时间段效率:经上网查询及对相关资料的查阅,我们得知一天内听课效率最高的是上午8~10,下午1~3,故我们定义上午1~2的听课效率为3,其余见附表。
教室利用率:为充分利用教室资源,我们定义:教室利用率=教室最大容纳量上课总人数,四、问题的分析及模型的建立问题分析(1)从数学角度上讲,本题主要分析建立一个排课模型,而它是一个在课程类别、教师编号、教师及时间上的一个四维空间模型,在各种约束条件下的组合规划问题,其实质就是解决各因素间的冲突问题。
在此为了简化处理,先从课程类别、教室编号入手,建立一个关于C-R 的关系表,再采用化零为整的思路建立我们的目标函数——优化模型,最后,我们根据各因素对排课模型的优先度,求解出排课模型的最优解。
在对问题初始化分析时,我们发现课程类别、教室编号、教师、上课时间存在这么一个对关系:1)1—1的对应关系 2)1—n 的对应关系 3)n —n 的对应关系进而,我们再对它们之间的属性分析,根据它们间的联系求出一种相对合理的排课方案,Rn 教室编号 n=1,2,3….18 Cn 课程类别 n=1,2,3….40 Tn 教师编号 n=1,2,3…..25 Y 外聘外聘教师编号 n=1,2,3…..14 P (T R C ) T 老师在R 教室上C 课 X 1 时间段效率 X 2 教室利用率 X 3教师满意度 D优化级的量度值 W 1 权衡时间段效率参数 W 2 权衡教室利用率参数 W 3 权衡教师满意度参数 Q安排课程的最优值最后,对方案的合理性进行分析。
模型的建立经过分析,我们需将所有课程尽量合理的安排在一个星期内。
首先我们将一个星期划分为五天,记作1、2、3、4、5,将一天分为四个部分,记作1、2、3、4,进而,我们将得到一个5×4的矩阵。
其中,j=1、2、3、4、5分别表示星期一、星期二、星期三、星期四、星期五;i=1、2、3、4分别表示1~2节课、3~4节课、5~6节课、7~8节课。
即有: 我们记作P (T R C )是一个T ×R ×C 维的数列矩阵,表示T 老师在R 教室上C 课, 我们定义P (T R C )=1时,即老师、教室、课程三者都相互符合是记作1 而P (T R C )=0时,即老师、教室、课程三者中有一项不符合记作0 规定:A(TR)表示T 老师到R 教室上了一次课是,即2个节 B(TR)表示T 老师到R 教室上总课时约束条件:1)每一个时间段都不能多于一个老师在一个教室上课,此时应满足的条件是:1)(251∑=≤t TRC P n ∈N (N=1、2、3…25)2)每位老师在每一天不能同时对同一个班上上两次课,3)某位老师在某一间教室上课时,安排的课就该在这间教室排完,此时应满足的条件是: 当一位老师连续两天对同一个班上两次课以上的次数越少、课程安排在听课效率高的时间段次数越多和老师与老师之间的冲突(满意度)次数越少,此时定义:Q=∑∑∑===181401251)(r c t TRC P同时有满足以上的约束条件,Q 将取到最优值,即此时安排的课表最优化排课的预处理1) 同一教师在同一时间内不能安排两门课同一教室在同一时间内不能安排两门课同一时间内安排的课时总数不能大于教室的课时总数 所提供的教室属性安排课程的所需教室属性一致 2) 优化级的计算:考虑到课表的安排是为了按时保量的完成教学任务,而其影响因素有众多,这里我们主要考虑一下三种:1)时间段效率 2)教室利用率 3)教师满意度所以我们对课表的安排原则将依据优先级的大小进行排课。
先对以上三个因素进行量化处理可得到: 时间段效率:上午1~2 上午3~4 下午1~2 下午3~43 0 2 1教室利用率:1~0.8 0.6~0.8 0.4~0.6 0.2~0.43 2 1 0教师满意度:很满意满意一般不满意3 2 1 0我们定义优先级的函数表达式为:D= W1×X1+×X2+ W3×X3其中W1W2W3表示相应参数,可根据实际情况进行调整的通过上式,我们可以很容易得知上课的时间段效率、教室利用率、教师满意度越大,D值就越大即优先级越大,就优先排课;反之,D值越小,优先级就越小,就相对后排课。
通过模型得到的T-R-C表(见附表),再根据优先级的排课,我们可得到一个相对优化的课表:R3教室一周内课程安排星期一星期二星期三星期四星期五上午1-2 C12-T9上午3-4 C18-T24 C18-T24下午1-2 C6-T6下午3-4这里就不一一罗列,其余详见附表。
模型的评价与改进优点:到了一种排课的方法,即将课程表按课时数撤分,再按没门课程的优先顺序依次放入课表中。
在考虑其他因素(某课程只能安排在固定的某时间段上课,教师只在固定时间段安排课程)的情况下,本模型便于进一步发展、完善(只需改变最优解的参数加相应限制就可解决)。
比起目前最相对合理的遗产法简单易懂很多。
缺点:有很多待改进之处,该算法的优先级只是根据经验常识来进行优先级安排课程,具有一定的非科学性,如果能根据一定的科学知识,对课程的优先级进行科学的评定,科学的地算出其优先级系数,再确定其优先级,会具有更好的合理性。
再解题过程中限制条件多,数据量大,过程相对较繁琐。
模型推广本模型有编程优化的模块,但排课表是人为因素较多,也是为了满足课程的安排过程中更人性化。
因此本模型适用于中小规模的排课,其主要限制因素是程序完善度不高,如要进行推广,则必须增加程序的模块,使其更完善,相信改进完善后,即可更科学的实现大规模大排参考文献:[1] 数学建模(上册),成都电子机械高等专科学校,二零一零年三月[2] 数学建模资料——最优化模型.pdf 2010.7[3] 回溯法——2010.7[4] 贪婪法——/view/112297.html?tp=0_10 2010.7[5] 一天的最有听课效率时间段—— 2010.7 附表:表1:教师属性:教师编号能胜任课程类别周最大课时数对教室类别要求上课时间要求尽可能不同天上课的教师T01 1,8 4 多媒体教室或机房上午T4T02 1 4 普通教室下午T03 1 6 普通教室上午T04 2 4 多媒体教室上午T1T05 2 4 普通教室下午T06 2 6 普通教室无T07 3 4 普通教室上午T08 3,8 3 普通教室或机房下午T09 3 4 普通教室上午T11,T18 T10 3 6 多媒体教室上午T11 4 8 普通教室下午T9, T12 4 4 普通教室无T13 4 6 多媒体教室下午T14 5 2 普通教室上午T15 5,8 3 普通教室或机房下午T23 T16 5 4 普通教室上午T17 6 4 普通教室下午T18 6 6 普通教室无T9T19 6 4 多媒体教室下午T20 7 4 普通教室上午T21 7 6 普通教室下午T22 7 6 多媒体教室上午T23 3,8 4 普通教室或机房无T15 T24 4,8 6 普通教室或机房上午T25 6,8 4 普通教室或机房下午表2:课程属性及要求:课程编号课程类别周课时数对教室座位最大要求数对教室类别要求时间要求C01 1 4 50 多媒体教室上午C02 1 4 30 普通教室下午C03 1 6 40 普通教室下午C04 1 4 25 多媒体教室上午C05 1 3 60 普通教室下午C06 2 4 100 普通教室下午C07 2 4 50 多媒体教室上午C08 2 2 30 普通教室上午C09 2 4 40 普通教室下午C10 2 3 25 多媒体教室上午C11 3 6 60 普通教室上午C12 3 4 80 普通教室上午C13 3 6 50 多媒体教室下午C14 3 2 30 普通教室下午C15 3 3 40 普通教室下午C16 4 4 25 多媒体教室上午C17 4 4 60 普通教室下午C18 4 6 90 普通教室上午C19 4 4 50 多媒体教室上午C20 4 2 50 普通教室上午C21 5 4 30 普通教室上午C22 5 4 40 多媒体教室下午C23 5 3 25 普通教室上午C24 5 6 60 普通教室下午C25 5 4 100 多媒体教室上午C26 6 3 50 多媒体教室下午C27 6 4 30 普通教室下午C28 6 4 40 普通教室下午C29 6 4 50 多媒体教室上午C30 6 4 30 普通教室下午C31 7 6 40 普通教室上午C32 7 4 25 多媒体教室下午C33 7 3 60 普通教室无C34 7 4 80 多媒体教室上午C35 7 4 50 普通教室下午C36 8 6 30 机房无C37 8 4 40 机房上午C38 8 2 25 机房上午C39 8 4 60 机房下午C40 8 4 50 机房无表3:教室属性:教室编号最大座位数教室类别R01 100 多媒体教室R02 100 普通教室R03 100 普通教室R04 50 多媒体教室R05 50 普通教室R06 50 普通教室R07 50 普通教室R08 60 普通教室R09 60 普通教室R10 60 多媒体教室R11 60 普通教室R12 60 机房R13 40 机房R14 40 机房R15 40 机房R16 40 多媒体教室R17 50 普通教室R18 40 普通教室表4:T-R-C表课程老师教室容量C1 T1 R(10) 50/60 C2 T2 R(18) 30/40 C3 T3 R(18) 40/40 C4C5C6 T6 R(2)R(3) 100/100 C7 T4 R(4) 50/50 C8 T6 R(18) 30/40 C9 T5 R(18) 40/40 C10C11C12 T7 R(2)R(3) 80/100 C13 T10 R(4)R(16) 50/50 C14 T8 R(18) 40/40 C15 T9 R(18) 40/40 C16 T13 R(16) 30/40 C17 T11 R(8)R(9)R(11) 60/60 C18 T24 R(2)R(3) 90/100 C19 T11 R(5)R(6)R(7)R(17)50/50C20 T12 R(5)R(6)R(7)R(17) 50/50 C21 T16 R(18) 30/40 C22C23C24C25C26 T19 R(4) 50/50C27 T18 R(18) 40/40C28 T17 R(18) 40/40C29C30C31C32C33 T20 R(8)R(9)R(11) 60/60C34 T22 R(1) 80/100C35 T21 R(5)R(6)R(7)R(17)50/50C36C37C38 T15 R(13)R(14)R(15) 25/40C39 T25 R(12) 60/60C40 T23 R(12) 60/60表5:各教室课程安排:R1教室一周内课程安排星期一星期二星期三星期四星期五上午1-2 C34-T22 C34-T22 C25上午3-4 C25下午1-2下午3-4R2教室一周内课程安排星期一星期二星期三星期四星期五上午1-2 C18-T24 上午3-4 C12-T9下午1-2 C6-T6下午3-4R3教室一周内课程安排星期一星期二星期三星期四星期五上午1-2 C12-T9 上午3-4 C18-T24 C18-T24下午1-2 C6-T6下午3-4R4教室一周内课程安排星期一星期二星期三星期四星期五上午1-2 C13-T10 C19-T11 C13-T10 上午3-4 C19-T11下午1-2C26-T19下午3-4R5教室一周内课程安排星期一星期二星期三星期四星期五上午1-2 C21-T16 C35-T21上午3-4 C35-T21 C21-T16 下午1-2 C30 C17-T12 C30 下午3-4R6教室一周内课程安排星期一星期二星期三星期四星期五上午1-2 C31-T21 上午3-4下午1-2 C28-T17 C9-T5 C9-T5 下午3-4 C28-T17R7教室一周内课程安排星期一星期二星期三星期四星期五上午1-2 C8-T6上午3-4下午1-2 C20-T12 C27-T17 下午3-4 C27-T17 C3-T3R8教室一周内课程安排星期一星期二星期三星期四星期五上午1-2 C31上午3-4 C31下午1-2C5 C33-T20下午3-4R9教室一周内课程安排星期一星期二星期三星期四星期五上午1-2 C11 C11 C11上午3-4下午1-2 C24下午3-4 C24 C24R10教室一周内课程安排星期一星期二星期三星期四星期五上午1-2 C1-T1 C29 C29 C7-T4上午3-4 C7-T4 C1-T1下午1-2下午3-4R11教室一周内课程安排星期一星期二星期三星期四星期五上午1-2上午3-4下午1-2 C17-T11 下午3-4 C17-T11R12教室一周内课程安排星期一星期二星期三星期四星期五上午1-2上午3-4下午1-2 C40-T23 C39-T25下午3-4 C39-T25 C40-T23R13教室一周内课程安排星期一星期二星期三星期四星期五上午1-2上午3-4下午1-2 C28-T18下午3-4 C36 C28-T18R14教室一周内课程安排星期一星期二星期三星期四星期五上午1-2 C37上午3-4 C37下午1-2 C36 C36下午3-4R15教室一周内课程安排星期一星期二星期三星期四星期五上午1-2 C38-T24上午3-4下午1-2下午3-4R16教室一周内课程安排星期一星期二星期三星期四星期五上午1-2C10 C16-T13 C4上午3-4 C4 C16-T13 下午1-2 C22下午3-4 C32 C22 C32R17教室一周内课程安排星期一星期二星期三星期四星期五上午1-2上午3-4下午1-2C15-T9 C14-T08 C2-T2下午3-4R18教室一周内课程安排星期一星期二星期三星期四星期五上午1-2C23上午3-4 C8-T6下午1-2 C3-T3下午3-4 C2-T2 C3-T3 C14-T8表6:外聘教师课程安排表:外聘教师课程课时教室时间YT1 C25 4 R1 二34,五12YT2 C30 4 R5 二56,五56YT3 C31 4 R8 一12,三34YT4 C5 3 R8 二123YT5 C11 6 R9 一12,三12,五12YT6 C24 4 R9 一56,三78,五78YT7 C29 4 R10 二12,四12YT8 C36 6 R14 一56,三78,五56YT9 C10 3 R16 一123YT10 C4 4 R16 二34,五12YT11 C22 4 R16 一56,四78YT12 C32 4 R16 二78,五78YT13 C23 3 R18 三123YT14 C37 4 R14 二12,四34程序附录:clear;C=[1 2 2 1 11 2 1 2 -11 3 12 -11 2 1 1 11 2 3 2 -12 2 2 1 12 1 1 2 12 2 1 2 -12 2 1 1 13 3 3 2 13 24 2 13 3 2 1 -13 1 1 2 -13 2 1 2 -14 2 1 1 14 2 3 2 -14 3 4 2 14 2 2 1 14 1 2 2 15 2 1 2 15 2 1 1 -15 2 1 2 15 3 3 2 -15 2 4 1 16 2 2 1 -16 2 1 2 -16 2 1 2 -16 2 2 1 16 2 1 2 -17 3 1 2 17 2 1 1 -17 2 3 2 07 2 4 1 17 2 2 2 -18 3 1 3 08 2 1 3 18 1 1 3 18 2 3 3 -18 2 2 3 0 ];T=[1 8 4 4 1 4 0 1 0 42 -1 0 01 0 62 1 0 02 0 4 1 1 1 0 2 0 4 2 -1 0 02 0 6 2 0 0 03 04 2 1 0 0 3 8 35 -1 0 04 0 8 2 -1 9 04 0 4 2 0 0 04 0 6 1 -1 0 05 0 2 2 1 0 05 8 3 5 -1 23 05 0 4 2 1 0 06 0 4 2 -1 0 06 0 6 2 0 9 06 0 4 1 -1 0 07 0 4 2 1 0 07 0 6 2 -1 0 07 0 6 1 1 0 03 845 0 15 04 8 65 1 0 06 8 4 5 -1 0 0];R=[4 14 24 22 12 22 22 23 23 23 13 23 31 31 31 31 12 21 2];%Rt为教室与老师的关系Rt=zeros(25,18);for i=1:18for m=1:25for n=1:40if R(i,1)>=C(n,3)i1=C(n,1);if T(m,1)==i1||T(m,2)==i1case 1if R(i,2)==1Rt(m,i)=1;endcase 2if R(i,2)==2Rt(m,i)=1;endcase 3if R(i,2)==3Rt(m,i)=1;endcase 4if R(i,2)==1||R(i,2)==3Rt(m,i)=1;endcase 5if R(i,2)==2||R(i,2)==3Rt(m,i)=1;endendendendendendendRt;%Rc为教室与课程的关系Rc=zeros(18,40);for i=1:18for n=1:40if R(i,1)>=C(n,3)&&R(i,2)==C(n,4)Rc(i,n)=1;endendendRc;%Tcfor m=1:25for n=1:40if T(m,1)==C(n,1)||T(m,2)==C(n,1)if T(m,3)>=2*C(n,2)q=T(m,4);t=T(m,5);if C(n,4)==1switch tcase 1if C(n,5)==1Tc(m,n)=1;endcase -1if C(n,5)==-1Tc(m,n)=1;endcase 0if C(n,5)==1||C(n,5)==-1||C(n,5)==0Tc(m,n)=1;endendendcase 2if C(n,4)==2switch tcase 1if C(n,5)==1Tc(m,n)=1;endcase -1if C(n,5)==-1Tc(m,n)=1;endcase 0if C(n,5)==1||C(n,5)==-1||C(n,5)==0Tc(m,n)=1;endendendcase 3if C(n,4)==3switch tcase 1if C(n,5)==1Tc(m,n)=1;endcase -1if C(n,5)==-1Tc(m,n)=1;endif C(n,5)==1||C(n,5)==-1||C(n,5)==0Tc(m,n)=1;endendendcase 4if C(n,4)==1||C(n,4)==3switch tcase 1if C(n,5)==1Tc(m,n)=1;endcase -1if C(n,5)==-1Tc(m,n)=1;endcase 0if C(n,5)==1||C(n,5)==-1||C(n,5)==0Tc(m,n)=1;endendendcase 5if C(n,4)==2||C(n,4)==3switch tcase 1if C(n,5)==1Tc(m,n)=1;endcase -1if C(n,5)==-1Tc(m,n)=1;endcase 0if C(n,5)==1||C(n,5)==-1||C(n,5)==0Tc(m,n)=1;endendendendendendendendTc;%在完全满足的情况下课程选择最优化的老师%Ct说明行代表课程,列代表能上该课的老师编号%if有相同编号的老师那针对该门课程进行求最优值,将值最大的老师放入相应课程中Ct=[1 0 0;2 0 0;0 0 0;1 0 0;2 0 0;5 6 0;4 0 0;6 0 0;5 6 0;4 0 0;0 0 0;7 9 23;0 0 0;8 23 0;23 0 0;0 0 0;11 12 0;24 0 0;0 0 0;12 24 0;16 0 0;0 0 0;16 0 0;0 0 0;0 0 0;19 0 0;17 18 25;17 18 25;0 0 0;17 18 25;0 0 0;0 0 0;0 0 0;22 0 0;21 0 0;0 0 0;1 23 24;1 23 24;23 25 0;23 0 0;];%具体实现Ct1=zeros(40,1);%用于存放最终值%先判断只有一个老师上课的课程for n=1:40for nn=n+1:40if length(Ct(Ct(n,:)~=0))==1if nn~=nfor u=1:3if Ct(n,1)==Ct(nn,u) %判断老师编号相同u1=Ct(n,1);%获取老师编号a1=n;%获取课程号a2=nn;%获取课程号b1=T(u1,3)-2*C(a1,2);%计算老师课时与课程课时的差b2=T(u1,3)-2*C(a2,2);%计算老师课时与课程课时的差if b1<=b2if Ct1(a1)==0Ct1(a1)=u1;endelseif Ct(a2)==0Ct(a2)=u1;endendendif Ct(n,2)==Ct(nn,u) %判断老师编号相同u1=Ct(n,1);%获取老师编号a1=n;%获取课程号a2=nn;%获取课程号b1=T(u1,3)-2*C(a1,2);%计算老师课时与课程课时的差b2=T(u1,3)-2*C(a2,2);%计算老师课时与课程课时的差if b1<=b2if Ct1(a1)==0Ct1(a1)=u1;endelseif Ct(a2)==0Ct(a2)=u1;endendendif Ct(n,3)==Ct(nn,u) %判断老师编号相同u1=Ct(n,1);%获取老师编号a1=n;%获取课程号a2=nn;%获取课程号b1=T(u1,3)-2*C(a1,2);%计算老师课时与课程课时的差b2=T(u1,3)-2*C(a2,2);%计算老师课时与课程课时的差if Ct1(a1)==0Ct1(a1)=u1;endelseif Ct(a2)==0Ct(a2)=u1;endendendendendif length(Ct(Ct(n,:)~=0))~=1if nn~=nfor u=1:3if Ct(n,1)==Ct(nn,u) %判断老师编号相同u1=Ct(n,1);%获取老师编号a1=n;%获取课程号a2=nn;%获取课程号b1=T(u1,3)-2*C(a1,2);%计算老师课时与课程课时的差b2=T(u1,3)-2*C(a2,2);%计算老师课时与课程课时的差if b1<=b2if Ct1(a1)==0Ct1(a1)=u1;endelseif Ct(a2)==0Ct(a2)=u1;endendendif Ct(n,2)==Ct(nn,u) %判断老师编号相同u1=Ct(n,1);%获取老师编号a1=n;%获取课程号a2=nn;%获取课程号b1=T(u1,3)-2*C(a1,2);%计算老师课时与课程课时的差b2=T(u1,3)-2*C(a2,2);%计算老师课时与课程课时的差if b1<=b2if Ct1(a1)==0Ct1(a1)=u1;endelseif Ct(a2)==0Ct(a2)=u1;endendif Ct(n,3)==Ct(nn,u) %判断老师编号相同u1=Ct(n,1);%获取老师编号a1=n;%获取课程号a2=nn;%获取课程号b1=T(u1,3)-2*C(a1,2);%计算老师课时与课程课时的差b2=T(u1,3)-2*C(a2,2);%计算老师课时与课程课时的差if b1<=b2if Ct1(a1)==0Ct1(a1)=u1;endelseif Ct(a2)==0Ct(a2)=u1;endendendendendendendendendCt1;%T-R-C优化[老师教室]TRC=[1 10;%1-32 18;3 18;6 2;%6-94 4;6 18;5 18;7 2;%12-2110 4;8 18;9 18;13 16;11 8;24 2;11 5;12 5;16 18;19 4;%26-2818 18;17 18;20 8;%33-3515 13;%38-4025 12;23 12;];%定义时间片%B[周几上课时间段老师一周几节] B=zeros(26,4);%课程1%课程1B=zeros(10,4,20);n=1;for a=1:5a1=a;for b=1:2b1=b;for n=n+1:20B(1,:,n)=[a1 b1 1 2];breakendendend%课程2n=1;for a=1:5a1=a;for b=3:4b1=b;for n=n+1:20B(2,:,n)=[a1 b1 2 2];breakendendend%课程3n=1;for a=1:5a1=a;for b=3:4b1=b;for n=n+1:20B(3,:,n)=[a1 b1 3 3];breakendendendfor a=1:5a1=a;for b=3:4b1=b;for n=n+1:20 B(4,:,n)=[a1 b1 6 2]; breakendendend%课程7n=1;for a=1:5a1=a;for b=1:2b1=b;for n=n+1:20 B(5,:,n)=[a1 b1 4 2]; breakendendend%课程8n=1;for a=1:5a1=a;for b=1:2b1=b;for n=n+1:20 B(6,:,n)=[a1 b1 6 1]; breakendendend%课程9n=1;for a=1:5a1=a;for b=3:4b1=b;for n=n+1:20 B(7,:,n)=[a1 b1 5 2]; breakend%课程12n=1;for a=1:5a1=a;for b=1:2b1=b;for n=n+1:20 B(8,:,n)=[a1 b1 7 2]; breakendendend%课程13n=1;for a=1:5a1=a;for b=3:4b1=b;for n=n+1:20 B(9,:,n)=[a1 b1 10 3]; breakendendend%课程14n=1;for a=1:5a1=a;for b=1:2b1=b;for n=n+1:20 B(10,:,n)=[a1 b1 8 1]; breakendendend%课程15n=1;for a=1:5a1=a;for b=3:4b1=b;for n=n+1:20 B(11,:,n)=[a1 b1 9 2];endendend%课程16n=1;for a=1:5a1=a;for b=1:2b1=b;for n=n+1:20 B(12,:,n)=[a1 b1 13 2]; breakendendend%课程17n=1;for a=1:5a1=a;for b=3:4b1=b;for n=n+1:20 B(13,:,n)=[a1 b1 11 2]; breakendendend%课程18n=1;for a=1:5a1=a;for b=1:2b1=b;for n=n+1:20 B(14,:,n)=[a1 b1 24 3]; breakendendend%课程19n=1;for a=1:5a1=a;for b=1:2b1=b;for n=n+1:20 B(15,:,n)=[a1 b1 11 2]; breakendendend%课程20n=1;for a=1:5a1=a;for b=1:2b1=b;for n=n+1:20 B(16,:,n)=[a1 b1 12 1]; breakendendend%课程21n=1;for a=1:5a1=a;for b=1:2b1=b;for n=n+1:20 B(17,:,n)=[a1 b1 16 2]; breakendendend%课程26n=1;for a=1:5a1=a;for b=3:4b1=b;for n=n+1:20 B(18,:,n)=[a1 b1 19 2]; breakendendend%课程27n=1;for a=1:5a1=a;for b=3:4b1=b;for n=n+1:20B(19,:,n)=[a1 b1 18 2]; breakendendend%课程28n=1;for a=1:5a1=a;for b=3:4b1=b;for n=n+1:20B(20,:,n)=[a1 b1 17 2]; breakendendend%课程33n=1;for a=1:5a1=a;for b=1:4b1=b;for n=n+1:20B(21,:,n)=[a1 b1 20 2]; breakendendend%课程34n=1;for a=1:5a1=a;for b=1:2b1=b;for n=n+1:20B(22,:,n)=[a1 b1 22 2]; breakendendend%课程35n=1;for a=1:5a1=a;for b=3:4b1=b;for n=n+1:20B(23,:,n)=[a1 b1 21 2]; breakendendend%课程38n=1;for a=1:5a1=a;for b=1:2b1=b;for n=n+1:20B(24,:,n)=[a1 b1 15 1]; breakendendend%课程39n=1;for a=1:5a1=a;for b=3:4b1=b;for n=n+1:20B(25,:,n)=[a1 b1 25 2]; breakendendend%课程40n=1;for a=1:5a1=a;for b=1:4b1=b;for n=n+1:20B(26,:,n)=[a1 b1 23 2]; breakendendend%判断B中同一时间同一教室的情况z=1;for i=1:26i1=i;for n=1:20n1=n;for ii=1:26for iii=ii+1:26for nn=1:20for nnn=nn+1:20if B(ii,1,nn)==B(iii,1,nnn)&&B(ii,2,nn)==B(iii,2,nnn)%判断星期时间段相同if TRC(ii,2)~=TRC(iii,2)%判断教室相同for w=1:B(i1,4,n1)%取出相应for z=z+1:26Q(z,:,w)=B(i1+1,:,n1);%将面包片取出相应个数endendendendendendendendendend。