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

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

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

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

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

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

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

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

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

实例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. No 'Access-Control-Allow-Origin'跨域问题- (mysql-thinkphp) (6)

    因为ajax请求一个服务的时候,服务器端,比如thinkphp端,或者java框架,它会检测,你请求时候的域名,就是http请求的时候,request header不是会把客户端的Request UR ...

  2. PLCsim 软件模拟OB86故障

    用上一节 组态DP主站与标准从站的方法 组态了网络 实现了 将profibus –dp 标准从站 ET200M 下 输入地址为IW2 接口的状态 读取到 主机 DP-315-2DP 的QW0 变量以来 ...

  3. Day4 - H - Following Orders POJ - 1270

    Order is an important concept in mathematics and in computer science. For example, Zorn's Lemma stat ...

  4. leetcode1 twoSum

    """ Given an array of integers, return indices of the two numbers such that they add ...

  5. django-腾讯paas-appengine阅读

    1 重写View基类的dispatch函数 api/baseview.py 在一个post请求中,在header中,CONTENT_TYPE为application/json,然后在request.b ...

  6. LeetCode1029 两地调度(贪心+java自定义排序回顾)

    题目: 公司计划面试 2N 人.第 i 人飞往 A 市的费用为 costs[i][0],飞往 B 市的费用为 costs[i][1]. 返回将每个人都飞到某座城市的最低费用,要求每个城市都有 N 人抵 ...

  7. 51nod 1423:最大二“货”

    1423 最大二"货" 题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题  收藏  取消关注 白克喜欢找一个序列 ...

  8. Visual Studio Code 断点调试配置方法(请按我的步骤 一定可以做到)

    1 visual studio code 的 extentions 里安装插件 debugger for chrome2 devtool: 'eval-source-map', cacheBustin ...

  9. 2 —— js语法 —— 对象和方法的声明 。变量提升。闭包

    一,声明对象 var obj1 = {}; var obj2 = {name:'kk',age:18,fun:function{          // name,age,fun为对象的属性,只是属性 ...

  10. springboot - 映射 /error 到自定义且实现了ErrorController的Controller

    1.总览 2.代码 1).pom.xml <dependencies> <dependency> <groupId>org.springframework.boot ...