首页 > 编程知识 正文

大规模多目标进化算法,进化算法应用

时间:2023-05-05 16:46:26 阅读:147732 作者:1461

一瞥目录:1.遗传算法(Genetic Algorithm,GA )2.文化基因算法(Memetic Algorithm,MA )3.进化多目标优化算法(multi-objectivect )

进化算法也称为进化算法(evolutionary algorithms,简称EAs ),不是具体的算法,而是“算法簇”。 进化算法的产生灵感来源于自然中生物的进化操作,它一般包括基因编码、种群初始化、交叉变异算子、保留经营机制等基本操作。 与传统的基于微积分的方法和穷举方法等优化算法(具体介绍博客[Math]中常见的几种优化方法中的其他数学优化方法)相比,进化计算为成熟的具有高鲁棒性和广泛适用性的全局优化方法,是自组织的

除了上述优点之外,进化算法常用于多目标问题的优化求解,我们通常称这种进化算法为进化多目标优化算法(MOEAs )。 目前,进化计算的相关算法被广泛应用于参数优化、工业调度、资源分配、复杂网络分析等领域。

1 .遗传算法(Genetic Algorithm,GA )遗传算法(Genetic Algorithm,简称GA ) )是最基本的进化算法,是模拟达尔文生物进化理论的优化模型遗传算法中种群按个体划分是解空间上的可行解,通过模拟生物进化过程在解空间内寻找最优解。

遗传算法的基本操作可以在下图中说明。

个体的编码方式确定后,对上图的操作具体记述如下。

Step 1种群初始化:根据问题特性设计相应的初始化操作(初始化操作尽量简单,时间复杂度不易过高)对种群中n个个体进行初始化操作;

Step 2个体评估:基于优化的目标函数计算种群中个体的适应值(fitness value );

Step 3重复设定:设定种群最大重复次数gmax,设定当前重复次数g=1;

Step 4个体选择:设计合适的选择算子选择个体群p(g )个体,被选个体进入交配池组成亲本个体群p(g ),用于交叉转化生成新个体。 选择策略是基于个体的适应值进行的,如果最优化问题是最小化问题,则选择适应值小的个体的概率应该相应地变高。 常用的选择策略有轮盘赌选择、锦标赛选择等。

Step 5交叉算子:根据交叉概率pm (预先指定,一般为0.9 )判断母个体是否需要进行交叉操作。 交叉算子必须根据优化问题的特性来设计,它是整个遗传算法的核心,其设计的好坏直接决定着整个算法性能的优劣。

Step 6变异算子:通过变异概率pc (预先指定,通常为0.1 )判断母个体是否需要进行变异操作。 变异算子的主要作用是保持种群的多样性,防止种群陷入局部最优,因此一般设计为随机变换。

通过交叉变异操作从母个体群FP(g )生成新的子个体群p ) g1 ),设定个体群反复次数g=g 1,进行下一次反复操作(Step 4),直到反复次数达到最大反复次数。

为了更形象地说明交叉操作的作用,以下图为例,让我们深入理解交叉操作的作用。

通过交叉操作,由原来的两个个体的组合产生两个新的个体的组合,相当于搜索解空间,每个个体都是解空间的可行解。

遗传算法matlab代码如下。

主函数main.m

% thisexampleisusedtoexplainthega.% maxf (x1,x2 )=21.5 x1sin (4pi * x1 ) x2sin(20pi*x2 ) ) s.t.- 3.0=x1 M=40; N=33; generation=1000; it=1; pm=0.05; %变异概率pc=0.8; %交叉概率maxdata=-200; pop=round(rand ) m,n ); %初始化矩阵,初始种群x1=decode _ x1 (pop (:1:18 ); x2=decode _ x2 (pop (:1933-360结束) ),用于解码x1 x2; fitness=21.5x1.*sin(4*pi*x1 ) x2.*sin ) 20*pi*x2 ); %适应度函数whileitgeneration [ b ]=sec lection (fitness,pop ); %轮盘选择[newpop]=crossover(PC,b ); %交集[b]=mutation(pm,newpop ); %变异操作

pop = B; x1 = decode_x1(pop(:,1:18)); x2 = decode_x2(pop(:,19:end)); fitness = 21.5 + x1.*sin(4*pi*x1) +x2.*sin(20*pi*x2);%计算适应度 [fit_best,index] = max(fitness);%本代中的最优目标值 if fit_best >= maxdata maxdata = fit_best; verter = pop(index,:); x_1 = decode_x1(verter(1:18)); x_2 = decode_x2(verter(19:end)); end num(it) = maxdata; it = it + 1;enddisp(sprintf('max_f=:%.6f',num(it-1)));%输出最优解disp(sprintf('x_1=:%.5f x_2=:%.5f',x_1,x_2));%最优解对应的x1 x2的值figure(1) plot(num,'k');%绘制图形

变量x1的编码函数:decode_x1.m

function x1= encode(code)[M,N] = size(code);sum = zeros(N);for i=1:M for j=1:N sum(i)=sum(i)+code(i,j)*2^(N-j); end x1(i) = -3.0 + sum(i)*(12.1-(-3.0))/(2^N - 1);end

变量x2的编码函数:decode_x2.m

function x2=encode_x2(code)[M,N] = size(code);sum = zeros(N);for i=1:M for j=1:N sum(i)=sum(i)+code(i,j)*2^(N-j); end x2(i) = 4.1 + sum(i)*(5.8 - 4.1)/(2^N - 1);end

轮盘赌选择函数:seclection.m

%轮盘赌选择 function [B]=seclection(fitness,A) [M,N]=size(A); fit_sum = sum(fitness); for i = 1:M probability(i) = fitness(i)/fit_sum; end for i = 2:M probability(i) =probability(i) + probability(i-1); end for j = 1:M p = rand(); i = 1; while p > probability(i) i = i+1; end B(j,:) = A(i,:); end

个体交叉算子:crossover.m

%交叉function [newpop]=crossover(pc,A)newpop=A;[M,N]=size(A); for i= 1:2:M-1 if rand < pc p = ceil(rand()*N); for j= p:N ch = A(i,j); newpop(i,j) = A(i+1,j); newpop(i+1,j) = ch; end end end

个体变异算子:mutation.m

%变异

function [newpop]=mutation(pm,A)[M,N]=size(A);newpop=A;W = rand(M,N)<pm; for i=1:M for j=1:N if W(i,j) ==1 if A(i,j)~=1 newpop(i,j)= 1; else newpop(i,j) = 0; end end end end 2. 文化基因算法(Memetic Algorithm,MA)

文化基因算法(Memetic Algorithm,简称MA),也被称为是“密母算法”,它是由Mpscato在1989年提出的。文化基因算法是一种基于种群的全局搜索和基于个体的局部启发式搜索的结合体,它的本质可以理解为:

Memetic = GA + Local Search

即memetic算法实质上为遗传算法加上一个局部搜索(Local Search)算子。局部搜索算子可以根据不同的策略进行设计,比如常用的爬山机制、模拟退火、贪婪机制、禁忌搜索等。

3. 进化多目标优化算法(Multi-Objective Evolutionary Algorithm,MOEA)

对于一个优化问题而言,如果其只有一个目标方程,那么我们称之为单目标优化问题;而一旦方程个数达到两个或者两个以上,那么它被相应的称之为多目标优化问题(Multi-objective Optimization Problems,简称为MOPs)。

对于一个多目标优化问题而言,问题的最优解可能不止一个,而应该是一组,我们通常称这组最优解为相应多目标优化问题的一个非支配解集,或者称为是Pareto解集,其中的每一个解我们称之为Pareto解(Pareto是引自一个经济学的术语)。求解多目标优化问题的解法有很多,比如常见的目标规划方法,目标分解方法,目标化多为少方法(将多个目标表示为一个)等。进化算法在解决多目标问题上有着天然的优势,对于一个进化多目标优化算法而言,它可以对多个目标函数同时进行优化,而且输出一组非支配的Pareto解集,从而可以有效地求解多目标问题。

下图为一个具有两目标的多目标优化问题的Pareto解集示意图:


  常用的进化多目标优化算法有Deb提出基于拥挤度距离度量的NSGA-II,yxdhc老师提出的基于分解思想的MOEA/D算法,以及西电公老师提出的基于免疫克隆机制的NNIA算法等。最近,Deb等人在NSGA-II的基础上又提出一种针对2~16个目标函数同时优化的高维问题的NSGA-III算法,对进化多目标优化感兴趣的博友可以深入的看看相关的参考文献,这方面的内容还是很有意思的。

4. 参考文献

[1] 进化多目标优化算法研究,软件学报,2009.

[2] Messy genetic algirithms: Motivation, analysis, and first results. Complex systems, 1989.

[3] Genetic algorithms in search, optimization, and mechine learning. Addion wesley, 1989.

[4] A fast and elitist multiobjective genetic algorithm: NSGA-II. IEEE Transaction on Evolutionary Computation, 2002.

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。