Matlab 遗传算法解决智能排课算法 一天四节课,上午两节,下午两节,同一门课不能相邻,特殊课程不能相邻(语文和英语,数学和科学),求可行方案?
1、要排课的课程有9门,分别给与编码1,2,3,4,5,6,7,8,9。对应的一周上课次数如下所示:
课程名 | 编码 | 一周上几次 |
Chinese | 1 | 3 |
English | 2 | 3 |
Math | 3 | 3 |
Science | 4 | 3 |
Social | 5 | 2 |
Steam | 6 | 2 |
PE | 7 | 2 |
选修1 | 8 | 1 |
选修2 | 9 | 1 |
2、一周五天上课,每天上午上2节,下午上2节,一共上20节课。将9门课按照顺序给与上课的编码1~20,结果如下所示:
上课编码 | 课程名 |
1 | Chinese |
2 | Chinese |
3 | Chinese |
4 | English |
5 | English |
6 | English |
7 | Math |
8 | Math |
9 | Math |
10 | Science |
11 | Science |
12 | Science |
13 | Social |
14 | Social |
15 | Steam |
16 | Steam |
17 | PE |
18 | PE |
19 | 选修1 |
20 | 选修2 |
3、染色体编码:随机生成1~20的排列,及对应一周五天的排课情况。
4 3 19 10 9 8 11 15 20 2 1 7 17 14 13 16 5 6 18 12
3 11 19 17 8 18 9 2 10 16 20 5 13 7 12 4 15 1 14 6
4 1 17 20 3 11 7 5 6 19 12 8 10 15 18 9 16 2 13 14
3 18 12 8 15 7 4 2 16 6 14 1 20 17 5 19 11 10 13 9
20 14 10 6 3 19 16 9 4 11 18 15 12 1 5 2 17 8 7 13
2、计算总代价,适应度值取总代价的倒数。
考虑以下两种约束:
1、一天中同一门课上课次数不超过2次。
2、每天统计相邻的同种类型课程情况统计和特殊课程之间相邻的情况,若都等于0,则选排课课成功,
否则将统计次数乘以1000进行约束。
3、一旦排课成功后就记录对应的染色体序列到Result中,将Result 变成全局变量,全局不断更新其内容。
4、将Result中结果复制到excel中,解码成对应的课程名,并编制不同方案的课程表,结果如下所示。
温馨提示:源码是本人亲自编写完成,经过测试结果正确无误,其他约束也可以加入考虑。源码感兴趣的朋友欢迎加qq 2545724522 互相学习交流进步,谢谢!
Matlab 遗传算法解决智能排课算法 一天四节课,上午两节,下午两节,同一门课不能相邻,特殊课程不能相邻(语文和英语,数学和科学),求可行方案?相关推荐
- matlab 排课,Matlab 遗传算法解决智能排课算法 一天四节课,上午两节,下午两
Matlab 遗传算法解决智能排课算法 一天四节课,上午两节,下午两 Matlab 遗传算法解决智能排课算法 一天四节课,上午两节,下午两节,同一门课不能相邻,特殊课程不能相邻(语文和英语,数学和科学 ...
- 用遗传算法进行智能排课,相信老师会很喜欢
摘要:遗传算法(Genetic Algorithm)是一种基于自然选择过程,模拟生物进化的AI模型,它可以在模拟的生物进化过程中逐代搜索到最优解的一种方法.本文利用遗传算法实现了一个简单的程序来对课程 ...
- 一款没有排课算法的《陈老师排课软件》
一.当前流行的排课软件都是采用排课算法进行排课 有排课算法的软件大致排课流程: 1.设置每天上午.下午的排课节数,一个周期的上课的天数,一般是分别是五.六.七天. 2.设置开课的班级号.班级数.学校名 ...
- 关于排课算法的一点思路总结,方便下次使用
看了很多网上的资料,如退火,遗传,回溯,学习后自己完成了排课基本上是达到了想要的效果,写一下基本思路方便下次回来看. 我的数据前提比较简单:33个班,88名老师,有老师教多个班多名课多个年级,5天每天 ...
- 基于遗传算法解决城市TSP问题
基于遗传算法解决城市TSP问题 算法原理: TSP是一个组合优化方面的问题,已经成为测试组合优化新算法的标准问题.应用遗传算法解决 TSP 问题,首先对访问城市序列进行排列组合的方法编码,这保证了每个 ...
- 广州大学软件方向综合课程设计报告(专业课程数据库系统,模拟一个学期选课退课)带智能排课算法(遗传算法)
广州大学软件方向综合课程设计目录 序章 第一章 系统需求简介 1.1 需求分析 1.2 数据结构需求分析 1.3系统功能设计 第二章 需求描述 2.1 数据流图 2.2 数据字典 第三章 概念设计 3 ...
- 基于遗传算法的排课算法思路
摘自毕业论文<基于微服务的智能教学质量管理平台的设计与实现> (1)问题描述 课程编排(排课)是平台的核心功能.排课问题被国外专家证明为属于NP完全问题,本质是求出满足一定软硬约束下的教学 ...
- python 排课算法_基于遗传算法的排课系统
摘 要:随着高校的发展,在教务管理系统中使用的排课模型也变得越来越复杂,亟需一种适用于开发.重用及设计的方法.针对这种情况,本文给出了排课问题的数学模型,提出基于遗传算法解决方案.结果表明,该算法能比 ...
- 《MATLAB智能算法30个案例》:第8章 基于量子遗传算法的函数寻优算法
<MATLAB智能算法30个案例>:第8章 基于量子遗传算法的函数寻优算法 1. 前言 2. MATLAB 仿真示例 3. 小结 1. 前言 <MATLAB智能算法30个案例分析&g ...
最新文章
- Linux中sftp加权限,Linux 搭建Sftp服务并进行权限设置
- deepfakes怎么用_[mcj]deepfakesApp使用说明(1)
- java/javascript 时间操作工具类
- c51单片机汇编语言电梯,C51单片机汇编语言指令集.doc
- python 判断该地址 文件创建时间2020年10月14日14时25分32秒 文件最后一次访问时间 文件最后一次修改时间
- php修改ip6地址为ip4,CentOS7 设置静态IPv6/IPv4地址
- Flink+Alink,当大数据遇见机器学习! 博文视点Broadview 前天
- ADF中在jspx页面加载的阶段添加自己的代码
- 封装日期格式化(dataFormat)
- android 活动生命,Android 活动生命周期
- rtx3050参数 rtx3050相当于gtx什么显卡 rtx3050显卡什么水平
- P1002 [NOIP2002 普及组] 过河卒
- Self -Supervised Learning
- 【Python】什么是递归函数?
- docker run --device-write-bps doesn't effect
- c语言oj运行时错误,大佬们,帮初入门小菜吧,本地能运行,在oj上运行显示运行时错误...
- C语言贪心算法书包问题,贪心算法背包有关问题(帮忙看看看)
- (八)以交易为生:交易系统
- linux io栈(读写流程)
- DedeCms的SEO优化全攻略