开丰娱乐-开丰注册登录绿色站

0898-08980898  13876453617

网站公告
诚信为本,市场在变,诚信永远不变...

分享本站:

开丰资讯

0898-08980898
传真:0000-1234-5678
邮件:admin@youweb.com
客服:

行业新闻

您当前的位置: 首页 > 开丰资讯 > 行业新闻

人类的智慧,机器的智能 | 智能优化算法概述

点击数:     更新时间:2024-04-15 12:11:24

图图已经为大家推送过了遗传算法、粒子群算法和模拟算法等经典算法(见个人主页介绍), 但还没有就这个领域做系统的概述。 今天,就来为大家总体介绍一下智能优化算法

智能优化算法,与其字面意思一样,就是利用"智能"进行优化的算法。受到人类智能、生物群体社会性或自然现象规律的启发,人类发明了很多算法来解决任务分配、生产调度等复杂优化问题——这便是智能优化算法。要了解这个领域,我们首先需要理解一些概念。

智能(Intelligence):我们常常提到“智能”两个字,但智能的准确定义究竟是什么呢?在不同领域,“智能”有着不同的解释,根据维基百科的资料,通常来说:

智能指感知信息并将其化为知识自适应地应用于环境中的能力。

优化(optimization):智能优化算法的提出是为了解决优化问题,优化即在满足一定条件的前提下,基于某种标准从可选集合中选择最佳元素或方案,使得某个或多个功能指标达到最优的过程。

启发式算法(Heuristic Algorithm):群智能算法一般都是启发式算法,即通过模拟和利用自然界中生物体的行为或自然现象的原理,采用经验的方法解决优化问题的算法。

在电子、通信、计算机、自动化、机器人、经济学和管理学等众多学科中,不断出现许多复杂的组合优化问题,面对这些大型优化问题,传统的优化方法(如牛顿法单纯形法等)需要遍历整个搜索空间,无法在短时间内完成搜索,且容易产生搜索的“组合爆炸”。鉴于实际工程问题的复杂性、非线性、约束性以及建模困难等诸多难点,寻找高效的优化算法成为相关学科的重要研究内容,智能优化算法也就随之得到了广泛的研究。

传统的优化算法大多数是基于梯度下降的算法:


而智能优化算法的优化过程一般不涉及到梯度下降,通常采用直接搜索随机搜索。例如在粒子群算法中粒子位置的更新


一般来说,智能优化算法可以分为四大类

  • 进化类算法(Evolutionary Algorithms):由生物进化机制启发得到,包含交叉、变异、选择等操作,典型代表为遗传算法(Genetic Algorithm)和差分进化算法(Differential Evolution)。
  • 群智能类算法(Swarm-based Algorithms):通过使用单个生物个体作为搜索代理来模仿生物集群的集体行为,典型代表为蚁群算法(Ant Colony Optimization)、粒子群算法(Particle Swarm Optimization)和人工蜂群算法(Artificial Bee Colony Optimization)。
  • 物理法则类算法(Physics-based Algorithms):由物理法则启发得到,将客观规律转化为算法流程,典型代表为模拟退火算法(Simulated Annealing)和引力搜索算法(Gravitational Search Algorithm)。
  • 其他类算法(Others):由自然现象、数学原理、人造活动等启发得到,例如禁忌搜索(Tabu Search )、和声搜索(Harmony Search )、免疫算法(Immune Algorithm)。

除了上述具有代表性的典型算法,近年来也有很多新的智能优化算法被陆续提出,小编在这里对一些具有代表性的算法进行了整理:

  • 进化类算法:基于分解的进化算法(Evolutionary Algorithm Based on Decomposition,2007)、生物地理学优化(Biogeography-based Optimization,2008)。
  • 群智能类算法:布谷鸟搜索(Cuckoo Search,2009)、蝙蝠算法(Bat Inspired Algorithm,2010)、灰狼优化(Grey Wolf Optimizer,2014)、蜻蜓算法(Dragonfly Algorithm,2016)、乌鸦搜索算法(Crow Search Algorithm,2016)、鲸鱼优化算法(Whale Optimization Algorithm,2016)、蝗虫优化算法(Grasshopper Optimization Algorithm,2017)、蝴蝶优化算法(Butterfly Optimization Algorithm,2018)、郊狼优化算法(Coyote Optimization Algorithm,2018)、帝王蝶优化(Monarch Butterfly Optimization,2019)、哈里斯鹰优化(Harris Hawk Optimization,2019)、黑寡妇优化算法(Black Widow Optimization Algorithm,2020)。
  • 物理法则类算法:收费系统搜索(Charged System Search,2010)、中心力优化(Central Force Optimization,2011)、曲线空间优化(Curved Space Optimization,2012)、黑洞搜索算法(Black Hole Algorithm,2013)、热交换优化(Thermal Exchange Optimization,2017)、超新星优化(Supernova Optimizer,2018)。
  • 其他算法:烟花算法(Fireworks Algorithm,2010)、头脑风暴算法(Brain Storm Optimization Algorithm,2011)、回溯搜索算法(Backtracking Search Optimization Algorithm,2013)、正弦余弦算法(Sine–cosine Algorithm,2016)、排队搜索算法(Queuing Search Algorithm,2018)、均衡优化(Equilibrium Optimizer,2019)。

总体来说,群智能类算法在新型智能优化算法里面占据了绝对多数,是研究新型智能优化算法的主流。

对于新型智能优化算法所使用的方法、针对的领域以及改进的聚焦点,小编也做了简单的统计,具体方法为:

  • 检索工具——Web of Science
  • 检索方式——By title
  • 关键词——xx + optimization algorithm

结果如下图所示

当然,最多的一类还是将智能优化算法应用在具体领域,但由于无法检索到具体数据,在此就不再列出啦。

在研究智能优化算法的过程中,小编也发现了一些名字很有趣的算法,在这里跟大家分享一下: - 帝国主义竞争算法,Imperialist Competitive Algorithm,2007 - 阴阳对优化,Yin-Yang-pair Optimization,2016 - 多元宇宙算法,Multi-Verse Optimizer,2016 - 最有价值运动员(MVP)算法,Most Valuable Player Algorithm,2017

别看这些算法的名字都很好玩,但背后都是有高质量SCI论文支撑的。如果大家对这些奇奇怪怪又可可爱爱的算法感兴趣,请关注个人主页的平台介绍。

说了这么多别人提出的算法,你是不是已经摩拳擦掌、跃跃欲试,准备提出自己专属的新型智能优化算法呢?小编这就根据自己的经验,以乌鸦搜索算法为例,为大家总结一下提出新算法的一般流程。

首先看看基础的乌鸦搜索算法

主函数

format long;  clear all; clc; 

%% Parameter setting-------------------------------------------------------------------------------------------------
pop=50; % Population number
Max_i=500; % The maximum number of iterations
F_name='F3'; % Test function name,F1,F2,F3

%% Get function information-----------------------------------------------------------------------------------------
[lb,ub,F_obj,dim]=Test_Functions(F_name);
lb_v=lb.*ones( 1,dim );        % Boundary vector
ub_v=ub.*ones( 1,dim );   

%% Initialization
for j=1 : pop
    x_0( j, : )=lb_v + (ub_v - lb_v) .* rand( 1, dim );   
    fit_0(j )=F_obj(x_0(j, : ) ) ; 
end

%% Call algorithm-----------------------------------------------------------------------------------------------------
[CSA_fMin,CSA_bestX,CSA_curve]=CSA(pop,Max_i,lb_v,ub_v,dim,F_obj,x_0,fit_0); 

%% Draw iterative image----------------------------------------------------------------------------------------------
iter=[ 1:Max_i ];
% maker_idx=1:Max_i/10:(Max_i);
plot( iter,CSA_curve,'-s','Color',[71/255,120/255,185/255],'LineWidth',3,'MarkerSize',8,'MarkerFaceColor','w'  )
hold on;
set(gca,'fontsize',20,'fontname','Times','FontWeight','bold');
title(strcat(F_name,'  Objective space'),'fontsize',20,'fontname','Times','FontWeight','bold')
xlabel('Iteration')
ylabel('Best fitness obtained so far')
axis tight

完整代码见文末


下面看看我们该如何构造原创的优化算法

首先,你要有一个点子,制定专属的算法方案,重点是要确定算法中个体的迭代公式。(小编提供几个大胆的思路:资本主义灭亡算法,追求美女/帅哥算法,精准核打击算法......)

例如,在乌鸦搜索算法中,作者将乌鸦藏食和偷取其他乌鸦食物这一现象,抽象为下列公式:

之后,你要选择一些合适的测试算例。其中,数值算例可以选择Sphere、Ackley、Schaffer等经典的单峰、多峰和固定维度数值测试函数,也可以选择CEC会议上提出来的复杂测试算例,而工程算例则可以选择焊接梁设计、减速器设计、压力容器设计等经典工程优化设计问题。(文末有CEC2020单目标测试集的获取方式)

数值算例以Ackley函数为例,其公式为



其中D为问题维度,即优化变量的个数。函数图像如下图所示:



工程算例的典型案例为焊接梁设计

将工程问题抽象为数学问题,表达式为:





确定测试算例后,你需要在上面进行一系列的调整测试,来确定自己所提出算法中的最佳参数方案(如果你的方案中没有需要调整的超参数,那就跳过这一步!)

在乌鸦搜索算法中,可调参数有两个,即意识概率AP和飞行长度fl,不同的参数值对算法性能有较大的影响,下图就展示了fl对于乌鸦搜索算法中个体搜索能力的影响:



通过一系列测试,原作者将其设定为AP=0.1, fl=2。



确定好了参数,之后你就需要找来一些对照算法,在之前确定的算例上测试你的算法和其他算法到底谁更好一些,并分析出算法好的话好在哪里。一般来说,对照算法应该覆盖上述四类,以及经典算法和最新算法,数量的话,越多越好! 通常,测试内容应包含:

  • 算法迭代曲线
  • 算法多次优化结果的平均值
  • 算法多次优化结果的标准差
  • 统计学假设检验


如果经过测试,你的算法比其他算法效果要好,那么恭喜你,你的专属算法诞生啦!想一个炫酷的名字,然后写一篇文章或者专利吧!


全文结束

作者:WWJ | 编辑:图图

  • 获取文中乌鸦算法完整代码/参考文档:请查看个人主页平台
客服头部
0898-08980898
13876453617

网站二维码

平台注册入口