搜索技术——群智能

news2024/10/2 10:42:53

如果有兴趣了解更多相关内容,欢迎来我的个人网站看看:瞳孔空间

一:初识群智能

1.1:粒子群算法

粒子群算法,也称粒子群优化算法或鸟群觅食算法(Particle Swarm Optimization),缩写为 PSO, 是近年来由J. Kennedy和R. C. Eberhart等开发的一种新的进化算法(Evolutionary Algorithm - EA)。PSO 算法属于进化算法的一种,和模拟退火算法相似,它也是从随机解出发,通过迭代寻找最优解,它也是通过适应度来评价解的品质,但它比遗传算法规则更为简单,它没有遗传算法的“交叉”(Crossover) 和“变异”(Mutation) 操作,它通过追随当前搜索到的最优值来寻找全局最优。这种算法以其实现容易、精度高、收敛快等优点引起了学术界的重视,并且在解决实际问题中展示了其优越性。粒子群算法是一种并行算法。

粒子群算法(Particle Swarm Optimization,简称PSO)的思想源于对鸟群捕食行为的研究,模拟鸟集群飞行觅食的行为,鸟之间通过集体的协作使群体达到最优目的。

设想这样一个场景,—群鸟在随机搜索食物,已知:在这块区域里只有一块食物,所有的鸟都不知道食物在哪里,但它们能感受到当前的位置离食物还有多远。那么找到食物的最优策略是什么呢?很显然,最简单有效的就是搜寻目前离食物最近的鸟的周围区域。

PSO正是从这种模型中得到了启发:信息的社会共享。鸟群在整个搜寻的过程中,通过相互传递各自的信息,让其他的鸟知道自己的位置,通过这样的协作,来判断自己找到的是不是最优解,同时也将最优解的信息传递给整个鸟群,最终,整个鸟群都能聚集在食物源周围,即找到了最优解。

PSO中,每个优化问题的解都是搜索空间中的一只鸟。我们称之为“粒子”。所有的粒子都有一个由被优化的函数决定的适应值(fitness value),每个粒子还有一个速度决定他们飞翔的方向和距离。然后粒子们就追随当前的最优粒子在解空间中搜索。

1.2:人工鱼群算法

人工鱼群算法为山东大学副教授李晓磊2002年从鱼找寻食物的现象中表现的种种移动寻觅特点中得到启发而阐述的仿生学优化方案。

定义:在一片水域中,鱼往往能自行或尾随其他鱼找到营养物质多的地方,因而鱼生存数目最多的地方一般就是本水域中营养物质最多的地方,人工鱼群算法就是根据这一特点,通过构造人工鱼来模仿鱼群的觅食、聚群及追尾行为,从而实现寻优。

人工鱼拥有以下几种典型行为:

  • 觅食行为:一般情况下鱼在水中随机地自由游动,当发现食物时,则会向食物逐渐增多的方向快速游去。
  • 聚群行为:鱼在游动过程中为了保证自身的生存和躲避危害会自然地聚集成群,鱼聚群时所遵守的规则有三条:
    • 分隔规则:尽量避免与临近伙伴过于拥挤
    • 对准规则:尽量与临近伙伴的平均方向一致
    • 内聚规则:尽量朝临近伙伴的中心移动
  • 追尾行为:当鱼群中的一条或几条鱼发现食物时,其临近的伙伴会尾随其快速到达食物点
  • 随机行为:单独的鱼在水中通常都是随机游动的,这是为了更大范围地寻找食物点或身边的伙伴

算法实现的步骤:

  1. 初始化设置,包括种群规模N、每条人工鱼的初始位置、人工鱼的视野visual、步长step、拥挤度因子δ、重复次数Trynumber
  2. 计算初始鱼群各个体的适应值,取最优人工鱼状态及其值赋予给公告牌
  3. 对每个个体进行评价,对其要执行的行为进行选择,包括觅食Pray、聚群Swarm、追尾Follow和评价行为bulletin
  4. 执行人工鱼的行为,更新自己,生成新鱼群
  5. 评价所有个体。若某个体优于公告牌,则将公告牌更新为该个体
  6. 当公告牌上最优解达到满意误差界内或者达到迭代次数上限时算法结束,否则转步骤3

1.3:人工蜂群算法

人工蜂群算法(Artificial Bee Colony Algorithm,简称ABC算法)是一个由蜂群行为启发的算法,在2005年由Karaboga小组为优化代数问题而提出。

人工蜂群算法是模仿蜜蜂行为提出的一种优化方法,是集群智能思想的一个具体应用,它的主要特点是不需要了解问题的特殊信息,只需要对问题进行优劣的比较,通过各人工蜂个体的局部寻优行为,最终在群体中使全局最优值突现出来,有着较快的收敛速度。

机理如下:

  • 蜜蜂是一种群居昆虫,虽然单个昆虫的行为极其简单,但是由单个简单的个体所组成的群体却表现出极其复杂的行为。真实的蜜蜂种群能够在任何环境下,以极高的效率从食物源(花朵)中采集花蜜;同时,它们能适应环境的改变
  • 蜂群产生群体智慧的最小搜索模型包含基本的三个组成要素:食物源、被雇佣的蜜蜂和未被雇佣的蜜蜂;两种最为基本的行为模型:为食物源招募蜜蜂和放弃某个食物源
    • 食物源:食物源的价值由多方面的因素决定,如:它离蜂巢的远近,包含花蜜的丰富程度和获得花蜜的难易程度。使用单一的参数,食物源的“收益率”,来代表以上各个因素
    • 被雇用的蜜蜂:也称引领蜂,其与所采集的食物源一一对应。引领蜂储存有某一个食物源的相关信息(相对于蜂巢的距离、方向、食物源的丰富程度等)并且将这些信息以一定的概率与其他蜜蜂分享
    • 未被雇用的蜜蜂:其主要任务是寻找和开采食物源。有两种未被雇用的蜜蜂:侦查蜂和跟随蜂。侦察蜂搜索蜂巢附近的新食物源;跟随蜂等在蜂巢里面并通过与引领蜂分享相关信息找到食物源。一般情况下,侦察蜂的平均数目是蜂群的5%-20%

在群体智慧的形成过程中,蜜蜂间交换信息是最为重要的一环。舞蹈区是蜂巢中最为重要的信息交换地。蜜蜂的舞蹈叫做摇摆舞。食物源的信息在舞蹈区通过摇摆舞的形式与其他蜜蜂共享,引领蜂通过摇摆舞的持续时间等来表现食物源的收益率,故跟随蜂可以观察到大量的舞蹈并依据收益率来选择到哪个食物源采蜜。收益率与食物源被选择的可能性成正比。因而,蜜蜂被招募到某一个食物源的概率与食物源的收益率成正比。

初始时刻,蜜蜂以侦察蜂的身份搜索。其搜索可以由系统提供的先验知识决定,也可以完全随机。经过一轮侦查后,若蜜蜂找到食物源,蜜蜂利用它本身的存储能力记录位置信息并开始采蜜。此时,蜜蜂将成为“被雇用者”

  • 被雇用的蜜蜂在食物源采蜜后回到蜂巢卸下蜂蜜,然后将有如下选择:
    • 放弃食物源而成为非雇佣蜂
    • 跳摇摆舞为所对应的食物源招募更多的蜜蜂,然后回到食物源采蜜
    • 继续在同一个食物源采蜜而不进行招募
  • 对于非雇佣蜂有如下选择:
    • 转变成为侦察蜂并搜索蜂巢附近的食物源。其搜索可以由先验知识决定,也可以完全随机
    • 在观察完摇摆舞后被雇用成为跟随蜂,开始搜索对应食物源邻域并采蜜

1.4:蚁群算法

蚁群算法是一种用来寻找优化路径的概率型算法。它由Marco Dorigo于1992年在他的博士论文中提出,其灵感来源于蚂蚁在寻找食物过程中发现路径的行为。这种算法具有分布计算、信息正反馈和启发式搜索的特征,本质上是进化算法中的一种启发式全局优化算法。

蚂蚁觅食的过程中,单个蚂蚁的行为比较简单,但是蚁群整体却可以体现一些智能的行为。例如蚁群可以在不同的环境下,寻找最短到达食物源的路径。这是因为蚁群内的蚂蚁可以通过某种信息机制实现信息的传递。后又经进一步研究发现,蚂蚁会在其经过的路径上释放一种可以称之为“信息素”的物质,蚁群内的蚂蚁对“信息素”具有感知能力,它们会沿着“信息素”浓度较高路径行走,而每只路过的蚂蚁都会在路上留下“信息素”,这就形成一种类似正反馈的机制,这样经过一段时间后,整个蚁群就会沿着最短路径到达食物源了。

将蚁群算法应用于解决优化问题的基本思路为:用蚂蚁的行走路径表示待优化问题的可行解,整个蚂蚁群体的所有路径构成待优化问题的解空间。路径较短的蚂蚁释放的信息素量较多,随着时间的推进,较短的路径上累积的信息素浓度逐渐增高,选择该路径的蚂蚁个数也愈来愈多。最终,整个蚂蚁会在正反馈的作用下集中到最佳的路径上,此时对应的便是待优化问题的最优解。

蚂蚁找到最短路径要归功于信息素和环境,假设有两条路可从蚁窝通向食物,开始时两条路上的蚂蚁数量差不多:当蚂蚁到达终点之后会立即返回,距离短的路上的蚂蚁往返一次时间短,重复频率快,在单位时间里往返蚂蚁的数目就多,留下的信息素也多,会吸引更多蚂蚁过来,会留下更多信息素。而距离长的路正相反,因此越来越多的蚂蚁聚集到最短路径上来。

蚂蚁具有的智能行为得益于其简单行为规则,该规则让其具有多样性和正反馈。在觅食时,多样性使蚂蚁不会走进死胡同而无限循环,是一种创新能力;正反馈使优良信息保存下来,是一种学习强化能力。两者的巧妙结合使智能行为涌现,如果多样性过剩,系统过于活跃,会导致过多的随机运动,陷入混沌状态;如果多样性不够,正反馈过强,会导致僵化,当环境变化时蚁群不能相应调整。

二:群智能介绍

“群”的特征:

  • 相互作用的相邻个体的集合
  • 个体的行为简单,既有竞争又有协作
  • 智能化的集体行为(1+1>2)
    • 个体间不仅能够交互信息,还能够处理信息,根据信息改变自身行为
    • 没有一个集中控制中心,分布式、自组织
    • 作为群体协同工作时,展现出非常复杂的行为特征—智能

Swarm(群)可被描述为一些相互作用相邻个体的集合体,蜂群、蚁群、鸟群都是Swarm的典型例子:

  • 鱼聚集成群可以有效地逃避捕食者,因为任何一只鱼发现异常都可带动整个鱼群逃避
  • 蚂蚁成群则有利于寻找食物,因为任何一只蚂蚁发现食物都可带领蚁群来共同搬运和进食
  • 一只蜜蜂或蚂蚁的行为能力非常有限,它几乎不可能独立存在于自然世界中,而多个蜜蜂或蚂蚁形成的Swarm则具有非常强的生存能力,且这种能力不是通过多个个体之间能力简单叠加所获得的
  • 社会性动物群体所拥有的这种特性能帮助个体很好地适应环境,个体所能获得的信息远比它通过自身感觉器官所取得的多,其根本原因在于个体之间存在着信息交互能力
  • 信息的交互过程不仅仅在群体内传播了信息,而且群内个体还能处理信息,并根据所获得的信息(包括环境信息和附近其它个体的信息)改变自身的一些行为模式和规范,这样就使得群体涌现出一些单个个体所不具备的能力和特性,尤其是对环境的适应能力。这种对环境变化所具有适应的能力可以被认为是一种智能(1+1>2)

群智能的起源和发展:

  • 1989年,加利福尼亚大学的教授贝尼在其元胞自动机系统中首次提出群智能的概念,分子自动机中的主体在一维或二维网格空间中与相邻个体相互作用,从而实现自组织。
  • 任何一种由昆虫群体或其它动物社会行为机制而激发设计出的算法,或分布式解决问题的策略均属于群智能——伯纳堡等,《群智能:从自然到人工系统》, 1999
  • 无智能或简单智能的主体,通过任何形式的聚集协同(不是竞争)而表现出智能行为的特性——伯纳堡
  • 2001年,肯尼迪和艾伯哈特出版了《群体智能》一书,该书是群智能发展的里程碑,该书赞同伯纳堡关于群智能定义的基本精神,但反对“主体”一词,认为会限制“群”的定义范围。并提出重要观点:智能源于社会性的相互作用(多智能体,人多力量大)。
  • 群智能已成为有别于传统人工智能联连接主义和符号主义的一种新的关于智能的描述方法

基于群智能的典型优化算法:

  • 蚁群算法(蚂蚁觅食)
  • 粒子群算法(蜂群或鸟群觅食)

群智能优化算法的优点:

  • 灵活性
  • 稳健性
  • 自组织
  • 潜在的并行性和分布式

群智能优化算法的特点:

  • 分布式:无中心控制
  • 随机性:非确定性
  • 自适应:个体根据环境进行策略调整
  • 正反馈:个体好的尝试会对个体产生正反馈
  • 自发涌现:会在群体层面涌现出一种智能

已有的群智能理论和应用研究证明群智能方法是一种能够有效解决大多数优化问题的新方法

三:蚁群算法

3.1:基本介绍

蚁群智能的基本思想:蚂蚁以信息素的强度为概率来决定路线选择

  • 整体往往大于部分的“简单和”
    • 蚂蚁的低智能——蚁群的高智慧
    • 蚂蚁的简单行为——蚁群的智能突现
  • 实际蚁群的觅食
    • 主体(agent):蚂蚁
    • 简单的规则(rules):分工、通讯
    • 相互作用(interaction):
      • 蚂蚁<==触角放电==>蚂蚁
      • 蚂蚁<==气味累积==>蚂蚁

等长路径的情况下,选择路径1和路径2的蚂蚁数目相近
在这里插入图片描述

不等长的路径情况下,绝大多数蚂蚁选择长度较短的路径:
在这里插入图片描述

3.2:蚁群寻食过程分析

假设:

  • 蚂蚁从A点出发,速度相同,食物在D点,可能随机选择路线ABD或ACD。
  • 假设初始时每条路线分配一只蚂蚁,每个时间单位行走一步

下图为经过9个时间单位时的情形:走ABD的蚂蚁已到达终点,而走ACD的蚂蚁刚好走到C点,为一半路程。
在这里插入图片描述

经过18个时间单位时的情形:走ABD的蚂蚁到达终点后得到食物又返回了起点A,而走ACD的蚂蚁刚好走到D点。
在这里插入图片描述

则假设蚂蚁每经过一处所留下的信息素为一个单位,经过36个时间单位后,所有开始一起出发的蚂蚁都经过不同路径从D点取得了食物,此时ABD的路线往返了2趟,每一处的信息素为4个单位,而ACD的路线往返了一趟,每一处的信息素为2个单位,其比值为2:1。

寻找食物的过程继续进行,则按信息素的指导,蚁群在ABD路线上增派一只蚂蚁(共2只),而ACD路线上仍然为一只蚂蚁。再经过36个时间单位后,两条路线上的信息素单位积累为12和4,比值为3:1。

若按以上规则继续,蚁群在ABD路线上再增派一只蚂蚁(共3只),而ACD路线上仍然为一只蚂蚁。再经过36个时间单位后,两条路线上的信息素单位积累为24和6,比值为4:1。

若继续进行,则按信息素的指导,最终所有的蚂蚁会放弃ACD路线,而都选择ABD路线。

若用障碍物切断原来的通路:
在这里插入图片描述
那么蚁群会探索新的道路:
在这里插入图片描述
最终形成最佳路径:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/54422.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

语音特征:spectrogram、Fbank(fiterbank)、MFCC

1.各种语音特征 语音特征用于语音识别和语音合成等。 语音特征有声谱图spectrogram、Fbank(fiterbank)、MFCC(Mel-frequency cepstral coefficients)等。 Fbank 特征提取方法就是相当 于 MFCC 去掉最后一步的离散余弦变换&#xff08;有损变换&#xff09;. 在深度学习之前…

git学习笔记

1、安装及配置git 1、到官网下载git安装包&#xff1a;https://git-scm.com/download/win 2、安装完成后&#xff0c;菜单栏有如下工具 3、配置账户和邮件信息 $ git config --global user.name "xxx"$ git config --global user.email "xxxmegvii.com"4…

十大排序算法(C++)

十大排序算法Sorting algorithm(C) 百度百科&#xff1a; 所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。排序算法&#xff0c;就是如何使得记录按照要求排列的方法。排序算法在很多领域得到相当地…

高通平台开发系列讲解(AI篇)如何让yolov5运行在SNPE

文章目录 一、模型下载二、模型转换三、模型量化四、后处理加速沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇章主要介绍高通平台SNPE SDK运行yolov5。 一、模型下载 首先去git上下载yolov5s的代码和模型https://github.com/ultralytics/yolov5 二、模型转换 采…

Python爬虫实战,requests+xlwings模块,Python实现制作天气预报表!

前言 今天为大家介绍PythonExcel的实战项目&#xff0c;非常有趣&#xff0c;废话不多说。 Let’s start happily 开发工具 Python版本&#xff1a; 3.6.4 相关模块&#xff1a; xlwings模块 requests模块 pathlib模块 xlwings模块 json模块 环境搭建 安装Python并…

RAR压缩包,去除密码?

压缩包设置了加密&#xff0c;需要输入压缩包密码才能够顺利解压文件出来。但是有些时候&#xff0c;一些文件只需要一段时间内要加密&#xff0c;之后文件不需要加密了&#xff0c;每次解压文件的时候还是需要输入压缩包密码才行&#xff0c;就很麻烦&#xff0c;那么RAR压缩包…

SAP 接口主动推送企业微信异常消息

"推送企业微信格式lv_json { "msgtype": "markdown", "markdown": &&{ "content": "### 异常JOB通知\n >JOB名称&#xff1a; && gt_alv-jobname && \n 程序名称&#xff1a; && gt_…

戟星安全实验室|五分钟教你挖掘小程序漏洞

戟星安全实验室 忆享科技旗下高端的网络安全攻防服务团队.安服内容包括渗透测试、代码审计、应急响应、漏洞研究、威胁情报、安全运维、攻防演练等。 本文约1252字&#xff0c;阅读约需5分钟。 前言 现在大多小程序反编译教程所使用的都是node.js&#xff0c;操作过程较为麻烦…

第一周练习——认识复杂度和简单排序算法

前言&#xff1a; &#x1f44f;作者简介&#xff1a;我是笑霸final&#xff0c;一名热爱技术的在校学生。 &#x1f4dd;个人主页&#xff1a;个人主页1 || 笑霸final的主页2 &#x1f4d5;系列专栏&#xff1a;《数据结构与算法》 &#x1f4e7;如果文章知识点有错误的地方&a…

Mediapipe学习记录

学习文档 1、Google MediaPipe&#xff1a;设备端机器学习【完整解决方案】背后的技术实现 - 极术社区 - 连接开发者与智能计算生态 2、【转载】Google MediaPipe&#xff1a;设备端机器学习【完整解决方案】背后的技术实现 3、MediaPipe框架结构 - 走看看 Handtracking封装…

qt creator 设置 项目依赖关系

qt creator中有两种设置项目依赖关系的方式。 1、对于有依赖的项目&#xff0c;如果工程比较简单&#xff0c;可以将所有项目放到一个空的项目下&#xff0c;然后显示地指定从属关系&#xff0c;参考&#xff1a;qmake TEMPLATE subdirs_丘上人的博客-CSDN博客 2、通过qt cre…

leecode#Excel表列序号#组合两个表

题目描述&#xff1a; 给你一个字符串 columnTitle &#xff0c;表示 Excel 表格中的列名称。返回 该列名称对应的列序号 。 分析&#xff1a; 法1&#xff0c;进制转换 这道题要求将Excel 表中的列名称转换成相对应的列序号。由于Excel 表的列名称由大写字母组成&#xff…

vue学习53~60(Vue组件化编程)

2 Vue组件化编程 2.1 模块与组件、模块化与组件化 2.1.1 模块 理解:向外提供特定功能的js程序,一般就是一 个js文件为什么: js 文件很多很复杂作用:复用js,简化js的编写,提高js运行效率 2.1.2 组件 理解:用来实现局部(特定)功能效果的代码集合(html/css/js/image…)为什么…

正大国际期货:外盘期货交易中常见的五类技术分析方法

外盘期货交易中&#xff0c;技术分析是必不可少的&#xff0c;技术分析是指以市场行为为研究对象&#xff0c;以判断市场趋势并跟随趋势的周期性变化来进行一切金融衍生物交易决策的方法的总和。常用的技术方法大体上可以分五大类&#xff1a;指标类、切线类、形态类、波浪类、…

安卓程序逆向与防护

安卓程序逆向与防护实际用处代码打包生成apk的步骤程序基础逆向步骤程序基础防御代码混淆针对逆向工具的防御手段ProguardSO文件防止二次打包程序进阶逆向攻击实战练习逆向简易安卓程序实际用处 1.当想要获得一款前后端分离的安卓程序的数据时&#xff0c;一般会考虑抓包后端传…

Kanzi:关于kanzi的一点杂谈

概述&#xff1a; 做过开发的小伙伴在初次接触Kanzi Studio 这个开发工具时&#xff0c;可能有点摸不着头脑&#xff0c;由于 它不像Android studio 也 不像QT &#xff0c;而且最大的一个区别是&#xff1a;kanzi基本不用写代码逻辑来控制程序显示UI&#xff0c;但是Android …

做外贸一定要知道的20条经验教训

做外贸你必须知道的20课&#xff0c;由米贸搜为你整理如下: 1.在工厂里&#xff0c;客人抱怨价格太高的时候&#xff0c;我总是说一分钱一分货&#xff0c;质量好的回复。进入一家贸易公司后&#xff0c;我知道价格才是硬道理&#xff0c;尤其是大客人。对价格的考虑肯定高于对…

1776年美国才建国,那一年中国在干什么?

时代淘汰你&#xff0c;都不会跟你打一声招呼。时代的残酷性&#xff0c;对人如此&#xff0c;对国家也是这般。美国的历史是太嫩了&#xff0c;在1776年才得以建国。但在这年&#xff0c;美国踏上了工业化革命的节奏&#xff0c;走上了扬帆起航之旅&#xff0c;逐步成为了超级…

JavaIO流处理笔记(万字总结)

学习视频561-JavaSE进阶-IO流概述_哔哩哔哩_bilibili 目录 IO流概述 IO流的分类 IO流四大家族 FileInputStream初步(并非最终方法) FileInputStream循环读(并非最终方法) 往byte数组中读 FileInputStream最终版 FileInputStream的其他常用方法 FileOutputStream的使用…

Kamiya丨Kamiya艾美捷抗冷休克结构域蛋白E1说明书

Kamiya艾美捷抗冷休克结构域蛋白E1化学性质&#xff1a; 物种反应性&#xff1a;人类其他未知物种。 Ig同种型&#xff1a;正常兔全血抗体 免疫原&#xff1a;表达重组CSDE1&#xff08;Met1~Val245&#xff09;在大肠杆菌中 格式&#xff1a;500g/mL多克隆抗体在0.01M PBS…