导航:首页 > 源码编译 > 多目标规划遗传算法

多目标规划遗传算法

发布时间:2022-10-29 08:49:01

⑴ matlab程序Pareto 遗传多目标算法

您好,GA不论是在应用、算法设计上,还是在基础理论上,均取得了长足的发展,应用也非常广泛.本文通过对基本遗传算法的研究,以及对其在多目标优化问题上的实现,在遗传算法领域进行探讨,并通过程序来验证.在多目标优化问题的研究中,所采用的一些方法在一些算例中获得了比较好的Pareto解集.
遗传算法作为求解全局优化问题的有力工具之一,应用十分广泛,目前主要应用在以下几个领域:
(1)基于遗传算法的机器学习(GeneticBaseMachineLearning).这一新的学习机制给解决人工智能中知识获取和知识优化精炼的瓶颈难题带来了希望。
(2)遗传算法与其他计算智能方法的相互渗透和结合.
(3)并行处理的遗传算法的研究十分活跃.这一研究不仅是对遗传算法本身的发展,而且对新一代智能计算机体系结构的研究都是十分重要的.(4)遗传算法在数据挖掘(DataMining)领域中的应用。

⑵ 为什么在多目标优化时选择遗传算法,而不用其他算法

会说不可以用其他算法了,遗传算法最精华就在于fitness,要是多目标优化也是把多个目标融合在一起 变成一个目标 然后再结合实际目标意义(越大越优,越小越优)进行计算fitness。至于优点,在大多数智能搜索算法里面,遗传算法的全局最优概率最大!

⑶ 基于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最优前沿质量很高:最优解均匀分布在不连续前沿的各个线段上;同时在最优前沿以外没有个体存在。

⑷ 用遗传算法工具箱求解一个多目标优化问题,现在需要一个matlab程序,求高人指点

用遗传算法工具箱求解一个多目标优化问题的步骤:

1、根据题意,建立自定义目标函数,ga_fun1(x)

2、在命令窗口中,输入

>> optimtool %调用遗传算法工具箱

3、在遗传算法工具箱界面中,分别对Fitnessfunction框内输入@ga_fun1();A框内输入[1,1,1];b框内输入16;Aeq框内输入[];beq框内输入[];Lower框内输入[0,0,0];Upper框内输入[];

4、单击Start。得到x=4.508 y=2.513 z=1.912值。

⑸ 遗传算法可以用来求多目标优化么

我给你一个标准遗传算法程序供你参考:
该程序是遗传算法优化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]);

⑹ 谁能通俗的讲解一下NSGA-II多目标遗传算法

NSGA-II特别的地方就在它的选择过程上,其他的和其他算法也没什么区别。

选择过程分两个部分:
1. 把种群分成一组Pareto非支配集。一个非支配集里的个体不被当前或之后非支配集里的任何个体支配。方法就是每次选出所有不被任何其他个体支配的非支配个体,从种群里删除当一个非支配集,然后剩下的再不停重复这个过程,直到取完。
2. 按crowd distance排序。就是在各个维度左右相邻个体的距离之和。

选择的时候,先从前往后一个个取非支配集。取到手里的个体数量大于等于需要的数量了,最后一个非支配集里再怎么选?选crowd distance大的。

⑺ 多目标优化遗传算法求解混合整数规划问题

可以参考多目标寻优遗传方法的进化思路,把遗传算法修改为针对整数规划的方法就可以

⑻ MATLAB遗传算法编程(多目标优化)

多目标是通过分布性 和非劣解来进行评价的

⑼ 多目标遗传算法 目标函数的权重问题

推荐算法中几种常用的多目标变单一目标的方法:

(1)目标加权法:F(x)=∑λf(x),∑λ=1。λ可固定或随机或自适应,加权求和之前一般需要进行无量纲化处理

(2)乘除法:min F(x)=(minf1×minf2×...)/(maxfn×maxfn+1×...).

(3)主要目标法/约束法:次要目标构成对主要目标的约束条件, 缺点:需要人为设定次要目标的约束参数

谢采纳~

阅读全文

与多目标规划遗传算法相关的资料

热点内容
个人所得税java 浏览:750
多余的服务器滑道还有什么用 浏览:178
pdf劈开合并 浏览:17
不能修改的pdf 浏览:742
同城公众源码 浏览:478
一个服务器2个端口怎么映射 浏览:283
java字符串ascii码 浏览:65
台湾云服务器怎么租服务器 浏览:464
旅游手机网站源码 浏览:319
android关联表 浏览:932
安卓导航无声音怎么维修 浏览:324
app怎么装视频 浏览:426
安卓系统下的软件怎么移到桌面 浏览:83
windows拷贝到linux 浏览:759
mdr软件解压和别人不一样 浏览:892
单片机串行通信有什么好处 浏览:328
游戏开发程序员书籍 浏览:851
pdf中图片修改 浏览:277
汇编编译后 浏览:482
php和java整合 浏览:838