-
大小: 1.8MB文件类型: .rar金币: 1下载: 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
相关资源
- retinex by bilateral filter
- matlab实现手写数字识别
- 节约里程法求解CVP_MATLAB.zip
- 模糊推理系统的matlab代码
- 最小二乘支持向量机MATLAB程序附详细
- matlab实现sift算法的图像拼接
-
直流无刷电机matlab/simuli
nk仿真模型 - matlab robotics toolboox_10.2教程
- matlab车牌识别95542
- slam matlab仿真
- 树叶图像特征分类识别MATLAB程序-青橙
- kmeans图像分类
- GPC广义预测控制matlab例程
- OFDM—MIMO系统的matlab程序
- 克里金插值matlab工具包加
- 场景文字检测(matlab)
- 用MATLAB实现基于小波变换的图像融合
- SIFT算法的MATLAB 代码,可直接运行
- 基于MATLAB的树叶图像特征分类识别
- 数字图像处理作业图像加椒盐噪声加
- MATLAB双三次插值实现图像放大;MATL
- MATLAB \“slice\“切片功能实现四维显示
- MATLAB中的经济模型
- 《全面详解LTE MATLAB建模、仿真与实现
-
MATLAB Simuli
nk直接扩频通信 - 医学图像分析MATLAB代码
- 自适应模糊控制及MATLAB仿真
- Matlab手写数字识别
- 路径规划MATLAB版代码
- 用MATLAB计算随机变量的数学期望和方
评论
共有 条评论