❶ 遗传算法可以用来求多目标优化么
我给你一个标准遗传算法程序供你参考:
该程序是遗传算法优化BP神经网络函数极值寻优:
%% 该代码为基于神经网络遗传算法的系统极值寻优
%% 清空环境变量
clc
clear
%% 初始化遗传算法参数
%初始化参数
maxgen=100; %进化代数,即迭代次数
sizepop=20; %种群规模
pcross=[0.4]; %交叉概率选择,0和1之间
pmutation=[0.2]; %变异概率选择,0和1之间
lenchrom=[1 1]; %每个变量的字串长度,如果是浮点变量,则长度都为1
bound=[-5 5;-5 5]; %数据范围
indivials=struct('fitness',zeros(1,sizepop), 'chrom',[]); %将种群信息定义为一个结构体
avgfitness=[]; %每一代种群的平均适应度
bestfitness=[]; %每一代种群的最佳适应度
bestchrom=[]; %适应度最好的染色体
%% 初始化种群计算适应度值
% 初始化种群
for i=1:sizepop
%随机产生一个种群
indivials.chrom(i,:)=Code(lenchrom,bound);
x=indivials.chrom(i,:);
%计算适应度
indivials.fitness(i)=fun(x); %染色体的适应度
end
%找最好的染色体
[bestfitness bestindex]=min(indivials.fitness);
bestchrom=indivials.chrom(bestindex,:); %最好的染色体
avgfitness=sum(indivials.fitness)/sizepop; %染色体的平均适应度
% 记录每一代进化中最好的适应度和平均适应度
trace=[avgfitness bestfitness];
%% 迭代寻优
% 进化开始
for i=1:maxgen
i
% 选择
indivials=Select(indivials,sizepop);
avgfitness=sum(indivials.fitness)/sizepop;
%交叉
indivials.chrom=Cross(pcross,lenchrom,indivials.chrom,sizepop,bound);
% 变异
indivials.chrom=Mutation(pmutation,lenchrom,indivials.chrom,sizepop,[i maxgen],bound);
% 计算适应度
for j=1:sizepop
x=indivials.chrom(j,:); %解码
indivials.fitness(j)=fun(x);
end
%找到最小和最大适应度的染色体及它们在种群中的位置
[newbestfitness,newbestindex]=min(indivials.fitness);
[worestfitness,worestindex]=max(indivials.fitness);
% 代替上一次进化中最好的染色体
if bestfitness>newbestfitness
bestfitness=newbestfitness;
bestchrom=indivials.chrom(newbestindex,:);
end
indivials.chrom(worestindex,:)=bestchrom;
indivials.fitness(worestindex)=bestfitness;
avgfitness=sum(indivials.fitness)/sizepop;
trace=[trace;avgfitness bestfitness]; %记录每一代进化中最好的适应度和平均适应度
end
%进化结束
%% 结果分析
[r c]=size(trace);
plot([1:r]',trace(:,2),'r-');
title('适应度曲线','fontsize',12);
xlabel('进化代数','fontsize',12);ylabel('适应度','fontsize',12);
axis([0,100,0,1])
disp('适应度 变量');
x=bestchrom;
% 窗口显示
disp([bestfitness x]);
❷ 遗传算法具体应用
1、函数优化
函数优化是遗传算法的经典应用领域,也是遗传算法进行性能评价的常用算例,许多人构造出了各种各样复杂形式的测试函数:连续函数和离散函数、凸函数和凹函数、低维函数和高维函数、单峰函数和多峰函数等。
2、组合优化
随着问题规模的增大,组合优化问题的搜索空间也急剧增大,有时在目前的计算上用枚举法很难求出最优解。对这类复杂的问题,人们已经意识到应把主要精力放在寻求满意解上,而遗传算法是寻求这种满意解的最佳工具之一。
此外,GA也在生产调度问题、自动控制、机器人学、图象处理、人工生命、遗传编码和机器学习等方面获得了广泛的运用。
3、车间调度
车间调度问题是一个典型的NP-Hard问题,遗传算法作为一种经典的智能算法广泛用于车间调度中,很多学者都致力于用遗传算法解决车间调度问题,现今也取得了十分丰硕的成果。
从最初的传统车间调度(JSP)问题到柔性作业车间调度问题(FJSP),遗传算法都有优异的表现,在很多算例中都得到了最优或近优解。
(2)多目标搜索遗传算法扩展阅读:
遗传算法的缺点
1、编码不规范及编码存在表示的不准确性。
2、单一的遗传算法编码不能全面地将优化问题的约束表示出来。考虑约束的一个方法就是对不可行解采用阈值,这样,计算的时间必然增加。
3、遗传算法通常的效率比其他传统的优化方法低。
4、遗传算法容易过早收敛。
5、遗传算法对算法的精度、可行度、计算复杂性等方面,还没有有效的定量分析方法。
❸ 多目标遗传算法 目标函数的权重问题
推荐算法中几种常用的多目标变单一目标的方法:
(1)目标加权法:F(x)=∑λf(x),∑λ=1。λ可固定或随机或自适应,加权求和之前一般需要进行无量纲化处理
(2)乘除法:min F(x)=(minf1×minf2×...)/(maxfn×maxfn+1×...).
(3)主要目标法/约束法:次要目标构成对主要目标的约束条件, 缺点:需要人为设定次要目标的约束参数
谢采纳~
❹ 谁能通俗的讲解一下NSGA-II多目标遗传算法
NSGA-II特别的地方就在它的选择过程上,其他的和其他算法也没什么区别。选择过程分两个部分:1.把种群分成一组Pareto非支配集。一个非支配集里的个体不被当前或之后非支配集里的任何个体支配。方法就是每次选出所有不被任何其他个体支配的非
❺ 基于DEAP库的Python进化算法从入门到入土--(六)多目标遗传算法 NSGA-II
在很多实际工程问题中,我们的优化目标不止一个,而是对多个目标函数求一个综合最优解。例如在物流配送问题中,不仅要求配送路径最短,还可能需要参与运输车辆最少等。
多目标优化问题的数学模型可以表达为:
多目标优化问题通常具有如下特点:
对于多目标优化问题,传统方法是将原问题通过加权方式变换为单目标优化问题,进而求得最优解。该方法具有两大问题:
遗传算法具有多点多方向搜索的特征,在一次搜索中可以得到多个Pareto最优解,因此更适合求解多目标优化问题。
而当前用于求解多目标优化问题的遗传算法一般有两种思路:
NSGA-II(nondominated sorting genetic algorithm II)是2002年Deb教授提出的NSGA的改进型,这个算法主要解决了第一版NSGA的三个痛点:
针对这三个问题,在NSGA-II中,Deb提出了快速非支配排序算子,引入了保存精英策略,并用“拥挤距离”(crowding distance)替代了共享(sharing)。
在介绍NSGA-II的整体流程之前,我们需要先了解快速非支配排序和拥挤距离的定义。
解的支配关系与Pareto最优解
下图表示了解之间的支配和强支配关系:
下图表示了一个最小化问题解集中的Pareto最优解和Pareto弱最优解:
快速非支配排序步骤
快速非支配排序就是将解集分解为不同次序的Pareto前沿的过程。
它可以描述为:
DEAP实现
DEAP内置了实现快速非支配排序操作的函数 tools.emo.sortNondominated
tools.emo.sortNondominated(indivials, k, first_front_only=False)
参数:
返回:
拥挤距离的定义
在NSGA II中,为了衡量在同一个前沿中各个解质量的优劣,作者为每个解分配了一个拥挤距离。其背后的思想是 让求得的Pareto最优解在objective space中尽量分散 。也就有更大可能让解在Pareto最优前沿上均匀分布。
DEAP实现
DEAP中内置了计算拥挤距离的函数 tools.emo.assignCrowdingDist
tools.emo.assignCrowdingDist(indivials)
参数:
返回:
比较操作
根据快速非支配排序和拥挤距离计算的结果,对族群中的个体进行排序:
对两个解 ,
在每个迭代步的最后,将父代与子代合为一个族群,依照比较操作对合并后族群中的个体进行排序,然后从中选取数量等同于父代规模的优秀子代,这就是NSGA-II算法中的精英保存策略。
DEAP实现
DEAP内置了实现NSGA-II中的基于拥挤度的选择函数 tools.selNSGA2 用来实现精英保存策略:
tools.selNSGA2(indivials, k, nd='standard')
参数:
返回:
这里选用ZDT3函数作为测试函数,函数可表达为:
其Pareto最优解集为
这里为了方便可视化取 。
下图给出了该函数在Decision Space和Objective Space中的对应:
其pareto最优解在Objective Space中如下图红点所示:
将结果可视化:
得到:
可以看到NSGA-II算法得到的Pareto最优前沿质量很高:最优解均匀分布在不连续前沿的各个线段上;同时在最优前沿以外没有个体存在。
❻ 对于解决多目标优化问题,遗传算法、粒子群、模拟退火哪个比较好啊哪位大神能分析一下么
个人感觉是遗传算法吧,当然可以和模拟退火算法结合来使用。
多目标遗传算法可解决多目标优化问题,和模拟退火算法相结合时还能强化局部搜索能力。
❼ 为什么在多目标优化时选择遗传算法,而不用其他算法
会说不可以用其他算法了,遗传算法最精华就在于fitness,要是多目标优化也是把多个目标融合在一起 变成一个目标 然后再结合实际目标意义(越大越优,越小越优)进行计算fitness。至于优点,在大多数智能搜索算法里面,遗传算法的全局最优概率最大!
❽ 什么是多目标遗传算法
http://www.easyworm.com/chinese/document/Chapter4.htm
比较复杂,解释起来不知是否可行,你先去这看看吧。
大学图书馆里这些书一找一大堆,可以去翻翻
❾ 多目标遗传算法
网上搜答案第一个就是你。。题目做完了么?有所有的PPT没?