首页 > 编程语言 >基于遗传学算法的排课探索实验

基于遗传学算法的排课探索实验

时间:2023-08-07 22:34:10浏览次数:32  
标签:种群 班级 12 迭代 排课 算法 适应度 遗传学

首先模拟了每个班级为: 张三语文(12)、李四数学(12)、王五英语(12)、赵六物理(10)、孙琪化学(9)、李八生物(9)、郑久体育(2) 对2个班级的排课,一周6天,上午4 下午4  晚上3 的一个课程安排

适应度暂时设置了下面4点

1、设置了适应度条件2节课连续上,且不能4节连上(张三语文、李四数学、王五英语、赵六物理、孙琪化学、李八生物)

2、老师每天的一个工作量

3、老师时间冲突

4、班级时间冲突

首选初始化了100个种群,种群迭代100代,交叉算子(0.9)变异算子(0.8)并通过退火算法选择种群适应度交换逻辑(这里只处理了个体优异差异非全局,怕影响性能)

通过代码基础逻辑用控制台输出迭代种群适配都可以看到适配的 190 上升 到 610  的上升趋势(部分细微降低还是局部个体最优造成),当计算到52代时候基本就固定了

  通过上面的迭代遗传计算,最后得到的还是比较适宜的结果,输出班级课表如下:

 

第二次执行:为了验证结果,重新执行了代码看了下种群的适应度保持在了 606 ,与第一次差异不大

 

接下来在执行第三次查看种群的最佳适应度达到 638

 通过上述设定,为了防止不必要的执行和重新执行,设置一个终止条件(比如多少代种群没有进化度)重新择优开始继续迭代,已便达到最接近的最大种群适应度的解

标签:种群,班级,12,迭代,排课,算法,适应度,遗传学
From: https://www.cnblogs.com/liyouming/p/17605411.html

相关文章

  • RMQ问题中的ST算法
    RMQ问题中的ST算法长为n的数组a,m次询问,求l~r中最大值是多少//RMQ问题中的ST算法//m次询问,求l~r中最大值是多少#include<bits/stdc++.h>#defineregregisterusingnamespacestd;//读取输入的函数inlineintread(){ intx=0,f=1; charch=getchar(); while(ch......
  • 单调栈算法
    单调栈算法单调栈,就是一个栈,不过栈内元素保证单调性。即,栈内元素要么从小到大,要么从大到小。//单调栈算法#include<bits/stdc++.h>#defineregregisterusingnamespacestd;//读取输入,并返回一个整数inlineintread(){ intx=0,f=1; charch=getchar(); while(ch<'......
  • 递推算法例题C++
    1、移动路线【题目描述】X桌子上有一个m行n列的方格矩阵,将每个方格用坐标表示,行坐标从下到上依次递增,列坐标从左至右依次递增,左下角方格的坐标为(1,1),则右上角方格的坐标为(m,n)。小明是个调皮的孩子,一天他捉来一只蚂蚁,不小心把蚂蚁的右脚弄伤了,于是蚂蚁只能向上或向右移动。小明......
  • ST算法
    没有修改的区间最值\(O(nlogn)\)预处理\(O(1)\)查询\(f[i][j]\):从\(i\)开始长度\(2^j\)的范围内的最大值预处理是前后两部分合并结果查询的时候从前往后长度\(T\)和从后向前长度\(T\)的两段区间并\(T\)是接近\(r-l+1\)最大的二进制数voidst_pre(){ f......
  • 算法练习-day40
    动态规划309.买卖股票的最佳时机含冷冻期题意:给定一个整数数组prices,其中第  prices[i] 表示第 i 天的股票价格。设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票):卖出股票后,你无法在第二天买入股票(即冷冻期为1天)。注......
  • 算法练习-day39
    动态规划123.买卖股票的最佳时机III题意:给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。实例:思路:由题意可知,我们最多......
  • 文心一言 VS 讯飞星火 VS chatgpt (72)-- 算法导论7.1 3题
    三、请简要地证明:在规模为n的子数组上,PARTITION的时间复杂度为Θ(n)。文心一言:首先,我们需要明确PARTITION函数的具体定义。PARTITION函数通常用于快速排序算法中,它将一个数组分为两个子数组,使得一个子数组的所有元素都小于另一个子数组的所有元素。PARTITION函数的基本过程是:1......
  • 算法练习-day38
    动态规划121.买卖股票的最佳时机题意:给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中......
  • Redis精通系列——LFU算法详述(Least Frequently Used - 最不经常使用)
    转:Redis精通系列——LFU算法详述(LeastFrequentlyUsed-最不经常使用)  ......
  • 代码随想录算法训练营第十一天| 20. 有效的括号 1047. 删除字符串中的所有相邻重复项
    20.有效的括号    卡哥建议:讲完了栈实现队列,队列实现栈,接下来就是栈的经典应用了。 大家先自己思考一下 有哪些不匹配的场景,在看视频 我讲的都有哪些场景,落实到代码其实就容易很多了。   题目链接/文章讲解/视频讲解:https://programmercarl.com/0020.%E6%9C%8......