遗传算法在组卷中的应用 遗传算法代码

遗传算法代码(遗传算法在组卷中的应用) 。
最近看了之前的项目,是关于用遗传算法实现智能组卷的 。所以这次,我将分享遗传算法的基本原理及其在实际场景中的应用 。
"揭开算法的神秘面纱”
在学习计算机相关知识的时候,我们必然会遇到算法的学习 。我的大学老师说计算机中最有价值的东西是算法 。当时好迷惑,跟着小伙伴跟着数据结构一起刷入门算法题 。以学习算法为目标的同学一定程度上听说过蓝桥杯、ACM等比赛,但相当一部分人并不了解算法的真正应用,所以很迷茫,甚至觉得自己只是来刷算法题参加比赛的 。对于算法的学习,要多做规划,了解算法的实际应用场景,学会如何将常见的题库算法应用到实际场景中,这样才能在算法学习的道路上走得更远 。
【遗传算法在组卷中的应用 遗传算法代码】"遗传算法的基本原理”
在自然界中,人类和动物的进化一般都是朝着好的方向发展的,这叫进化,遗传算法就是基于这一特点而设计的 。换句话说,遗传算法是一种基于达尔文进化论的算法,利用计算机模拟自然选择、适者生存、遗传变异,不断选择优秀个体 。自然界中,生物进化的主要过程包括染色体选择、变异、交叉等 。通过这些操作,可以基本保证下面的个体基本上是最优的 。毕竟只有适应环境的个体才能生存 。因此,只要我们继续按照遗传的原则进化,原则上就总能保持最优 。因此,遗传算法是在一定场景下求解最优解的算法 。
例如,对于动物和植物来说,外观很大程度上是由它们染色体中的基因决定的 。我们可以类似地构建一个模型,将动植物比作由50个方块组成的个体,换句话说,它是由这50个立方体的属性和状态决定的,所以这些立方体可以看作是单个的基因或染色体 。对于单个动植物来说,繁殖是产生新基因的主要途径 。在计算机中,我们用算法模拟这个过程,选择两个原始个体,从两个个体的100个基因中选择50个基因,或者杂交形成新的基因 。还需要定义一个函数来判断个体当时是否满足条件,即个体是否满足环境条件 。这就是健身功能 。
现实自然界中群体进化的影响因素很多,但在算法的设计上,并不一定要面面俱到,而只是一个模拟的过程,可以保证优胜劣汰 。在算法的进化和淘汰过程中,种群数量在种群进化前后会始终保持不变,更方便我们的计算 。进化的目的是让适应条件的个体存在更久,从而模拟适者生存的方式 。
在自然界中,种群的进化是永无止境的,但算法不能这样设计 。需要根据需要解决的问题,设置合理的结束条件 。如果满足其中一个条件,将输出当前的最佳结果,并终止程序 。最常见的终止条件是设置进化次数的上限 。在实际算法中,当由于客观条件无法达到既定的适应度或者适应度没有明显变化时,应考虑终止算法的运行 。如果进化次数上限设置为200,则满足设置条件的个体将被终止,或者达到进化资源网络上限的个体将输出当前最优个体 。基于这种思想,在定义了个体属性和繁殖、适应、变异等相关函数,并设置了终止条件后,就可以定义一个数量相对合适的种群,让它不断进化繁殖,最终会得到一个相对合适的结果 。
用Java代码实现的遗传算法的主要部分如下:

遗传算法在组卷中的应用 遗传算法代码

文章插图
图1基本参数设置代码 。
遗传算法在组卷中的应用 遗传算法代码

文章插图
图2种群进化代码 。
遗传算法在组卷中的应用 遗传算法代码

文章插图
图3基因交叉的代码 。
遗传算法在组卷中的应用 遗传算法代码

文章插图
图5选择更好的个人来实现代码 。
这个资源网络的总体思路是:定义期望基因序列,使用一个包含64位字符的数组,同时初始化种群,定义一个包含50个包含64位随机序列的个体的种群,初始化个体适应度,将个体随机生成的序列与期望序列进行比较,得到个体适应度 。适合度的计算根据不同的终止条件而不同 。种群初始化后,会继续进化,模拟自然界的进化,直到找到符合条件的个体或者在进化上限选出最接近期望的个体 。具体操作是利用定义的淘汰数组选择两个优秀个体,交叉它们,随机产生后代,用资源创建新的种群 。然后根据之前定义的变异概率,种群会发生概率变异,因为这里的个体是01数组,变异方式是随机生成0或1 。手术后,种群完成了第一次进化 。种群迭代进化,直到条件满足,退出终止 。


推荐阅读