-
大小: 1.8MB文件类型: .rar金币: 2下载: 0 次发布日期: 2023-09-01
- 语言: Matlab
- 标签: nsga2 matlab optimization
资源简介
Matlab编写多目标优化算法NSGA-Ⅱ的详解以及论文详解
代码片段和文件信息
function NSGAII()
clc;
% format compact;
tic;
% hold on
%--初始化 参数设定
generations=100; %迭代次数
popnum=100; %种群大小(偶数)
poplength=30; %个体长度
minvalue=repmat(zeros(1poplength)popnum1); %个体最小值---B = repmat(A m n) %将矩阵A复制m*n块,即B由m*n块A平铺而成
maxvalue=repmat(ones(1poplength)popnum1); %个体最大值
population=rand(popnumpoplength).*(maxvalue-minvalue)+minvalue; %产生新的初始种群
%--开始迭代进化
for gene=1:generations %开始迭代
%--交叉
newpopulation=zeros(popnumpoplength); %子代种群
for i=1:popnum/2 %交叉产生子代
k=randperm(popnum); %从种群中随机选择出两个父母,不采用二进制联赛方法
beta=(-1).^round(rand(1poplength)).*abs(randn(1poplength))*1.481; %采用正态分布交叉产生两个子代
newpopulation(i*2-1:)=(population(k(1):)+population(k(2):))/2+beta.*(population(k(1):)-population(k(2):))./2; %产生第一个子代
newpopulation(i*2:)=(population(k(1):)+population(k(2):))/2-beta.*(population(k(1):)-population(k(2):))./2; %产生第二个子代
end
%--变异
k=rand(size(newpopulation)); %随机选择要变异的基因位
miu=rand(size(newpopulation)); %采用多项式变异
temp=k<1/poplength & miu<0.5; %要变异的基因位
newpopulation(temp)=newpopulation(temp)+(maxvalue(temp)-minvalue(temp)).*((2.*miu(temp)+(1-2.*miu(temp)).*(1-(newpopulation(temp)-minvalue(temp))./(maxvalue(temp)-minvalue(temp))).^21).^(1/21)-1); %变异情况一
newpopulation(temp)=newpopulation(temp)+(maxvalue(temp)-minvalue(temp)).*(1-(2.*(1-miu(temp))+2.*(miu(temp)-0.5).*(1-(maxvalue(temp)-newpopulation(temp))./(maxvalue(temp)-minvalue(temp))).^21).^(1/21)); %变异情况二
%--越界处理/种群合并
newpopulation(newpopulation>maxvalue)=maxvalue(newpopulation>maxvalue); %子代越上界处理
newpopulation(newpopulation newpopulation=[population;newpopulation]; %合并父子种群
%--计算目标函数值
functionvalue=zeros(size(newpopulation1)2); %合并后种群的各目标函数值,这里问题是ZDT1
functionvalue(:1)=newpopulation(:1); %计算第一维目标函数值
g=1+9*sum(newpopulation(:2:poplength)2)./(poplength-1);
functionvalue(:2)=g.*(1-(newpopulation(:1)./g).^0.5); %计算第二维目标函数值
%--非支配排序
fnum=0; %当前分配的前沿面编号
cz=false(1size(functionvalue1)); %记录个体是否已被分配编号
frontvalue=zeros(size(cz)); %每个个体的前沿面编号
[functionvalue_sortednewsite]=sortrows(functionvalue); %对种群按第一维目标值大小进行排序 则第一行个体p即为种群中支配个体p的数量为零的个体,Np=0
while ~all(cz) %开始迭代判断每个个体的前沿面,采用改进的deductive sort
fnum=fnum+1;
d=cz;
for i=1:size(functionvalue1) %:(1)找到种群中所有n=0的个体,并保存在当前集合F1中;
if ~d(i)
for j=i+1:size(functionvalue1) %判断i对应的所有集合里面的支配和非支配的解,被i支配则为1,不被i支配则为0
if ~d(j)
k=1;
for m=2:size(functionvalue2) %判断是否支配,找到个体p不支配的个体,标记为k=0
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 5838 2019-06-10 13:52 nsga2\nsga2.m
文件 310 2019-06-10 13:52 nsga2\备注.txt
文件 1970580 2019-06-10 13:52 nsga2\非支配排序遗传算法(NSGA)的研究与应用.pdf
目录 0 2019-06-10 13:52 nsga2
----------- --------- ---------- ----- ----
1976728 4
相关资源
- MATLAB 经典程序源代码大全
- MATLAB小波软阈值去噪代码33473
- 天线阵的波束形成在MATLAB仿真程序及
- 非线性SVM算法-matlab实现
- 《MATLAB 智能算法超级学习手册》-程序
- 组合导航matlab程序
- 读取txt文件内容matlab代码实现
- Matlab实现基于相关的模板匹配程序
- matlab优化工具箱讲解
- 基于MATLAB的快速傅里叶变换
- 光纤传输中的分布傅立叶算法matlab实
- 基于matlab的图像处理源程序
- matlab 椭圆拟合程序
- 算术编码解码matlab源代码
- optical_flow 光流法 matlab 实现程序
- 引导图像滤波器 Matlab实现
- 分形几何中一些经典图形的Matlab画法
- OFDM系统MATLAB仿真代码
- SVM工具箱(matlab中运行)
- 图像小波变换MatLab源代码
- LU分解的MATLAB实现
- 冈萨雷斯数字图像处理matlab版(第三
- 替代数据法的matlab程序
- 用matlab实现的多站定位系统性能仿真
- 通过不同方法进行粗糙集属性约简m
- k近邻算法matlab实现
- matlab识别系统
- 神经网络分类matlab程序
- matlab正弦信号发生器的设计
- matlab程序用Hopfield网络解决TSP
评论
共有 条评论