多目标遗传算法matlab
Ⅰ 急求一份多目标遗传算法matlab代码!
我给你一个标准遗传算法程序供你参考:
该程序是遗传算法优化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]);
提问者评价
谢谢!
Ⅱ MATlab 遗传算法处理多目标的优化问题,计算目标函数值的时候出现问题
1 您确定ZBX ZBY ZBZ都是标量吗?
2 改成
if norm([ZBX ZBY ZBZ])<0.5
试试?
Ⅲ 用遗传算法工具箱求解一个多目标优化问题,现在需要一个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值。
Ⅳ 有关用matlab遗传算法解决多目标函数的问题
你打算吧多目标怎么处理? 转化为单目标 还是pareto解
Ⅳ 谁会用MATLAB基于遗传算法求解多目标函数的最小值。
如果你的函数是求maxf(x)的问题,要编程求最小值问题,那么你需要对这个函数取负值求最小值即可
举例来说:
求max(z)=ax+bx^2
等同于
求min(z)=-(ax+bx^2)
Ⅵ matlab程序Pareto 遗传多目标算法
您好,GA不论是在应用、算法设计上,还是在基础理论上,均取得了长足的发展,应用也非常广泛.本文通过对基本遗传算法的研究,以及对其在多目标优化问题上的实现,在遗传算法领域进行探讨,并通过程序来验证.在多目标优化问题的研究中,所采用的一些方法在一些算例中获得了比较好的Pareto解集.
遗传算法作为求解全局优化问题的有力工具之一,应用十分广泛,目前主要应用在以下几个领域:
(1)基于遗传算法的机器学习(GeneticBaseMachineLearning).这一新的学习机制给解决人工智能中知识获取和知识优化精炼的瓶颈难题带来了希望。
(2)遗传算法与其他计算智能方法的相互渗透和结合.
(3)并行处理的遗传算法的研究十分活跃.这一研究不仅是对遗传算法本身的发展,而且对新一代智能计算机体系结构的研究都是十分重要的.(4)遗传算法在数据挖掘(DataMining)领域中的应用。
Ⅶ Matlab遗传算法计算多目标优化
太难了。。。。。
Ⅷ 怎么评价MATLAB中gamultiobj函数(多目标遗传算法)的计算结果比如下面的函数和其部分结果
您好,多目标遗传算法可以得到Pareto Front图,即您展示的结果。至于评价方法应由您自己确定,比如最简单的线性加权函数评价方法,评价值Evalue=w1*minf1(x1,x2)+w2*minf2(x1,x2),其中w1+w2=1。
总的来说,就是依据自己的需要进行评价,matlab中不含有评价方法(因为评价方法很灵活)。
Ⅸ matlab,遗传算法,多目标函数求极值
如何用matlab求多目标函数求极值?实际上处理的方法和单目标是一样的,你可以这样来自定义目标函数。例如:
function [z1,z2,z3]=myfun(x)
z1=目标函数表达式 1
z2=目标函数表达式 2
z3=目标函数表达式 3
end
然后,用ga()遗传算法函数调用其函数。调用格式:
fitnessfcn=@myfun;
nvars=变量数;
[x,fval,exitflag] = ga(fitnessfcn,nvars)
Ⅹ 如何用matlab解决多元遗传算法问题
如何用matlab解决多元遗传算法的极值问题?可以按下列步骤做
1、首先,建立自定义带条件的最大值目标函数文件,ga_fun.m
if x(1)+x(2)>=-1
y=-(exp(-0.1*(x(1)^4+x(2)^4))+ exp(cos(2*pi*x(1))+cos(2*pi*x(2)))
)
else
y=inf
end
式中:x=x(1),y=x(2)
2、利用ga遗传算法工具箱求解
3、在工具箱中,Fitness function项输入@ga_fun;Number of variables项输入2;Lower项输入[-1,2];Upper项输入[2,1];
4、点击Start按钮,运行可以得到 fmax(0,0)值(Objective function value)。说明这里负号是最大值的标志
运行界面