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 遗传算法解决智能排课算法 一天四节课,上午两节,下午两节,同一门课不能相邻,特殊课程不能相邻(语文和英语,数学和科学),求可行方案?相关推荐

  1. matlab 排课,Matlab 遗传算法解决智能排课算法 一天四节课,上午两节,下午两

    Matlab 遗传算法解决智能排课算法 一天四节课,上午两节,下午两 Matlab 遗传算法解决智能排课算法 一天四节课,上午两节,下午两节,同一门课不能相邻,特殊课程不能相邻(语文和英语,数学和科学 ...

  2. 用遗传算法进行智能排课,相信老师会很喜欢

    摘要:遗传算法(Genetic Algorithm)是一种基于自然选择过程,模拟生物进化的AI模型,它可以在模拟的生物进化过程中逐代搜索到最优解的一种方法.本文利用遗传算法实现了一个简单的程序来对课程 ...

  3. 一款没有排课算法的《陈老师排课软件》

    一.当前流行的排课软件都是采用排课算法进行排课 有排课算法的软件大致排课流程: 1.设置每天上午.下午的排课节数,一个周期的上课的天数,一般是分别是五.六.七天. 2.设置开课的班级号.班级数.学校名 ...

  4. 关于排课算法的一点思路总结,方便下次使用

    看了很多网上的资料,如退火,遗传,回溯,学习后自己完成了排课基本上是达到了想要的效果,写一下基本思路方便下次回来看. 我的数据前提比较简单:33个班,88名老师,有老师教多个班多名课多个年级,5天每天 ...

  5. 基于遗传算法解决城市TSP问题

    基于遗传算法解决城市TSP问题 算法原理: TSP是一个组合优化方面的问题,已经成为测试组合优化新算法的标准问题.应用遗传算法解决 TSP 问题,首先对访问城市序列进行排列组合的方法编码,这保证了每个 ...

  6. 广州大学软件方向综合课程设计报告(专业课程数据库系统,模拟一个学期选课退课)带智能排课算法(遗传算法)

    广州大学软件方向综合课程设计目录 序章 第一章 系统需求简介 1.1 需求分析 1.2 数据结构需求分析 1.3系统功能设计 第二章 需求描述 2.1 数据流图 2.2 数据字典 第三章 概念设计 3 ...

  7. 基于遗传算法的排课算法思路

    摘自毕业论文<基于微服务的智能教学质量管理平台的设计与实现> (1)问题描述 课程编排(排课)是平台的核心功能.排课问题被国外专家证明为属于NP完全问题,本质是求出满足一定软硬约束下的教学 ...

  8. python 排课算法_基于遗传算法的排课系统

    摘 要:随着高校的发展,在教务管理系统中使用的排课模型也变得越来越复杂,亟需一种适用于开发.重用及设计的方法.针对这种情况,本文给出了排课问题的数学模型,提出基于遗传算法解决方案.结果表明,该算法能比 ...

  9. 《MATLAB智能算法30个案例》:第8章 基于量子遗传算法的函数寻优算法

    <MATLAB智能算法30个案例>:第8章 基于量子遗传算法的函数寻优算法 1. 前言 2. MATLAB 仿真示例 3. 小结 1. 前言 <MATLAB智能算法30个案例分析&g ...

最新文章

  1. Linux中sftp加权限,Linux 搭建Sftp服务并进行权限设置
  2. deepfakes怎么用_[mcj]deepfakesApp使用说明(1)
  3. java/javascript 时间操作工具类
  4. c51单片机汇编语言电梯,C51单片机汇编语言指令集.doc
  5. python 判断该地址 文件创建时间2020年10月14日14时25分32秒 文件最后一次访问时间 文件最后一次修改时间
  6. php修改ip6地址为ip4,CentOS7 设置静态IPv6/IPv4地址
  7. Flink+Alink,当大数据遇见机器学习! 博文视点Broadview 前天
  8. ADF中在jspx页面加载的阶段添加自己的代码
  9. 封装日期格式化(dataFormat)
  10. android 活动生命,Android 活动生命周期
  11. rtx3050参数 rtx3050相当于gtx什么显卡 rtx3050显卡什么水平
  12. P1002 [NOIP2002 普及组] 过河卒
  13. Self -Supervised Learning
  14. 【Python】什么是递归函数?
  15. docker run --device-write-bps doesn't effect
  16. c语言oj运行时错误,大佬们,帮初入门小菜吧,本地能运行,在oj上运行显示运行时错误...
  17. C语言贪心算法书包问题,贪心算法背包有关问题(帮忙看看看)
  18. (八)以交易为生:交易系统
  19. linux io栈(读写流程)
  20. DedeCms的SEO优化全攻略

热门文章

  1. ArcGIS制图:高考人数统计
  2. 【Unity3D】用鼠标点击事件、AddForce完成跳跃与二段跳
  3. UltraISO9。0 注册码
  4. 笔记一、网络编程入门
  5. wex5萌新使用之 UI2 基础框架一
  6. 如何在VB中添加SysInfo控件
  7. Python之创建文件
  8. 基于Android的名片信息管理系统设计与实现
  9. Kotlin高仿微信-第8篇-单聊
  10. Linux中Crontab(定时任务)命令详解及使用教程