1、1摘要“信息手段革命”转向“信息内容革命” ,引发了全球性数字校园建设浪潮。在信息时代的今天,计算机参与事业单位日常业务管理以成为事业单位现代化管理的当务之急。随着电脑的普及与使用,现在的管理也提升了一个档次,渐渐实现了无纸化办公,即从原来的人工记录管理模式转变为电脑一体化管理。排课问题是一个 NP-Complete 问题,尤其针对高校的排课一直都没有很好的解决方法,但是此问题又是每个学校在每个学期都会碰到的必要行政作业。本文在相关理论的指导下,在分析以往一些排课软件的基础上,提出一个高校通用排课系统的设计方法,并对一些具体的问题给出相应解决方案。本文介绍了在 Vb 环境下采用 “自上而下地总
2、体规划,自下而上地应用开发”的策略开发一个管理信息系统的过程。该系统采用 VB6.0 作为开发工具,ACCESS2000 作为数据库管理系统。简单介绍了 VB6.0 的编程环境和其数据库编程技术。在可行性研究和需求分析的基础上,对系统的设计方案、功能模块、接口设计、数据库系统设计和安全设计等进行了较详细的论述。该系统遵循先进、经济、安全、高效、可靠、易操作、易维护和开放的设计原则。最后,对课题设计作出客观评价和总结,并对系统的不足之处提出其改进方案和新的构想方案。在论文末,将列出有关的参考文献。关键词:高校;教务;排课;排课系统;专家排课 Abstract“ means revolution
3、of information “ is turned to “ the content revolution of the information “, has caused the global digital campus to build tides . During this information times, combining computers with enterprise usual events management has become an emergent task that every enterprise must accomplish as soon as p
4、ossible.With the popularization and use of the computer, present management has been promoted much, more and more jobs have been done by computer.Course arranging Problem is an NP-Complete Problem, there is no a good solution for this matter of the college. However, it is also a necessary administra
5、tion task for every school in every semester. This essay, with the correlative theorys guidance, on the basis 2of analyzing some courses-arraying software, proposes a design method of commonly used courses arraying information system in college, and solves some of the certain problems.This article i
6、ntroduces the detailed process of exploring a management information system under the environment of Vb, utilizing “Top-Bottom” overall plan and a strategy according to “Bottom-Top” application and exploitation. Then makes a concise description of programmable environment and database technique of V
7、B6.0. Based on feasibility analyzing and system demand analyzing, emphatically expounds design-project、 functional model、interface designing database system designing、 security design in this paper.The MIS of schools magnetic card strictly follows the design principle of security, economy, efficienc
8、y reliability, and easy operating, maintaining and expanding.Finally, the author makes a subjective estimate of his design, and puts forward improving methods and new plans to overcome the shortcomings of the existing system.At the end of this article, references are listed.Key Words: college; teach
9、ing affairs; courses arranging; courses arrangement management system; expert courses-arraying摘要 1Abstract1第 1 章 绪 论 51.1 背景分析 .51.2 意义 .51.3 需求分析 51.3.1 需求 51.3.2 分析 61.4 功能 .71.5 结构 .81.6 算法分析 8161 遗传算法的基本思想 .113162 遗传算法的结构 .12163 遗传算法的基本原理 .15164 遗传算法的收敛性 .15165 遗传算法的性能(在排课中的应用) .16第 2 章 开发语言的介绍
10、212.1 系统开发环境介绍 .212.2 开发语言简介 .212.2.1 Visual Basic6.0 基本概述和特点 212.2 ACCESS 简介 .232.2.1 ACCESS 概述 232.2.2 Access 的启动和退出 .232.2.3 新数据库文件的创建 .252.3 数据库文件的打开及数据库对象 .26第 3 章 系统分析 283.1 可行性研究 .283.1.1 系统可行性分析 .283.2 现行设计方法的优缺点 .303.3 系统需求 .30第 4 章 系统总体设计 314.1 系统功能模块设计 314.3 数据库设计 334.3.1 数据库需求分析 344.3.2
11、数据库逻辑结构设计 364.4 登陆系统流程图 394.5 主界面中课表生成部分流程图 .394.5.1 班级管理流程图 394.2.2 班级课程处理流程图 404.5.3 课表生成部分流程图 424.5.4 报表输出功能 44第 5 章 系统详细设计 455.1 系统流程图 4545.2 创建工程项目 455.3 创建系统的主窗体 455.4 系统管理模块的设计 815.4.1 系统用户管理模块主要实现: 815.4.2 用户登陆窗体的创建 815.4.3 用户管理窗体的创建 845.4.4 日志管理窗体的创建 855.4.5 修改用户密码窗体的创建 865.5 班级管理模块的设计 .865
12、.5.1 辅助功能模块主要实现的功能: 865.5.2 课程类型管理窗体的创建。 865.5.3 年级专业管理窗体的创建 935.5.4 教学时间段窗体的创建。 1015.5.5 班级管理窗体的创建。 1025.5.6 教室管理窗体的创建 1025.5.7 教师管理窗体的创建。 1035.5.8 课程管理窗体的创建。 1035.6 排课管理模块的设计 1045.6.1 排课管理模块主要实现的功能: 1045.6.2 生成课程管理窗体的创建 1045.6.3 手动排课窗体的创建 1055.6.4 自动排课窗体的创建 1055.7 课表管理模块的设计 1065.7.1 课表管理模块主要实现如下功能
13、: 1065.7.2 班级课表窗体的创建 1065.7.3 教师课表窗体的创建 1065.7.4 教室课表窗体的创建 1065.7.5 日期课表窗体的创建 1065.8 关于模块的设计 106结论 108参考文献 1105致谢 112第 1 章 绪 论1.1 背景分析随着信息技术的飞速发展,各个行业的信息化正势在必行。科技的进步大大地提高了生产率。作为高校,如何才能提高办学效率,更好地完成教学任务,跟上社会发展步伐,这是一个摆在教学工作者面前的一个迫切的问题。应用信息化来改造传统的教学管理模式是一个重要途径。近几年来,随着各高校办公自动化工作的推进,教务管理自动化也被摆上了日程。在教务工作中占
14、有很大比重的一项就是每学期的课程表排定工作。由于教工、教室和设备的相对紧张,如何进行合理地安排和分配,从而充分利用教学资源是我们不得不面对的问题。而人工进行排课不仅任务重,效率低,而且易出错,难于维护,想要排出一张各方面都满意的课表非常困难。并且随着高校规模的扩大手工排课的难度和工作量呈几何级数增长。高校通用排课系统正是为了减轻教务人员工作量,实现教务工作自动化,解决排课这一老大难问题的教务办公软件。1.2 意义该系统是一个管理项目,旨在更好地管理高校的教学与资源整合,推动科技成果的推广转化,推进高校改革,提高高校的办学效率。在现有人力管理基础上,结合日渐成熟的当代计算机技术和各种辅助软件,对
15、人力管理模式进行信息化改造,形成高效、便捷的计算机管理模式,是信息化改造传统产业的一个应用。1.3 需求分析1.3.1 需求排课管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以排课管理系统应该能够为用户提供充足的信6息和快捷的查询手段。但一直以来人们使用传统人工的方式管理文件排课,这种管理方式存在着许多缺点,如:效率低、保密性差 ,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一
16、部分,使用计算机对排课信息进行管理,具有着手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高排课管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。因此,开发这样一套管理软件成为很有必要的事情,在下面的各章中我们将以开发一套排课管理系统为例,谈谈其开发过程和所涉及到的问题及解决方法计算机已经成为我们学习和工作的得力助手:今天,计算机的价格已经十分低廉,性能却有了长足的进步。它已经被应用于许多领域,计算机之所以如此流行的原因主要有以下几个方面:首先,计算机可以代替人工进行许多繁杂的劳动;其次,计算机可以节省许多资
17、源;第三,计算机可以大大的提高人们的工作效率;第四,计算机可以使敏感文档更加安全,等等。 在中小学中用计算机管理排课的意义现在我国的中小学校中排课的管理水平还停留在纸介质的基础上,这样的机制已经不能适应时代的发展,因为它浪费了许多人力和物力,在信息时代这种传统的管理方法必然被计算机为基础的信息管理所取代。我作为一个计算机应用的大专生,希望可以在这方面有所贡献。改革的总设计师邓小平同志说过“科学技术是第一生产力“ ,我希望能用我四年的所学编制出一个实用的程序来帮助中小学进行更有效的课程管理。 归纳起来,好处大约有以下几点:1 可以存储历届的排课,安全、高效;2 只需一到二名排课录入员即可操作系统
18、,节省大量人力;3 可以按照录入人员的输入来自动生成课程表,并尽量减少冲突等情况发生。 排课的设计分析根据实际情况,我们使用原型法(Rapid Prototyping)即以少量代价快速地构造一个可执行的软件系统模型。使用户和开发人员可以较快地确定需求,然后采用循环进化的开发方式,对系统模型作连续的精化,将系统需具备的性质逐渐增加上去,直到所有的性质全部满足。此时模块也发展成为最终产品了。71.3.2 分析编程环境的选择微软公司的 Visual Basic 6.0 是 Windows 应用程序开发工具,使目前最为广泛的、易学易用的面向对象的开发工具。Visual Basic 提供了大量的控件,这
19、些控件可用于设计界面和实现各种功能,减少了编程人员的工作量,也简化了界面设计过程,从而有效的提高了应用程序的运行效率和可靠性。故而,实现本系统 VB 是一个相对较好的选择。 关系型数据库的实现Access2000 就是关系数据库开发工具,数据库能汇集各种信息以供查询、存储和检索。Access 的优点在于它能使用数据表示图或自定义窗体收集信息。数据表示图提供了一种类似于 Excel 的电子表格,可以使数据库一目了然。另外,Access 允许创建自定义报表用于打印或输出数据库中的信息。Access也提供了数据存储库,可以使用桌面数据库文件把数据库文件置于网络文件服务器,与其他网络用户共享数据库。A
20、ccess 是一种关系数据库工具,关系数据库是已开发的最通用的数据库之一。如上所述,Access 作为关系数据库开发具备了许多优点,可以在一个数据包中同时拥有桌面数据库的便利和关系数据库的强大功能。 二者的结合(DBA)微软的 JET 数据库引擎提供了与数据库打交道的途径,我们是通过它以及 Visual Basic 来访问数据库并对其进行各种操作。Visual Basic、 Access 以及其他微软的软件产品都是通过共用 JET 数据库引擎,从而给用户提供了丰富的数据类型。当今的微软对数据库中的 ADO 比较注视,并在.net 上使用了 ADO.net 技术,鉴于 ADO 在很多程序里的广泛
21、应用,使用 ADO 来连接数据库将是最为适用的,并且在定义了 ADO 的连接模块后,对于将来的升级也会很方便,只要修改一下连接源,就可以轻松的更换后台。1.4 功能(1) 初始设置模块包括四个子模块,即:备份以前数据、载入以前数据、清除以前数据和清除排课数据;备份以前数据包括:对原有排课数据的备份和对原有课程申请数据的备份;载入以前数据包括:对原有排课数据的载入和对原有课程申请数据的载8入;清除以前数据包括:对原有排课数据的清楚和对原有课程申请数据的清楚;清除排课数据:是对已有排课数据进行清楚以用于新的排课数据的建立。(2) 辅助功能子系统功能;课程类型信息,年级专业信息,日程安排信息,班级信
22、息,教室信息,教师信息和课程信息的添加、删除和修改。(3) 用户管理子系统功能;用户的添加和删除,用户密码的设置和修改,用户权限的设置,用户重新登陆。(4) 课表管理子系统功能;包括班级课表、教师课表、教室课表、日期课表的查询功能实现的操作。(5) 课表管理子系统功能;包括班级课表、教师课表、教室课表、日期课表的查询功能实现的操作。(6)系统管理子系统功能;包括用户管理、日志查看、用户密码的修改和退出系统的功能实现的操作。(7) 排课管理子系统功能;包括课程申请管理,手动排课和自动排课三个子模块;其中最重要的模块就是课程申请管理子模块,它是进行自动排课的依据。1.5 结构本系统主要由两个模块组
23、成。分别是前端的用户管理模块和后端的数据库管理模块。本论文共分为摘要、正文和结尾三大部分。其中正文分为六章。第一章为绪论,第二章为系统需求分析,第三章为系统总体设计,第四章为系统详细设计,第五章为应用程序的测试,第六章为结论。摘要部分简明的概括了系统的内容和功能。最后为参考文献。91.6 算法分析课程表问题又称时间表问题,是一个多因素的整体优化问题。1975 年,S.Even 等人论证了课表问题是 NP 完全类问题。由于课程表问题所涉及的信息较多,并且求解课程表问题最优解的时间复杂性是课程表规模的指数级,所以一般采用求近似最优解的算法。在现实生活中,人们一般也只是要一个满足各种条件的近似最优解
24、,或者说 “满意解” ,而不一定非要最优解不可。因此,对于课程表问题,关键不是如何找到最优解,而是如何提高解的满意度。遗传算法是 John.H.Holland 根据生物进化的模型提出的一种优化算法,它是基于进化过程中的信息遗传机制和优胜劣汰的自然选择原则和搜索算法。它从一个种群开始,利用选择、交叉、变异等遗传算子对种群进行不断进化,最后得到全局最优解或近似最优解。根据其算法特点,遗传算法非常适合于排课表问题。一、问题描述考查课表的约束条件,最基本的要求无外乎这样几个:(一)每个班级在同一时间只能上一门课;(二)每个普通教室和实验室在同一时间只能容纳一个班上课,大教室和操场可以容纳其容量允许的班
25、级数上课;(三)每个教师在同一时间只能在一个地点上课。以上约束,称为硬约束,因为不如此,课表是不可行的。还有一些约束如:某个教师希望或不希望在某个时段上课;自习课和体育课最好不排每天的一二节课;同一门课在一周内的分布尽可能均匀等,这些要求称为软约束,因为它们或者可以通过排课以外的方法,如变更其他事务的日程安排等加以解决;或者只能尽可能满足,而不可能全部满足。满足硬约束的课表是合法的,但却不一定是令人满意的。那么如何提高一个课表的满意度呢?可以请各个教师填一张“时段偏好”表,在每个上课时段上标上相应的数值,以确定他希望或不希望在某个时段上课0 表示不希望,1 表示无所谓,2 表示希望,3 表示强
26、烈希望。并且每个教师根据职称,或职务,或所上课程重要性的不同确定优先级:1,2,3 级逐级递增,这样一张课表的满意度就很好计算了:每个上课时段所对应的上课老师的“时段偏好”值乘以这个老师的优先级的积的总和。10另一个决定课表好坏的度量就是同一门课在一周内的分布尽可能均匀,即课程的分散度。如果该课程一周只上一次,分散度设为 1,如果一次以上,则可以将每次间隔的时段数相乘,因为分布越平均,其乘积就越大。将所有课程的分散度相加即总的课表的分散度。定义适应度函数:适应度满意度分散度。二、遗传算法(一)初始化根据班级信息表以及它与本学期课程信息表的关系,找到每个班的所有课元,再根据这些课元,以及本学期课
27、程表和排课表之间的关系,找到这个班的所有排课元。假设每星期上 5 天课,每天 2 节连上,有 3 个时间段,则每星期有 15 个上课时间段。那么将这 15 个时间段随机地分配给上述某个班的所有排课元,也就是排好了一个班的课表。一个班的“排课元”的数目一定是小于或等于 15 的。如果小于则有时段未排到,即是自习时间。可在“班级信息表”新建一个临时字段“自习” ,记录这些自习时间。再来排教室。给每个班安排一个满足人数要求的教室作为固定教室。一般的课程就在固定教室上,如果是语音课则排语音室,如果是体育课则安排操场,如果是实验课则排实验室。排的时候注意比较该教室的“已排”字段,如与已排时段有冲突,则更
28、换时段。对每个班做上述工作,则排好了一张初始课表。这张初始课表肯定有很多 “硬冲突” ,必须消除。由于排课时已经注意了教室的时段不能冲突,所以只要查看教师的时间有无冲突即可。根据教师信息表与本学期课程信息表的关系,得到每个教师的课元,再根据这些课元,以及本学期课程信息表与排课表的关系得到该教师的所有排课元。检查这些排课元的时段,如有重复,则须调课:首先考虑与自习课调,班级信息表的“自习”字段记录了该班的自习时段。如果这些自习时段都与该老师的上课时间有冲突,则考虑能否用大教室,查看该老师在该时段所上课程的教室要求能否用大教室,如能,统计该老师在该时段的上课班级的总人数,安排一个能容纳这么多学生的
29、大教室。如果大教室方案不能解决问题,则只能和同班的其他老师调换,但注意只能和未检查过冲突的老师换,以免循环调换。(二)建立初始种群11计算消除了硬冲突的课表的适应度函数,记录在数组中。将该排课表考贝到新数据集 ds2。拷贝过来的这个排课表即一个“染色体” 。重复上述过程,直至染色体数目达到种群规模。(三)遗传操作对 ds2 中的每张表做如下操作:1.选择。采用“随机竞争法” 。随机选取两张表,比较它们的适应度,删除适应度小的表,复制适应度大的表替换它。2.变异。设变异概率为m,随机产生一个(0,1)范围内的数,如果小于m,才进行变异操作。随机选取两天,让这两天的时段互换。这样做的好处是不用纠错
30、。3.交叉。类似地,设交叉概率为 Pc,随机产生一个(0,1)范围内的数,如果小于c,才进行交叉操作。这里采用“单点交叉” 。随机选两张表,再随机选取一个序号,让这两张表中这个序号的记录的“上课时段”值互换。互换后这两张表都要纠错,消除硬冲突。过程仿初始化时的消除冲突过程。只是要注意,如果调换的排课元涉及到大教室,须换回所在班的固定教室。重复该过程,注意每一步操作后都要更新适应度数组,使数组值与表一致。迭代 500 代后,选取最大适应度的表传回 ds1 排课表。161 遗传算法的基本思想遗传算法的基本思想正是基于模仿生物界的遗传过程。它把问题的参数用基因代表,把问题的解用染色体代表(在计算机里
31、为字符串),从而得到一个由具有不同染色体的个体组成的群体。这个群体在问题特定的环境里生存竞争,适者有最好的机会生存和产生后代。后代随机化地继承了父代的最好特征,并也在生存环境的控制支配下继续这一过程。群体的染色体都将逐渐适应环境,不断进化,最后收敛到一族最适应环境的类似个体,即得到问题最优的解。值得注意的一点是,现在的遗传算法是受生物进化论学说的启发提出的,这种学说对我们用计算机解决复杂问题很有用,而它本身是否完全正确并不重要(目前生物界对此学说尚有争议)。遗传算法的基础思想是在本世纪 50 年代初,由于一些生物学家尝试用计算机模拟生物系统演化时而提出的。12遗传算法是模拟生物通过基因的遗传和
32、变异,有效地达到一种稳定的优化状态的繁殖和选择的过程,从而建立的一种简单而又有效的搜索方法。它运用随机而非确定性的规则对一族而非一个点进行全局而非局部地搜索,它仅利用目标函数而不要求其导数或其它附加限制,它虽然在特定问题上效率也许不是最高,但效率远高于传统随机算法,是一种普遍适用于各种问题的有效方法。遗传算法的主要思路有:1、繁殖(reproduction):繁殖是根据现有各个体的目标函数值,确定其生存概率,模拟生物界的自然选择,劣者淘汰,适者生存。在遗传算法中,我们人为地保持种群包含的个体总数不变。比较优秀的个体(模型)有较大的生存概率,并可能繁衍,比较差的个体(模型)可能会淘汰。这样产生的
33、下一代的个体,一般都具有较大目标函数值,因而有较大的生存概率。2、交配(crossover):从种群中随机地选择两两一组的双亲,分别随机地交换部分染色体,各自产生两个新染色体。3、变异(mutation):染色体按一定概率(一般很小)可随机地产生变异。遗传算法能够解决的问题不仅限于最优化问题,但无论哪种问题,都要解决两个关键问题:(1)必须能将问题的解答用一组二进制数码表示,即建立解答与二进制数码间的映射(mapping)关系。(2)定义一种对最佳解的定量量度,即适度函数。162 遗传算法的结构霍兰德的遗传算法通常被称为“简单遗传算法”(SGA)。现以此作为讨论对象,分析遗传算法的结构和机理。
34、结合如下的货郎担问题(简记 TSP)分析:设有 n 个城市,城市 i 和城市 j 之间的距离为 d(i,j), i,j=1,.,nTSP 问题是要找遍访每个域市恰好一次的一条回路,且其路径总长度为最短。一、编码与译码许多应用问题结构很复杂,但可以化为简单的位串形式编码表示。13将问题结构变换为位串形式表示的过程叫编码;而相反将位串形式编码表示变换为原问题结构的过程叫译码。我们把位串形式编码表示叫染色体,有时也叫个体。对 TSP 可以按一条回路城市的次序进行编码,比如码串 134567829 表示从城市 1 开始,依次是城市 3,4,5,6,7,8,2,9,最后回到城市 1。一般情况是从城市 w
35、1 开始,依次经过城市 w2,,wn,最后回到城市w1,我们就有如下编码表示:w1 w2 wn由于是回路,记 wn+1= w1。它其实是 1,n 的一个循环排列。要注意 w1,w2 ,,wn 是互不相同的。二、适应度函数为了体现染色体的适应能力,引入了对问题中的每一个染色体都能进行度量的函数,叫适应度函数。通过适应度函数来决定染色体的优、劣程度,体现了自然进化中的优利劣汰原则。对于优化问题,适应度函数就是目标函数。目标函数是指,优化目标与设计变量之间的函数关系式,是所关心的目标(某一变量)与相关的因素(某些变量)的函数关系。目标函数是把优化问题转化成为数学问题,经过分析、研究,抓住主要因素,建
36、立合适的数学模型。例:为了实现增产、增收、提高土地利用率的目的,利用农作物生长的季节差、时间差,把相同或不同类的农作物套种在一起。目标函数是增产增收和提高土地利用率与土地的单位面积农作物收益的总和之间的关系。Smax=f(x1,x2,x3,)TSP 的目标是路径总长度为最短,路径总长度的倒数就可以为 TSP 的适应度函数:请注意其中 wn+1= w1。适应度函数要有效反映每一个染色体与问题的最优解染色体之间的差14距,一个染色体与问题的最优解染色体之间的差距小,则对应的适应度函数值之差就小,否则就大。三、遗传操作 简单遗传算法的遗传操作主要有三种:选择、交叉、变异。选择操作也叫复制操作,根据个
37、体的适应度函数值所度量的优、劣程度决定它在下一代是被淘汰还是被遗传。一般地说,选择将使适应度较大(优良)个体有较大的存在机会,而适应度较小(低劣)的个体继续存在的机会较小。简单遗传算法采用赌轮选择机制,令 fi 表示群体的适应度值之总和,fi表示种群中第 i 个染色体的适应度值,它产生后代的能力正好为其适应度值所占份额 fifi。交叉操作的简单方式是将被选择出的两个个体 P1 和 P2 作为父母个体,将两者的部分码值进行交换。假设有如下八位长的二个体:产生一个在 1 到 7 之间的随机数 c,假如现在产生的是 3,将 P1 和 P2 的低三位交换:P1 的高五位与 P2 的低三位组成数串 10
38、001001,这就是 P1 和P2 的一个后代 Q1 个体;P2 的高五位与 P1 的低三位组成数串 11011110,这就是 P1 和 P2 的一个后代 Q2 个体。其交换过程如下所示:变异操作的简单方式是改变数码串的某个位置上的数码。我们先以最简单的二进制编码表示方式来说明,二进制编码表示的每一个位置的数码只有0 与 1 这两个可能,比如有如下二进制编码表示:其码长为 8,随机产生一个 1 至 8 之间的数 k,假如现在 k=5,对从右往左的第 5 位进行变异操作,将原来的 0 变为 1,得到如下数码串(红色的数字 1 是被变异操作后的):二进制编码表示时的简单变异操作是将 0 与 1 互
39、换:0 变异为 1,1 变异为 0。现对 TSP 的变异操作作简单介绍,随机产生一个 1 至 n 之间的数 k,决定对回路中的第 k 个城市的代码 wk 作变异操作,又产生一个 1 至 n 之间的数 w,替代 wk,并将 wk 加到尾部,得到: w1 w2 wk-1 w wk+1 15wn wk你发现这个串有 n+1 个数码,注意数 w 其实在此串中出现重复了,必须删除与数 w 相重复的,得到合法的染色体。 四、控制参数 并不是所有被选择了的染色体都要进行交叉操作和变异操作,而是以一定的概率进行,一般在程序设计中交叉发生的概率要比变异发生的概率选取得大若干个数量级,交叉概率取 0.6 至 0.
40、95 之间的值;变异概率取 0.001至 0.01 之间的值。种群的染色体总数叫种群规模,它对算法的效率有明显的影响,规模太小不得于进化,而规模太大将导致程序运行时间长。对不同的问题可能有各自适合的种群规模,通常种群规模为 30 至 100。163 遗传算法的基本原理遗传算法类似于自然进化,通过作用于染色体上的基因寻找好的染色体来求解问题。与自然界相似,遗传算法对求解问题的本身一无所知,它所需要的仅是对算法所产生的每个染色体进行评价,并基于适应值来选择染色体,使适应性好的染色体有更多的繁殖机会。在遗传算法中,通过随机方式产生若干个所求解问题的数字编码,即染色体,形成初始群体;通过适应度函数给每
41、个个体一个数值评价,淘汰低适应度的个体,选择高适应度的个体参加遗传操作,经过遗传操作后的个体集合形成下一代新的种群。对这个新种群进行下一轮进化。这就是遗传算法的基本原理。遗传算法思想:(1) 初始化群体;(2) 计算群体上每个个体的适应度值;(3) 按由个体适应度值所决定的某个规则选择将进入下一代的个体;(4) 按概率 Pc 进行交叉操作;(5) 按概率 Pc 进行突变操作;(6) 没有满足某种停止条件,则转第(2)步,否则进入(7);(7) 输出种群中适应度值最优的染色体作为问题的满意解或最优解。16程序的停止条件最简单的有如下 2 种:一是完成了预先给定的进化代数则停止;二是种群中的最优个
42、体在连续若干代没有改进或平均适应度在连续若干代基本没有改进时停止。根据遗传算法思想可以画出简单遗传算法框图164 遗传算法的收敛性一些研究人员对进化算法的运行机理进行过研究,证明了一般的遗传算法不一定收敛,只有每代保存了最优个体时才收敛。在实际应用中,使用了上述结论来保证收敛性。优秀个体保护法就是将每代中的最优个体,直接进入子代,相应淘汰其子代中适应度最差的个体,使种群规模不变。对保存最优个体时遗传算法是收敛的结论的证明是通过对遗传算法构造马尔柯夫(markov)链,因为遗传算法的进行过程是一个马尔柯夫过程。当遗传算法收敛时,求到的解通常只是所要解决问题的最优解的一个近似解,或者叫满意解。从数
43、学分析的角度看,收敛过程是一个无限逼近过程,而计算过程是一个有限自动机,因此通过遗传算法程序求得的解总是一个近似解。165 遗传算法的性能(在排课中的应用)上面指出遗传算法程序求得的解是一个满意解,哪些因素会影响到解的质量?这正是遗传算法的性能问题。首先要注意的是种群的规模要适当,种群规模太小,种群中就没有充分的多样性,不利于适应度值高的染色体的进化,致使算法得不到满意的解。可以认为种群规模大有利于种群的进化,种群健壮发展,但染色体多,每进行一轮进化花费的机器时间就多,致使算法的效率低。适应度函数的构造对遗传算法的性能影响较大,由于适应度是衡量染色体优劣的准则,有时优劣染色体的适应度值没有拉开
44、距离,必要提升优良染色体的适应度值,降低劣弱染色体的适应度值,给优良染色体很多的生存机会,达到提高进化速度的目标。可以结合所求解问题的实际情况对适应度函数作适当的变换,提高选择过程的效率。如下有一个线性变换:17式中 fi 为个体的适应度,fyi 为变换后的适应度值,c1、c2 为常数。C1 和 C2 的选取主要依具体问题的情况而定,并应满足一定的约束条件(例如变换后的适应度值不能是负值等)。适应度函数直接作用到了选择操作,也就是说选择操作的性能主要是由适应度函数来决定,但是怎样运用适应度函数是需要研究的。对遗传算法的性能影响最大的也许是交叉和变异操作。首先是交叉和变异操作并不是都要进行,对某
45、些问题遗传算法求解时其性能主要由交叉操作决定,甚至没有变异操作时,算法的性能更好;而对另外的某些问题遗传算法求解时其性能主要由变异操作决定,甚至不要交叉操作更合适。交叉和变异操作的更重要的是不同的问题要构造一些性能更优的交叉和变异操作,才能保证算法的高效率,构造时往往需要对所要求解的问题进行分析和运用一些经验。例如,TSP 求解时,前面使用的交叉操作使回路中的左边部分的城市改变较大,但对 TSP 来说,对回路中的各个位置应有同等的进行机会,于是有如下改进的交叉操作,将两个被选出的染色体,都随机地分成三段(两个染色体的分法相同) ,再从三段中随机地选取一段在两染色体之间进行交换,形成新染色体。求
46、解 TSP 的变异操作有如下更有效的方式:随机产生 1 和 n 之间的两相异整数 k 和 m,若 km,则将(w1,w2,,wk, wk+1,,wm,,wn)变为: (wm,wm-1,w1,wm+1,wk-1,wn,wn-1,,wk).上述变换方法可简单说成是“逆转中间或者逆转两端” 。这个变异操作针对 TSP 非常适用,仅使用这一个变异操作,不使用18其他的变异操作和任何交叉操作,构造了改进的遗传算法,发现其性能相当不错,在解的质量相当的情况下,花费的总机时少。交叉概率和变异概率选取也是遗传算法的性能影响最大的因素之一,直接影响着收敛速度。我们着重讨论变异概率,变异概率大会扩大搜索范围,使搜
47、索过程不陷入局部极小。但也可能使正朝着最优解缓慢前进的个体改变方向,破坏好个体;变异概率大则对染色体的破坏大,因此常设定一大一小两个变异概率,当整个种群平均适应度增长较快时,使用小变异概率;反之使用较大变异概率。对整个种群使用相同的变异概率,并不利于优良个体的成长和劣个体的改良。回顾遗传算法常使用的收敛准则是每代保留最优个体,这个要求其实也在降低算法的效率,因为将导致一些个体早熟和降低种群的多样性。讨论一个新问题:交叉或变异产生的新个体能否与父个体进行竞争。按简单遗传算法,交叉或变异产生的新个体不论优劣都取代父个体,并不科学。对新个体要有与父个体进行竞争的机会,当父个体比新个体优时,按一定的概
48、率保留父个体而舍去新个体。停止的条件,与解的质量有关系,由于所要解决的问题的最优解预先不知道,就连一个供参考的近似解也不可能有,停止条件就成了一个值得研究的方面。如果按预设的进化代数作停止条件,由于不同的问题的复杂度不同,而且对同一问题构造的遗传操作不同其算法性能不同,因此很难合理地预设一个进化停止代数。另一个常用的停止条件是种群中的最优个体在连续若干代没有改进或平均适应度在连续若干代基本没有改进时,这是一个比较合理的方式,但可能由于构造的算法在进化机制上存在不合理因素,出现进化进程缓慢,或者个别个体早熟,导致过早结束运行,得到一个质量很差的解。 例:遗传算法在试题组卷中的应用自动组卷如何保证
49、生成的试卷能最大程度的满足用户的不同需要,并具有随机性、科学性、合理性,这是实现中的一个难点。尤其在交互式环境下用户对于组卷速度要求较高,而一个理论上较完美的算法可能会以牺牲时间19作为代价,往往不能达到预期的效果。一般来说,用户在自动组卷时会对试卷的质量提出多方面的要求,如总题量、平均难度、题型比例、章节比例、重点章节比例、知识点的交叉与综合等,自动组卷就应最大程度的满足用户的要求。因此,在组卷之前,我们首先为自动组卷过程建立控制指标相应状态空间 D。D 的每一行由某一试题的控制指标组成,如题号、题型、章节、难度等,并且这些属性指标都进行编码表示成二进制形式,而每一列是题库中的某一指标的全部取值。在具体出题时,考方可能不会用到所有的指标,所以 D 包含的个体 d_target 可以表示为 d_request 和 d_void,d_request 表示考方要求的控制指标,d_void 表示考方不要求的控制指标。 考试自动出题的遗传算法如下:(1) 根据考方的出题要求,规划状态空间库 D 中的数据,保留d_request 部分,而不要 d_void 部分,对其剩余部分进行编码 D 1,D2,Di。(2) 初始化试题库STK。随机从