java 遗传算法_遗传算法的java实现 | 学步园

我们来研究一下遗传        首先,遗传算法可以解决很多问题。比如训练神经网络~,本文主要通过下面这个例子来讲解:

假设有10张卡牌,上面数字为1-10,要求将这10张卡牌分为两组,每组5张,第一组的5个数字只和为36,第二组的5个数字之积为360;

当然这个问题也可以通过其他方法求解,这里我们要介绍的是通过遗传算法解决。遗传算法是一种通过模拟自然进化过程搜索最优解的方法。其           计算过程如下:

a)初始化:设置进化代数计数器t=0,设置最大进化代数T,随机生成M个个体作为初始群体P(0)。

b)个体评价:计算群体P(t)中各个个体的适应度。

c)选择运算:将选择算子作用于群体。选择的目的是把优化的个体直接遗传到下一代或通过配对交叉产生新的个体再遗传到下一代。选择操作是建立在群体中个体的适应度评估基础上的。

d)交叉运算:将交叉算子作用于群体。所谓交叉是指把两个父代个体的部分结构加以替换重组而生成新个体的操作。遗传算法中起核心作用的就是交叉算子。

e)变异运算:将变异算子作用于群体。即是对群体中的个体串的某些基因座上的基因值作变动。群体P(t)经过选择、交叉、变异运算之后得到下一代群体P(t 1)。

f)终止条件判断:若t=T,则以进化过程中所得到的具有最大适应度个体作为最优解输出,终止计算。

简单说就是这样子:从解决方案集合中随机选择两个解决方案 ;判断哪个方案的结果更接近想要的结果,表示为成功方案;用成功方案代替失败方案,或者将修改失败方案使之更接近成功方案,形成新的解决方案集合。

代码实现过程是这样子的:首先初始化一个解决方案集合

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值