仿生算法
仿生算法是什么?
什么是仿生?
蜜蜂会造房子,人类就学习蜜蜂盖房子的方法,之后便有了航空建造工程的蜂窝结构。

仿生是模仿生物系统的功能和行为,来建造技术系统的一种科学方法。
生活仿生作品
现代的飞机(减少阻力的外部形体)、模仿蜘蛛的爬山越野汽车、雷达系统的电子娃眼、航海的声呐系统、人工肾及人工心脏等,都是仿生的结晶。
是人类模仿生物的功能与行为进而总结出来用于解决问题的方法。
通常通过模拟自然生物进化或者群体社会行为来进行随机搜索。
适用于传统算法难以解决的大规模复杂优化问题。
仿生算法举例
模仿生物进化的遗传算法
模仿蚂蚁寻路的蚁群算法
模仿神经网络系统的人工神经网络
仿生算法和一般算法的区别?
一般算法
基于经验或者已知的规则,针对特定的输入能够计算出确定的输出结果
仿生算法
模仿生物的功能与行为
通过大量演变来逼近结果,演变方法是自然法则:优胜劣汰,适者生存
仿生算法是一类模拟自然生物进化或者群体社会行为的随机搜索方法的统称
人们借用大自然界中生物的优势,制作出各种各样的科技发明,使我们的生活更加方便

基因遗传算法
基因遗传算法是什么?
该算法与大自然遗传规律是一样的吗?
应用基因遗传算法可以做哪些事?

遗传算法是一种受达尔文自然进化理论启发的搜索启发式算法。
该算法反映了自然选择的过程,其中选择最适合的个体进行繁殖下一代。

自然选择的概念:
自然选择的过程始于从群体中选择最适合的个体。
如果父母能很好的适应环境,就更容易存活并产生下一代。
他们的后代将继承父母的特征,并继续影响下一代。这个过程不断迭代,最后存活的都是最适应环境的。

搜索问题中的自然选择
自然选择的概念可以应用于搜索问题
我们考虑问题时,从一个一般的解决方案入手,不断优化成一组最好的解决方案。

基因遗传算法的组成
编码(初始化),适应度函数,选择,交叉,变异
编码->老祖先的诞生
适应度函数->物种适应环境的判断条件
选择、变异、交叉->自然选择与遗传变异
(突变与基因重组)

基因遗传算法的应用
函数优化、组合优化
优化是通过改变参数来最大化或最小化目标函数。
所有可能解(参数值)的集合构成搜索空间中,有一组点是最佳解决方案,优化的目的就是在搜索空间中找到这样一组点。

遗传算法的优缺点
优点 全局搜索性强
缺点 计算量大 具有随机性,无法确保解决方案一定最优
总结
基因遗传算法和自然界遗传法则一样 需要从一个厨师种群出发经过进化,利用适应度函数最终得到最优解。

实例3:拼图游戏
如何用遗传算法模拟扇贝的经历?
用若干个三角形拟合成一个图案

除了利用随机三角形生成图标,还可以利用遗传算法完成拼图

原理 与自然界进化一样,要设立一个淘汰机制且不断提高标准,淘汰掉不符合标准的。
总结:用三角形拟合图案是应用遗传算法的一个实例。覆盖基因,遗传,变异,选择等方面。

拼图的基因
生物基因
基因:生物遗传的基本单位
在一个生物的任何一个细胞中,都有着相同的一套染色体。染色体中决定生物各种形状的就是基因(DNA片段)
个体的遗传信息包括若干条染色体
每条染色体中有若干个基因
每个基因都编码了一个独特的性状

确定一个三角形的因素有哪些?
颜色 位置:三个顶点坐标 透明度
颜色-->三原色
位置-->三个顶点坐标(X,Y)
透明度-->(0~100%)
随机生成一系列的坐标值、颜色值,将这些值组合成一个个随机的三角形
每128个三角形形成一个初始的个体作为遗传算法的最初父代。

遗传和变异
有了父代之后,我们需要通过父代繁衍获得新的子代

遗传
复制:基因复制
交叉:基因自由组合、交叉变换
没有产生新的基因
复制
目的:保留父代的
方式:将基因原封不动的复制给子代
交叉
将来自于父母双方的基因组合在一起,得到新的子代

变异
由基因突变产生新的基因
已有的基因可能不是最优的基因

对于现有的父类,可以选择直接遗传继承,也可以选择交换某些三角形进行交叉。
将某个父类中的部分三角形进行变异
完全随机变异
或在原有基础上进行稍微改变

控制变异的概率
自然界生物变异的概率是不确定的
对于三角形可以桐微调不同变异方式的概率,来获得更好的求解效果。

总结
遗传是直接得到来自父代的性状;变异是随机改变来自父代的性状。父代通过遗传和变异来生成新的子代。

自然选择
达尔文提出的关于生物进化机理的自然选择学说。
在不断变化的生活条件下,具有有利变异的个体则逐渐被淘汰。

大自然靠什么选择优良物种?
长颈鹿 脖子长度
豹子 奔跑速度

适应度函数
脖子长度、奔跑速度都是一个参数我们可以利用适应度函数表示参数值的大小,判断个体是否应该被淘汰。

图片的适应度
要用三角形拼成图片,改如何计算适应度
图片是由一系列像素点构成的
对于每个像素点三个颜色通道分别计算当前图像A与目标图像B的差值。
将这个差值平方相加作为适应度函数,值越小适应度越高。
f=(a1-b1)²+(a2-b2)²+(a3-b3)²

判定与淘汰
有了适应度函数 我们就能够代替大自然去决定哪一代保留,哪一代被淘汰
如果子代适应度高于父代适应度,则子代取代父代,反之子代被淘汰

终止条件
当适应度函数值小于一定阈值
或则循环迭代的次数超过一定的限制
遗传算法终止,所得到的最好后代即是我们要找的最优解

总结
我们将当前图片与目标图片的差异量化为适应度函数。模拟自然选择的过程,适应度的高低来决定某一代结果的淘汰与生存。

基于仿生算法的智能系统I的更多相关文章

  1. 判断用户输入的银行卡号是否正确--基于Luhn算法的格式校验

    开发中,有时候,为了打造更好的用户体验,同时减轻服务器端的压力,需要对于一些如,手机号码,银行卡号,身份证号码进行格式校验 下面是判断银行卡号输入是否正确的代码(基于Luhn算法的格式校验): iOS ...

  2. #研发解决方案#基于Apriori算法的Nginx+Lua+ELK异常流量拦截方案

    郑昀 基于杨海波的设计文档 创建于2015/8/13 最后更新于2015/8/25 关键词:异常流量.rate limiting.Nginx.Apriori.频繁项集.先验算法.Lua.ELK 本文档 ...

  3. 基于DES算法加密的防撞库密码系统项目总结

    项目内容:基于DES算法加密的防撞库密码系统 小组名:zqhzkzkj 目标:1.对用户输入的8位字符进行DES加密,要求用户输入8位密钥 2.对于不同的网站,不同的用户名生成不同的密码 小组成员:周 ...

  4. 陕西中际现代:基于自适应算法的PLC滴灌控制系统

    基于自适应算法的PLC滴灌控制系统 陕西中际现代包装科技有限公司滴灌部 1.介绍 水资源正在成为一种珍贵的资源.城镇的市民使用成千上万立方的水来浇灌花园和绿地.他们依赖于使用固定灌溉计划的控制器.而这 ...

  5. 【转】基于RSA算法实现软件注册码原理初讨

    1 前言 目前,商用软件和共享软件绝大部份都是采用注册码授权的方式来保证软件本身不被盗用,以保证自身的利益.尽管很多常用的许多软件系统的某些版本已经被别人破解,但对于软件特殊行业而言,注册码授权的方式 ...

  6. 基于Zlib算法的流压缩、字符串压缩源码

    原文:基于Zlib算法的流压缩.字符串压缩源码 Zlib.net官方源码demo中提供了压缩文件的源码算法.处于项目研发的需要,我需要对内存流进行压缩,由于zlib.net并无相关文字帮助只能自己看源 ...

  7. 基于MMSeg算法的中文分词类库

    原文:基于MMSeg算法的中文分词类库 最近在实现基于lucene.net的搜索方案,涉及中文分词,找了很多,最终选择了MMSeg4j,但MMSeg4j只有Java版,在博客园上找到了*王员外*(ht ...

  8. 基于Apriori算法的Nginx+Lua+ELK异常流量拦截方案 郑昀 基于杨海波的设计文档(转)

    郑昀 基于杨海波的设计文档 创建于2015/8/13 最后更新于2015/8/25 关键词:异常流量.rate limiting.Nginx.Apriori.频繁项集.先验算法.Lua.ELK 本文档 ...

  9. R语言︱情感分析—基于监督算法R语言实现(二)

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 笔者寄语:本文大多内容来自未出版的<数据 ...

随机推荐

  1. WorkerServices构建Windows服务

    .NET Core 3.1和WorkerServices构建Windows服务 介绍 ASP.NET Core 3增加了一个非常有意思的功能Worker Service.他是一个ASP.NET Cor ...

  2. 洛谷 P1929 迷之阶梯

    题目传送门 解题思路: f[i]表示跳到第i层的最少移动次数,如果可以从下面一级跳上来,那么直接跳上来,如果跳不上来,那就往后退,退到不能退或能跳上第i层 AC代码: #include<iost ...

  3. XV6源代码阅读-同步机制

    Exercise1 源代码阅读 锁部分:spinlock.h/spinlock.c以及相关其他文件代码 // Mutual exclusion lock. struct spinlock { uint ...

  4. BFC的基础理解及应用场景

    最近学习了BFC,开始学习的时候,单纯看概念,有种云里雾里的感觉,字都认识,凑一起啥意思大致也知道,但是具体有什么用呢? 这个就有点迷迷糊糊的,经过老师的讲解,以及自己课后的代码实验与总结,就拨云见日 ...

  5. 十九、React UI框架Antd(Ant Design)的使用——及react Antd的使用 button组件 Icon组件 Layout组件 DatePicker日期组件

    一.Antd(Ant Design)的使用:引入全部Css样式 1.1 antd官网: https://ant.design/docs/react/introduce-cn 1.2 React中使用A ...

  6. 吴裕雄--天生自然java开发常用类库学习笔记:正则表达式

    public class RegexDemo01{ public static void main(String args[]){ String str = "1234567890" ...

  7. SDRAM调试总结

    SDRAM的调试总结 1 说明 实验平台: JZ2440 CPU: S3C2440 SDRAM型号: EM63A165TS-6G   2 SDRAM的一些基本概念 2.1 引脚分配   2.2 引脚描 ...

  8. 【转帖】Windows 10版本占比一览:v1903依然最稳定 占比52.6%

    Windows 10版本占比一览:v1903依然最稳定 占比52.6% https://os.51cto.com/art/202002/611452.htm 其实感觉现阶段的win10 与 2015年 ...

  9. HihoCoder第十四周:无间道之并查集

    #1066 : 无间道之并查集 时间限制:20000ms 单点时限:1000ms 内存限制:256MB 描述 这天天气晴朗.阳光明媚.鸟语花香,空气中弥漫着春天的气息--额,说远了,总之,小Hi和小H ...

  10. 20170305深圳Meetup Rails中CSS,JS引用关系分析

    新手上路,若有错误请及时提醒 Rails中CSS,JS引用关系分析 一.Rails静态文件存放位置 二.Rails中CSS引用方式 三.Rails中JS引用方式与CSS类似 四.上面都是默认引用app ...