3月13~19日学习总结
创始人
2025-05-30 15:07:12

关于Jenetics库的学习

这是一个开源的遗传算法库,可以使用maven直接引入的项目中使用方便,而且扩展性好。

在Jenetics中,遗传算法的优化过程主要包括以下步骤:

  1. 初始化种群:生成一组随机的个体作为种群,每个个体代表一种可能的解决方案。

  2. 适应度评估:对于每个个体,计算其适应度(fitness),即其解决方案在问题域中的优劣程度。

  3. 选择:根据适应度,选择出一组优秀的个体,作为繁殖下一代的父母。

  4. 交叉:对于选出的父母个体,通过交叉(crossover)操作,生成新的后代个体。

  5. 变异:对于新生成的后代个体,通过变异(mutation)操作,产生一些变异的后代。

  6. 更新种群:将新生成的后代个体与原有个体进行合并,形成新一代的种群。

  7. 终止条件:检查是否达到了终止条件(如最大迭代次数、收敛性等),如果达到则停止算法,返回最优解。

我们使用Jenetics定制遗传算法的条件就是使用算子。

算子

 是指用于产生新一代个体的操作

Jenetics提供了各种不同的算子,包括选择算子(selection operator)、交叉算子(crossover operator)和变异算子(mutation operator),以便用户可以根据自己的需求来定制算法。

1.选择算子

选择算子用于根据个体的适应度值来选择下一代的个体。Jenetics提供了多种不同的选择算子,包括轮盘赌算子(Roulette Wheel Selection)、排名选择算子(Rank Selection)和竞赛选择算子(Tournament Selection)等。

轮盘赌算子的具体规则

  1. 计算当前种群中所有个体的适应度总和。

  2. 对于每个个体,计算其适应度占适应度总和的比例,得到其选择概率。

  3. 在0到1之间随机生成一个数p,选择第一个满足选择概率之和大于等于p的个体作为父母。

  4. 重复步骤3,选择第二个父母。

  5. 将选出的两个父母作为交叉和变异操作的输入,生成新一代种群。 

优缺点

轮盘赌算子的优点是简单易实现,适用于种群适应度分布比较均匀的优化问题。但是,当种群适应度分布较不均匀时,轮盘赌算子可能会出现早熟(premature convergence)的问题,即算法很快陷入局部最优解而无法发现更好的解决方案。

锦标赛选择(Tournament Selector)是Jenetics中一种常用的选择算子,它模拟了一个个体之间的比赛,通过不断地选出胜者来选择优秀的个体作为父母,进一步产生新一代种群。

锦标赛选择算子的步骤如下:

  1. 随机选择一定数量(通常为2或3)的个体,称为锦标赛选手。

  2. 从锦标赛选手中选择适应度最好的个体作为父母。

  3. 重复步骤1和2,选择第二个父母。

  4. 将选出的两个父母作为交叉和变异操作的输入,生成新一代种群。

对于适应度分布不均匀的算子,使用排名选择算子或者竞赛选择算子比较好

这两种算子的差别是排名选择算子不容易被较差的个体所取代,但是实现复杂,而且性能比较差

竞赛选择算子就是容易实现,性能高,但是会有较差个体被选中的情况。

交叉算子 :用于将两个父母的基因组合并,生成新的后代。Jenetics提供了多种交叉算子,如单点交叉(SinglePointCrossover)、多点交叉(MultiPointCrossover)、均匀交叉(UniformCrossover)等。

比较优秀的是多点交叉。

不容易陷入局部最优解。

实现步骤

  1. 随机选择多个交叉点,该点位于两个父代染色体的相同位置处。

  2. 交换交叉点之间的基因片段,生成两个新的后代染色体。

  3. 将两个新的后代染色体添加到新一代种群中。

对于染色体的解释。

在遗传算法中,染色体(Chromosome)是指一个个体在遗传层面上的表现形式,是由一条线性的DNA序列组成的。染色体的每个位置上都有一个基因(Gene),每个基因可以编码一个特定的特征或参数,比如在优化问题中,基因可以表示一个决策变量的取值。

举例,而在求解排列问题中,可以将每个位置的编号作为基因,并将这些基因随机排列组成染色体的编码。也就是说对于每一种可能的排列结果是作为一个个体,然后对于每一个位置的选择作为基因,这些基因组成了染色体,也就是每个个体。

变异算子(Mutation Operators):用于在基因组中随机改变一些基因,以产生变异的后代。Jenetics提供了多种变异算子,如位变异(BitwiseMutation)、高斯变异(GaussianMutator)等。

交换变异算子

实现步骤

  1. 随机选择两个位置,将它们的基因值进行交换。

  2. 重复以上步骤,直到满足变异概率的要求。

交换变异算子可以增加染色体的多样性,有助于避免陷入局部最优解。需要注意的是,变异概率需要根据具体情况进行设置,通常建议设置为较小的值,以避免变异过度导致优化结果变差。

对于我准备写的排班系统中,准备使用的是锦标赛选择算子,多点交叉算子,交换变异算子。

染色体设计

可以考虑使用多维数组作为染色体来表示,其中每一个维度代表一个班次,每个班次的取值范围为员工的编号。例如,如果有3个班次,6名员工,则可以设计一个3维数组,大小为3 x 7 x 6,其中第一维表示班次,第二维表示星期几,第三维表示员工编号。每个元素的取值为0或1,表示该员工是否在该班次上班。

然后对于偏好值可以设置在偏好时间的基因的权重,来做到让员工尽量在他偏好的工作时间进行工作。

然后就是对于算子的参数设置。

锦标赛选择算子:选择合适的锦标赛选手数量和比例

也就是进行选择的数量和选择出来的比例

 多点交叉:选择合适的交叉点数量和比例

交换变异:变异概率需要根据具体情况进行设置,通常设置为较小的值。

然后设置最大迭代次数为1000次,完成后输出结果。

这就是我准备设计排班遗传算法的思路。

相关内容

热门资讯

奔腾B70怎么样-车主点评-真... 今天给各位分享奔腾B70怎么样-车主点评-真实评价-口碑的知识,其中也会对奔腾b70这车质量到底怎么...
乐驰1.0油耗真实油耗多少(乐... 本篇文章极速百科给大家谈谈乐驰1.0油耗真实油耗多少,以及乐驰10几个油对应的知识点,希望对各位有所...
女人梦见老虎是什么预兆,女人梦... 女人梦见老虎是什么预兆目录女人梦见老虎是什么预兆女人梦到老虎预示着什么意思梦见老虎是什么意思女人梦见...
出门旅游必带的物品有哪些,旅游... 出门旅游必带的物品有哪些目录出门旅游必带的物品有哪些旅游带些什么必备用品出行旅游应该带些什么?出门旅...
数据分析Numpy之布尔索引 布尔数据:只有两种值,即真(True)或假&...
深入理解JVM虚拟机(二) 目录: (1)堆 (2)堆-内...
【Java SE】变量的本质 目录一. 前言二. 变量(variable)2.1 性质2.2 变量类型2.2.1 核心区别2.3 ...
金属的截止频率(红限)是什么,... 金属的截止频率(红限)是什么目录金属的截止频率(红限)是什么极限频率的介绍什么是金属的截止频率光电效...
曾国藩有那七句最著名的名言,曾... 曾国藩有那七句最著名的名言目录曾国藩有那七句最著名的名言曾国藩说过的名言名句。曾国藩的名言曾国藩名言...
二八佳人打一生肖(二八佳人打一... 今天给各位分享二八佳人打一生肖的知识,其中也会对二八佳人打一生肖是什么进行解释,如果能碰巧解决你现在...
水晶底是什么材质,nike 篮... 水晶底是什么材质目录水晶底是什么材质nike 篮球鞋水晶底氧化吗?水晶是什么材料玻璃杯水晶底和烧厚底...
从0开始学python -67 Python3 pip pip 是 Python 包管理工具,该工具提供了对 Pyth...
接入HMS Core应用内支付... 华为HMS Core应用内支付服务(In-App Purchases,I...
怎么用pscs6的路径选择工具... 怎么用pscs6的路径选择工具目录怎么用pscs6的路径选择工具ps如何选择路径ps如何选择路径区域...
电动车后面总是哒哒响asdad... 本篇文章极速百科给大家谈谈电动车后面总是哒哒响asdad1,以及电动车后面总是哒哒响维修视频对应的知...
新起亚K3的CVT耐用吗?起亚... 今天给各位分享新起亚K3的CVT耐用吗?起亚K3七速双离合到底好不好的知识,其中也会对起亚k314t...
职场kpl是什么意思,kpl在... 职场kpl是什么意思目录职场kpl是什么意思kpl在工作中是什么意思?职场kpl是什么意思职场kpl...
那些我在初级程序员阶段犯过的错 学习鉴别,形成习惯,避免犯错我要先说清楚一件事。如果你是一个初级程序员&...
完全小白的pycharm深度学... 完全小白的pycharm深度学习调试+for循环断点条件设置写在最前面基础方法pycharm...
MongoDB增加计算列并修改... 1. 增加、删除列 通过聚合,使用操作符$set增加列;修改结果...
阿里云PAI-DeepRec ... 阿里云联合英特尔举办的“创新大师杯”全球AI极客挑战赛——PAI-DeepRec CTR模型性能优化...
评价老师上课的评语有哪些,对上... 评价老师上课的评语有哪些目录评价老师上课的评语有哪些对上课教师课堂的评价怎样用专业术语评价任课老师讲...
噬血代码ign评分,噬血代码有... 噬血代码ign评分目录噬血代码ign评分噬血代码有缺陷是什么意思IGN评分是什么意思噬血代码能力值怎...
java并发 AQS 什么是AQS? 为什么它是核心?AQS的核心思想是什么? 它是怎么实现的? 底层数据结构等AQS有哪...
长喙的意思长喙解释(长喙的意思... 今天给各位分享长喙的意思长喙解释的知识,其中也会对长喙的意思和拼音进行解释,如果能碰巧解决你现在面临...
广西壮族自治区出租汽车司机崔腿... 今天给各位分享广西壮族自治区出租汽车司机崔腿粗师傅在四十四棵死涩...的知识,其中也会对广西壮族自治...
开发中常用多线程异步操作场景解... 场景一:批量操作,事务控制部分回滚 第一步:创建现场池,注意不同业务场景...
信息系统项目管理师 第2章 信... 1.信息技术及其发展 可分为硬技术(物化技术)传感器、服务器、智能手机、通信卫星和软技术(非物化技术...
【C++】一篇带你搞懂C++“... 前言在C语言的学习中,并没有引用这个概念,但是在C++中...
烧鸡怎么盘,烧鸡的腿怎么塞肚子... 烧鸡怎么盘目录烧鸡怎么盘烧鸡的腿怎么塞肚子里关记烧鸡的做法是什么?大盘烧鸡怎么做烧鸡怎么盘 烧...