遗传算法的简单应用-求解方程

本文通过遗传算法求解方程-x^3+7*x+13=0在[3,4]区间的解,详细介绍了编码与解码、适应度函数、选择算子、交配算子和变异算子的实现过程,旨在帮助初学者理解遗传算法。" 122168855,11708457,Java反射机制详解与Mybatis字段映射原理,"['java', '后端开发', '反射机制', 'Mybatis', '泛型处理', '注解处理']
摘要由CSDN通过智能技术生成

上篇初识遗传算法讲述了遗传算法的基本思想,这篇博客就用遗传算法求解方程。

具体的如下:

求解方程 -x^3+7*x+13=0 在[3,4]区间的解,解精确到0.001,交叉概率0.7

变异概率0.01,迭代次数为100,字符编码长度为10(二进制编码)

首先简单的分析一下:

1、编码与解码

题目要求的是采用二进制的编码方式来实现,既然已经编码了,自然就需要解码,给定的10

位二进制编码表示的区间范围就是0~1023,题目的区间是[3,4]很自然的就能想到10位二进

制编码中的0表示是就是[3,4]中的3,1023表示的就是[3,4]中的4,所以,每个二进制对应的

十进制就是((10位二进制对应的十进制数/1023)+3),这个就是解码后的在区间[3,4]中的具体值。

2、适应度函数

 这里取的适应度函数是方程绝对值的倒数,即f=1/(|-x^3+7*x+13|)

3、选择算子

确定选择比例,采用轮盘赌算法。

        /// <summary>
        /// 模拟轮盘赌选择算法
        /// 思路:1.求适应度的总和;2.计算每个个体适应度所占的比例(除第一个之外,其他的都是叠加);
        /// 3.在0~1产生随机数,这个随机数所在的区间,就是要选择的个体
        /// </summary>
        /// <returns>选择出来的优秀个体</returns>
        static List<int> RWS(List<double> list)
        {
            List<int> select = new List<int>();
            List<double> p = new List<double>();
            double sum = list.Sum()/*
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值