function [pf, ps] = Pareto(name, no, dim)
if nargin<3, dim = 3; end
if nargin<2, no = 500; end
switch name
case 'UF1'
pf = zeros(2,no);
pf(1,:) = linspace(0,1,no);
pf(2,:) = 1-sqrt(pf(1,:));
ps = zeros(dim,no);
ps(1,:) = linspace(0,1,no);
ps(2:dim,:) = sin(6.0*pi*repmat(ps(1,:),[dim-1,1]) + repmat((2:dim)',[1,no])*pi/dim);
case 'UF2'
pf = zeros(2,no);
pf(1,:) = linspace(0,1,no);
pf(2,:) = 1-sqrt(pf(1,:));
ps = zeros(dim,no);
ps(1,:) = linspace(0,1,no);
X1 = repmat(ps(1,:),[dim,1]);
A = 6.0*pi*X1 + pi/dim*repmat((1:dim)',[1,no]);
B = 0.3*X1.*(X1.*cos(4.0*A)+2.0).*cos(A);
ps(3:2:dim,:) = B(3:2:dim,:);
B = 0.3*X1.*(X1.*cos(4.0*A)+2.0).*sin(A);
ps(2:2:dim,:) = B(2:2:dim,:);
clear A B;
case 'UF3'
pf = zeros(2,no);
pf(1,:) = linspace(0,1,no);
pf(2,:) = 1-sqrt(pf(1,:));
ps = zeros(dim,no);
ps(1,:) = linspace(0,1,no);
ps(2:dim,:) = repmat(ps(1,:),[dim-1,1]).^(0.5+1.5*(repmat((0:1:(dim-2))',[1,no]))/(dim-2.0));
case 'UF4'
pf = zeros(2,no);
pf(1,:) = linspace(0,1,no);
pf(2,:) = 1-pf(1,:).^2;
ps = zeros(dim,no);
ps(1,:) = linspace(0,1,no);
ps(2:dim,:) = sin(6.0*pi*repmat(ps(1,:),[dim-1,1]) + repmat((2:dim)',[1,no])*pi/dim);
case 'UF5'
no = 21;
pf = zeros(2,no);
pf(1,:) = (0:1:20)/20.0;
pf(2,:) = 1-pf(1,:);
ps = zeros(dim,no);
ps(1,:) = pf(1,:);
ps(2:dim,:) = sin(6.0*pi*repmat(ps(1,:),[dim-1,1]));
case 'UF6'
num = floor(no/3);
pf = zeros(2,no);
pf(1,1:num) = 0.0;
pf(1,(num+1):(2*num)) = linspace(0.25,0.5,num);
pf(1,(2*num+1):no) = linspace(0.75,1.0,no-2*num);
pf(2,:) = 1-pf(1,:);
ps = zeros(dim,no);
ps(1,:) = pf(1,:);
ps(2:dim,:) = sin(6.0*pi*repmat(ps(1,:),[dim-1,1]) + repmat((2:dim)',[1,no])*pi/dim);
case 'UF7'
pf = zeros(2,no);
pf(1,:) = linspace(0,1,no);
pf(2,:) = 1-pf(1,:);
ps = zeros(dim,no);
ps(1,:) = linspace(0,1,no);
ps(2:dim,:) = sin(6.0*pi*repmat(ps(1,:),[dim-1,1]) + repmat((2:dim)',[1,no])*pi/dim);
case {'UF8','UF10'}
num = floor(sqrt(no));
no = num*num;
[s,t] = meshgrid(linspace(0,1,num),linspace(0,1,num));
ps = zeros(dim,no);
ps(1,:) = reshape(s,[1,no]);
ps(2,:) = reshape(t,[1,no]);
ps(3:dim,:) = 2.0*repmat(ps(2,:),[dim-2,1]).*sin(2.0*pi*repmat(ps(1,:),[dim-2,1]) + repmat((3:dim)',[1,no])*pi/dim);
pf = zeros(3,no);
pf(1,:) = cos(0.5*pi*ps(1,:)).*cos(0.5*pi*ps(2,:));
pf(2,:) = cos(0.5*pi*ps(1,:)).*sin(0.5*pi*ps(2,:));
pf(3,:) = sin(0.5*pi*ps(1,:));
clear s t;
case 'UF9'
num = floor(sqrt(no));
no = num*num;
noA = floor(num/2);
A = zeros(1,num);
A(1,1:noA) = linspace(0,0.25,noA);
A(1,noA+1:num) = linspace(0.75,1,num-noA);
[s,t] = meshgrid(A,linspace(0,1,num));
ps = zeros(dim,no);
ps(1,:) = reshape(s,[1,no]);
ps(2,:) = reshape(t,[1,no]);
ps(3:dim,:) = 2.0*repmat(ps(2,:),[dim-2,1]).*sin(2.0*pi*repmat(ps(1,:),[dim-2,1]) + repmat((3:dim)',[1,no])*pi/dim);
pf = zeros(3,no);
pf(1,:) = ps(1,:).*ps(2,:);
pf(2,:) = (1.0-ps(1,:)).*ps(2,:);
pf(3,:) = 1.0-ps(2,:);
clear A s t;
case 'CF1'
no = 21;
pf = zeros(2,no);
pf(1,:) = (0:1:20)/20.0;
pf(2,:) = 1-pf(1,:);
ps = [];
case 'CF2'
no = floor(no/3.0);
pf = zeros(2,3*no);
pf(1,(no+1):(2*no)) = linspace(0.25^2,0.25,no);
pf(1,(2*no+1):(3*no)) = linspace(0.75^2,1.0,no);
pf(2,:) = 1-sqrt(pf(1,:));
ps = [];
case 'CF3'
no = floor(no/3.0);
pf = zeros(2,3*no);
pf(1,(no+1):(2*no)) = linspace(0.25^0.5,0.5^0.5,no);
pf(1,(2*no+1):(3*no)) = linspace(0.75^0.5,1.0^0.5,no);
pf(2,:) = 1-pf(1,:).^2;
ps = [];
case {'CF4','CF5'}
no = floor(no/4.0);
pf = zeros(2,4*no);
pf(1,1:(2*no)) = linspace(0,0.5,2*no);
pf(2,1:(2*no)) = 1-pf(1,1:(2*no));
pf(1,(2*no+1):(3*no)) = linspace(0.5,0.75,no);
pf(2,(2*no+1):(3*no)) = -0.5*pf(1,(2*no+1):(3*no))+0.75;
pf(1,(3*no+1):(4*no)) = linspace(0.75,1.0,no);
pf(2,(3*no+1):(4*no)) = 1.125-pf(1,(3*no+1):(4*no));
ps = [];
case {'CF6','CF7'}
no = floor(no/4.0);
pf = zeros(2,4*no);
pf(1,1:(2*no)) = linspace(0,0.5,2*no);
pf(2,1:(2*no)) = (1.0-pf(1,1:(2*no))).^2;
pf(1,(2*no+1):(3*no)) = linspace(0.5,0.75,no);
pf(2,(2*no+1):(3*no)) = 0.5*(1.0-pf(1,(2*no+1):(3*no)));
pf(1,(3*no+1):(4*no)) = linspace(0.75,1.0,no);
pf(2,(3*no+1):(4*no)) = 0.25*sqrt(1.0-pf(1,(3*no+1):(4*no)));
ps = [];
case 'CF8'
no = floor(no/5.0);
pf = zeros(3,5*no);
for k = 0:1:4
s = k*no+1;
e = k*no+no;
pf(3,s:e) = linspace(0,1,no);
pf(1,s:e) = sqrt(k/4.0*(1.0-pf(3,s:e).^2));
pf(2,s:e) = sqrt(1-pf(1,s:e).^2-pf(3,s:e).^2);
end
ps = [];
case {'CF9','CF10'}
no1 = floor(sqrt(no/12));
no = 4*no1*no1;
pf = zeros(3,3*no);
s = 1;
e = no;
pf(1,s:e) = 0;
pf(2,s:e) = linspace(0,1,no);
pf(3,s:e) = sqrt(1-pf(2,s:e).^2);
for k = 1:1:2
s = k*no+1;
e = k*no+no;
A = repmat(linspace(0,1,4*no1),[no1,1]);
B = repmat((linspace(2*k-1, 2*k, no1)/4.0)',[1,4*no1]);
B = sqrt(B.*repmat(1-linspace(0,1,4*no1).^2,[no1,1]));
pf(3,s:e) = reshape(A,1,no);
pf(1,s:e) = reshape(B,1,no);
pf(2,s:e) = sqrt((1-pf(1,s:e).^2-pf(3,s:e).^2));
end
ps = [];
end
end
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
1.版本:matlab2021a,我录制了仿真操作录像,可以跟着操作出仿真结果 2.领域:多目标优化算法 3.内容:多目标人工蜂群算法MOABC,对比Pareto边界,仿真过程显示优化结果动态接近Pareto边界。 4.适合人群:本,硕等教研学习使用
资源推荐
资源详情
资源评论
收起资源包目录
多目标人工蜂群算法MOABC的MATLAB仿真,对比Pareto边界.rar (19个子文件)
多目标人工蜂群算法MOABC的MATLAB仿真,对比Pareto边界
操作录像0033.avi 22.99MB
func
Dominates.m 156B
Calculate_IGD.m 414B
Update_Archive.m 412B
PlotCosts.m 301B
UF7.m 510B
SelectLeader.m 610B
FindGridIndex.m 563B
DetermineDomination.m 426B
DeleteArcMemebr.m 984B
Pareto.m 7KB
Send_Employed_Bees.m 869B
xboundary.m 768B
Send_Onlooker_Bees.m 1KB
RouletteWheelSelection.m 109B
Init.m 417B
CreateGrid.m 521B
Send_Scout_Bees.m 225B
Runme.m 2KB
共 19 条
- 1
资源评论
- 夏里松风2023-11-24资源内容详细,总结地很全面,与描述的内容一致,对我启发很大,学习了。
fpga和matlab
- 粉丝: 16w+
- 资源: 2561
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功