C# 遗传算法求函数最大值

简介

最近做一个项目要用到人工智能,于是了解了一下神经网络和相关的常用算法,其中遗传算法(Genetic Algorithm,简称 GA)最为有趣,因为我喜欢自然和生物:)
遗传算法基本思想来自于达尔文的进化论和孟德尔的遗传学说,模拟自然选择的过程,生物群落在繁殖的过程中产生基因交叉和突变,优胜劣汰。总体来说是一种带有随机性的启发式算法,可以在整个问题空间搜索,逐步逼近最优解。更详细介绍有很多书籍、论文和网上的文章,这里不再赘述。

关键流程
1.产生初始种群
  上帝创造一批良莠不齐的生物
2.计算适应度
  生物展开生存竞争
3.根据适应度选择交叉
  嘿咻繁殖,越适应环境的产生下一代的概率越大
4.变异
  被雷劈变成超级生物,或者被蜘蛛咬变成蜘蛛侠,极小概率事件 
5.循环 2~4 的过程,直到满足退出条件

经典测试函数


本例计算其在区间 [-1, 2] 上的最大值,采用实数编码、单点交叉、赌轮选择。

 

代码

三个主要类: Defs 包含常量定义, FunctionProblem 求解的问题, Program 启动算法主程序,为简单起见,就不考虑其通用性了。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值