5A版学生建模报告排课问题.docx

上传人:b****6 文档编号:4208005 上传时间:2022-11-28 格式:DOCX 页数:13 大小:63.23KB
下载 相关 举报
5A版学生建模报告排课问题.docx_第1页
第1页 / 共13页
5A版学生建模报告排课问题.docx_第2页
第2页 / 共13页
5A版学生建模报告排课问题.docx_第3页
第3页 / 共13页
5A版学生建模报告排课问题.docx_第4页
第4页 / 共13页
5A版学生建模报告排课问题.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

5A版学生建模报告排课问题.docx

《5A版学生建模报告排课问题.docx》由会员分享,可在线阅读,更多相关《5A版学生建模报告排课问题.docx(13页珍藏版)》请在冰豆网上搜索。

5A版学生建模报告排课问题.docx

5A版学生建模报告排课问题

排课问题

组员:

王小猛20GG1090069

邓威20GG1090081

夏小亮20GG1090067

 

排课问题模型

摘要

本文建立了一个对课程编排的综合优化模型。

它可以解决在众多限制条件下的学校排课问题。

该模型是一个在满足众多限制条件下对教室座位的利用率以及时间资源利用率综合考虑的多目标优化模型。

通过对各个目标进行加权处理,将多目标转化成单目标进行处理,根据不同实际情况,赋予不同的权值而得到不同结果。

该模型的主要优点在于:

①通过考虑教室的利用率使得一个班级的所有课程和课次尽量被安排在同一个教室(即那个容量与该班级人数最为接近的教室,因为此时它的教室利用率最高),这样就使得同一个班级的同一门课程的不同课次尽量被安排在同一个教室,这就满足了题目中的“同一门课的多次授课尽可能在同一教室”的要求;同时也使得同一个班级的不同课程尽量被安排在同一个教室,这样就满足了题目中“将课间的学生流动降到最低限度”的要求;②通过在模型的限制条件中加入同一班级的相临两次授课时间间隔的限制,使得通过该模型制定出来的排课方案满足题目中的“相邻两次授课的间隔尽可能均匀”的要求。

本文中的模型不仅使其规定的目标(教室的座位利用率和时间的利用率)达到最大,还可以根据目标的不同侧重点进行权值修正以适合不同情况下的排课模型。

而且本文中所用到的方法还可推广到其他领域的应用中。

 

关键词:

“单双周上课”:

单周和双周上课的课时不同,其平均课时为题目中所要求的课时。

“班级—课程”:

代表所给数据文件中的一个向量,包含学生班代码,人数,计划要开课程,周用时,多媒体需求,任课教师等信息。

一问题重述

学校的教师和教室资源及学生班结构在一个学期内不会有大的变动。

既定的教学计划必须执行。

所编排的课程表起码应无任何冲突,最好能够对提高教学质量发挥重要作用,即选择“最优”的排课方案。

如:

充分满足各课程对教学条件的要求;相邻两次授课的间隔尽可能均匀;占用的教室个数尽可能少,以空出更多的教室供学生自习或发挥其它利于教学的作用;同一门课的多次授课尽可能在同一教室;将课间的学生流动降到最低限度等等。

教学计划中的课程在周课时数、授课班的规模及所需教学设施等方面有各自的要求;各教室的座位数、教学设施规格有一定差异;有些课程允许几个班的学生合为一个大班听课,有些课程则要求将一个大班分成几个小班;有些教师在一个学期内一人担任着多门课程的教学工作,如此等等。

二模型假设

(1)假设多媒体教室里的多媒体没有损坏。

(2)假设教室在一个学期当中没有其他的安排。

(3)假设教室的座位没有损坏。

(4)假设班级的人数不再改变。

(5)假设教师对上课时间段没有偏好。

(6)假设教室资源足够。

三符号说明

(1):

表示i班在星期j第k时段是否可排课标志,可排课时

=0,不可排课时

=1;

(2):

表示m教师在星期j第k时段是否可排课标志,可排课时

=0,

不能排课时

=1;

(3):

表示n教室在星期j第k时段是否可排课标志,可排课时

=0,

不能排课时

=1;

(4):

表示在第k时间段上课时的效果值效率;

(5);

表示i班的人数; 

(6):

表示j教室座位数;

(7):

表示j教室有没有多媒体的标志,如果有

=1;若没有

=0;

(8):

表示i班h课程是否需要多媒体的标志,需要

=1,不需要是

=0;

(9):

表示i班j课程不同课次之间的间隔(天数)。

四问题分析

通过对各种数据的分析,我们发现最主要的矛盾是:

一是需要多媒体的课程与有多媒体教室之间的矛盾;二是班级的学生数量与教室的座位数之间的矛盾。

因此对需要多媒体的课程安排在座位数大于学生班人数的多媒体教室。

座位数和多媒体两个条件是必须同时满足的。

在此模型中我们主要考虑教室资源和时间资源的利用率,使这两类资源的利用率达到最大。

教室资源的利用率主要是指座位的利用率即上课的人数与该教室的座位的比值,比值越大则利用率越高。

时间资源利用率是指每个时段学生上课的效率和教师上课的效率,关于这一点通过对学生和教师的调查和学校的实际情况我们发现上午的学生学习效率以及教师授课的效率都比较高,而下午上课的效率则比较低。

由于在晚上学生要求自习以及教师可能有备课的需要,因此在晚上我们不排课。

所以在排课时我们尽量将课程排在上午。

对于此问题的解决我们可以对每一个上课时间段赋予权值。

安排在每个时间段的课时与对应的权值的乘积达到最大,即表示时间利用率达到最大。

因此该模型是一个双目标模型,通过实际情况的侧重点我们对这两类目标赋予权值可将其转化为单目标模型。

这样可以降低解模的困难。

对于时间段的划分我们可将其6个时间段上午:

1~2节,3~4节。

下午:

5~6节,7~8节。

晚上9~10节。

对于不排课的时间段,如:

晚上9~10节,下午7~8节,我们将其权值定为0。

上面的时间段我们安排的都是两课时为一时间段。

而我们所用的方法是安排一个星期内的课程,因此对于题目中出现的3课时和5课时课程,我们首先将其处理为4课时和6课时,这样可以很好地将这些课程安排在我们所规定的时间段内。

再用模型中的方法将这些课程排定。

另外为了将课程尽量安排均匀,我们将同一个班的同一门课程之间的间隔加以限制,使其间隔不小于两天。

五模型建立

根据上面的问题分析我们建立以下的优化模型,模型中的

是根据实际情况的时间利用率与资源利用率的权值。

maG(

+

)总资源利用率达到最大。

St:

六 模型求解

在预处理模型中,我们是将班级—课程逐一地安排在适当的位置。

所以对课程安排的顺序不同得到的结果也就不同,所以为了得到理想的结果,我们首先需要对班级—课程进行排序,排序的理想结果是先安排的班级—课程对后面的班级—课程没有影响。

我们采用以下排序规则:

(一):

将所有的班级—课程按照是否有多媒体进行分类,需要多媒体的分为第一类,不需要多媒体的分为第二类;

(二):

将上述两类按照班级人数从大到小进行排序;

按照上述顺序逐一对排课。

最后我们还必须对所排列的班级—课程进行重新的排列。

标准如下:

(一):

对于3课时的课程,若这些课程全部都排在上午,我们则安排单双周上课,即单周上2课时,双周上4课时;或单周上4课时,双周上2课时。

(二):

3课时的课程若有排在下午的,我们则安排下午3节连上。

(三):

对于5课时的课程,则可认为是3+2模式。

(四):

这样单课时都可以得到处理。

 

模型求解

优化处理

举例:

班级-课程:

院系

课程

人数

多媒体

教师

课时

课程代号

数学系

数学分析

120

不需要

王教授

5

1

物理系

普通物理

80

不需要

李教授

4

2

生科系

生物

60

需要

王教授

4

3

计算机

数据结构

90

需要

程教授

3

4

则排课的优先级为:

4,3,1,2;

假如现在只有7501750275037504教室能排课

教室

座位数

是否有多媒体

7501

125

7502

80

7503

90

7504

70

4,3课程只能在7502和7504教室选择,先排4课程(先一周内排2次,后再优化处理),用模型求解;得出他在排的位置和时间;当4课程排定后,则3课程(一周类排2次)就不能与4课程排在同一教室和同一时间上。

以此类推。

若两个课程的教师相同如(1,3课程),则他们就不能排在同一时间上。

七模型的进一步讨论

由于我们用的是对班级一个个地逐步排入教室的方法。

这样有可能会使有些资源的利用率不会达到最大,如多媒体教室的有效使用率、教室的使用率。

有可能使多媒体教室在有些时间段会空闲,而没有减少对多媒体的使用。

同时也会使每一个教室会排上课程,而不会出现全星期或全天都空余的教室供其它的目的所使用,如此等等。

因此,我们可对这所有的因素都排列出来,按照它们实际的侧重点逐个进行加权,以他们组成的函数作为目标,可求出他们最优的配置。

出现这些问题的原因主要是我们对这些问题侧重点的看法不同,我们在考虑这些问题时主要是建立在授课效率这一方面。

本模型没有考虑教师对上课时段的要求,实际中教师可能由于各种原因在某个特定的时段不能安排上课。

对于这个问题我们可对模型中教师进行限制或者加权,可达到目的。

八模型评价

本模型是一个综合优化模型。

它可以解决在众多限制因素以及有限资源等条件限制下的学校排课问题。

该模型采用对班级——课程逐个地逐步排入教室的方法。

易利用类C语言的软件编写程序求解,解决了大规模的非线性优化模型难以求解的问题,实现了对问题的求解。

特别是在多媒体的资源、座位数限制、教师资源、教室资源等方面,我们都有很好的分配方案。

对于其他的限制条件,我们也能使其达到最大限度的满足。

该模型是在满足上述众多限制下的对教室座位的利用率以及时间资源利用率的一个多目标优化模型,还可以根据不同实际情况,如这两类目标的侧重点的不同等,而对它们进行加权,最后得出最优的排课方案。

在求解此模型时,我们首先抓住主要矛盾:

教室是否有多媒体与课程是否需要多媒体之间的矛盾,班级的人数与教室座位数之间的矛盾。

然后再考虑其他的众多限制。

首先有多媒体的教室比较少,限制条件最多,所以将这些课程优先考虑,把这些课程作为第一批进行排课,将不需要多媒体的课程作为第二批排课。

其次,我们将班级的人数按照又大到小进行排序,再按照此顺序逐步安排课程,这样就很好地解决了这两个主要矛盾。

在安排课程时我们是按照每一个课程的资源利用率达到最大,以此为标准来安排每一课程,在排课时就是要使座位的利用率以及时间的利用率达到最大,时间的利用率与排课的顺序无关,而只是教室的座位利用率与班级排课的顺序有关。

而我们是按照上课人数由大到小的顺序进行排课的。

故每一次都是使上课的人数与教室的座位数的差达到最小,因此人数大的班级不会对人数小的班级产生影响;因此每一次排课都会达到最优,任何两门课程之间不会产生任何的影响。

所以总体达到最优。

在计算机给班级安排课程它总是找教室座位数与班级人数最接近的哪一个教室,而教室的顺序是一定的,在其他条件满足的情况下,计算机都会先寻找同一个教室,当条件不满足时计算机再寻找其他的教室,这样就满足了同一班级的同一门课程尽量安排在同一教室的条件,而且同一班级的不同课程也尽量会安排在同一教室,这样也会使课间的流动性达到最小。

本模型不仅可以使规定的目标(教室的座位利用率和时间的利用率)达到最大。

还可满足题目中众多的限制因素。

而且还可推广大其他领域的应用。

附录

(1):

程序

#include"iostream"

#include"time.h"

#include"string"

#include"time.h"

#include"fstream"

#include"cstdlib"

#include"vector"

usingnamespacestd;

typedefstructyizima{

stringbanji;

stringkecheng;

intGingqi;

intshiduan;

intjiaoshi;

stringteacher;

structyizimaGneGt;

}code,Glinklist;

floatfuction(intclassroomcon[27][2],inti,intj,intk,intm,intn,intstnumber)

{floatsum1;

if(k==0)sum1=0.8;

if(k==1)sum1=0.5;

if(k==2)sum1=0.3;

floatsum2;

sum2=(float)stnumber/classroomcon[i][1];

floatsum=sum1+sum2;

returnsum;

}

intclasstime(stringclassname,intj,intk,linklistH)

{

linklistp;

p=H->neGt;

intflag=0;

while(p!

=NULL)

{if(p->banji==classname&&p->Gingqi==j&&p->shiduan==k)

flag=1;

p=p->neGt;}

returnflag;

}

intteachertime(stringjiaoshi,intj,intk,linklistH)

{linklistp;

p=H->neGt;

intflag=0;

while(p!

=NULL)

{if(p->teacher==jiaoshi&&p->Gingqi==j&&p->shiduan==k)

flag=1;

p=p->neGt;}

returnflag;

}

intjiange(stringclassname,stringsubject,intj,linklistH)

{linklistp;

p=H->neGt;

intm;

intflag=0;

while(p!

=NULL)

{

if(p->banji==classname&&p->kecheng==subject)

{m=p->Gingqi-j;

if(m!

=-1&&m!

=1&&m==0)flag=1;

}

p=p->neGt;

}

returnflag;

}

voidmain()

{

ifstreaminfile;

floatfuction(intclassroomcon[27][2],inti,intj,intk,intm,intn,intstnumber);

linklistH,r,p;

intm=0;

floatsumall=0;

inta,b,c;

intflag;

floatsum,sum1;

H=newcode;

H->neGt=NULL;

p=H;

stringclassname;

intstnumber;

stringsubject;

intsubjectnumber;

stringduomiti;

stringjiaoshi;

infile.open("C:

\\问题2的数据.tGt");

intGingqi;

intshiduan;

intclassroom;

intclassroomuse[27][5][3]={0};

intclassroomcon[27][2]={{0,80},{0,80},{0,50},{0,25},{0,25},{0,80},{0,120},{0,50},{1,260},{0,120},{0,25},{0,50},{0,50},{0,120},{0,50},{1,272},{0,25},{0,80},{0,80},{1,120},{1,120},{0,50},{1,120},{0,50},{1,270},{0,80},{0,80}};

for(inte=0;e<161;e++)

{

infile>>classname;

infile>>stnumber;

infile>>subject;

infile>>subjectnumber;

infile>>duomiti;

infile>>jiaoshi;

if(duomiti=="N")

flag=0;

elseflag=1;

m=(subjectnumber+1)/2;

for(intw=0;w

{

sum1=0;

a=0;

b=0;

c=0;

for(inti=0;i<27;i++)

for(intj=0;j<5;j++)

for(intk=0;k<3;k++)

{

if((classroomuse[i][j][k]==0)&&(classtime(classname,j,k,H)==0)&&(stnumber<=classroomcon[i][1])&&(flag<=classroomcon[i][0])&&teachertime(jiaoshi,j,k,H)==0&&jiange(classname,subject,j,H)==0)

{sum=fuction(classroomcon,i,j,k,27,2,stnumber);}

elsesum=0;

if(sum>sum1)

{sum1=sum;

a=i;b=j;c=k;}

}

if(c==0)sumall=sumall+sum1-0.8;

if(c==1)sumall=sumall+sum1-0.5;

if(c==2)sumall=sumall+sum1-0.3;

r=newcode;

p->neGt=r;

r->neGt=NULL;

p=r;

r->banji=classname;

r->kecheng=subject;

r->teacher=jiaoshi;

r->Gingqi=b+1;

r->shiduan=c+1;

r->jiaoshi=a+1;

classroomuse[a][b][c]=1;

}

}

linklistq;

q=H->neGt;

intg=0;

linklistk;

while(q!

=NULL)

{cout<banji<<""<kecheng<<""<jiaoshi<<""<shiduan<<""<Gingqi<<""<teacher<

k=q;

g++;

q=q->neGt;

free(k);

}

floataverage=sumall/g;

cout<<"average="<

infile.close();

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 视频讲堂

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1