基于遗传算法(粒子算法人工鱼算法等)的投影寻踪模型MATLAB源代码...

基于遗传算法(粒子算法、人工鱼算法等)的投影寻踪模型
MATLAB源代码
投影寻踪是一种处理多因素复杂问题的统计方法,其基本思路是将高维数据向低维空间进行投影,通过低维投影数据的散布结构来研究高维数据特征,可用于聚类、分类、综合评价、预测等。投影寻踪模型最终可归结为一个非线性连续函数优化模型,可以采用遗传算法、粒子算法、人工鱼算法或人工免疫克隆优化算法等进行求解,得到最优的投影向量。
%% 第一步:仿真参数设置
clc
clear
close all
电梯试验塔
D=data1。%导入D矩阵
[n,p]=size(D)。
K=300。%迭代次数
N=100。%种规模
Pm=0.3。%变异概率
LB=-ones(1,p)。%决策变量的下界
UB=ones(1,p)。%决策变量的上界
Alpha=0.1。%窗口半径系数,典型取值0.1b
%% 调用遗传算法
[BESTX,BESTY,ALLX,ALL Y]=GAUCP(K,N,Pm,LB,UB,D,Alpha)。
%  GreenSim团队——专业级算法设计&代写程序
%  欢迎访问GreenSim团队主页→
%% 整理输出结果
Best_a=(BESTX{K})'。%方向向量
d=zeros(n,p)。
Djmax=max(D)。
Djmin=min(D)。
for i=1:n连体滑雪服
d(i,:)=(D(i,:)-Djmin)./(Djmax-Djmin)。
end
Z=zeros(n,1)。
for i=1:n
Z(i)=abs(sum(Best_a.*d(i,:)))。
end
Z=abs(Z)。
figure%投影散布图
plot(abs(Z),'bd','LineWidth',1,'MarkerEdgeColor','k','MarkerFaceColor','b','MarkerSize',5)。
%axis([1,12,0,2.5])。%图形边界根据需要显示
grid on
xlabel('  ','FontName','TimesNewRoman','FontSize',12)。
ylabel('Projective Value','FontName','Times New Roman','Fontsize',12)。
figure
[newZ,I]=sort(Z)。
plot(abs(newZ),'bd','LineWidth',1,'MarkerEdgeColor','k','MarkerFaceColor','b','MarkerSize',5)。%axis([1,12,0,2.5])。%图形边界根据需要显示
grid on
xlabel('  ','FontName','TimesNewRoman','FontSize',12)。
ylabel('Projective Value','FontName','Times New Roman','Fontsize',12)。
%%
disp('最佳投影向量为')
disp(Best_a)。
function [BESTX,BESTY,ALLX,ALL Y]=IGAUCP(K,N,Pm,LB,UB,D,Alpha)
%%遗传算法求解投影寻踪模型
%  GreenSim团队——专业级算法设计&代写程序
%  欢迎访问GreenSim团队主页→
%% 输入参数列表
% K        迭代次数
% N        种规模,要求是偶数
% Pm      变异概率
% LB      决策变量的下界,M×1的向量
% UB      决策变量的上界,M×1的向量
% D        原始样本数据,n×p的矩阵
% Alpha    窗口半径系数,典型取值0.1
%% 输出参数列表
% BESTX    K×1细胞结构,每一个元素是M×1向量,记录每一代的最优个体
% BESTY    K×1矩阵,记录每一代的最优个体的评价函数值
% ALLX    K×1细胞结构,每一个元素是M×N矩阵,记录全部个体
% ALL Y    K×N矩阵,记录全部个体的评价函数值
电光调制器%% 第一步:
M=length(LB)。%决策变量的个数
%种初始化,每一列是一个样本
farm=zeros(M,N)。
for i=1:M
x=unifrnd(LB(i),UB(i),1,N)。
farm(i,:)=x。
end
%输出变量初始化
ALLX=cell(K,1)。%细胞结构,每一个元素是M×N矩阵,记录每一代的个体
取石网篮
ALL Y=zeros(K,N)。%K×N矩阵,记录每一代评价函数值
BESTX=cell(K,1)。%细胞结构,每一个元素是M×1向量,记录每一代的最优个体BESTY=zeros(K,1)。%K×1矩阵,记录每一代的最优个体的评价函数值
k=1。%迭代计数器初始化
%% 第二步:迭代过程
while k<=K
%% 以下是交叉过程
newfarm=zeros(M,2*N)。
Ser=randperm(N)。%两两随机配对的配对表
A=farm(:,Ser(1))。
B=farm(:,Ser(2))。
P0=unidrnd(M-1)。
a=[A(1:P0,:)。B((P0+1):end,:)]。%产生子代a
b=[B(1:P0,:)。A((P0+1):end,:)]。%产生子代b
newfarm(:,2*N-1)=a。%加入子代种
newfarm(:,2*N)=b。
for i=1:(N-1)
A=farm(:,Ser(i))。
B=farm(:,Ser(i+1))。
P0=unidrnd(M-1)。
a=[A(1:P0,:)。B((P0+1):end,:)]。
b=[B(1:P0,:)。A((P0+1):end,:)]。
newfarm(:,2*i-1)=a。
newfarm(:,2*i)=b。
end
FARM=[farm,newfarm]。
%% 选择复制
SER=randperm(3*N)。
FITNESS=zeros(1,3*N)。
fitness=zeros(1,N)。
for i=1:(3*N)
Beta=FARM(:,i)。
无动力滑翔伞FITNESS(i)=FIT(Beta,D,Alpha)。
end
for i=1:N
f1=FITNESS(SER(3*i-2))。
f2=FITNESS(SER(3*i-1))。
f3=FITNESS(SER(3*i))。
if f1<=f2&&f1<=f3
farm(:,i)=FARM(:,SER(3*i-2))。
fitness(:,i)=FITNESS(:,SER(3*i-2))。
elseif f2<=f1&&f2<=f3
farm(:,i)=FARM(:,SER(3*i-1))。
fitness(:,i)=FITNESS(:,SER(3*i-1))。        else
farm(:,i)=FARM(:,SER(3*i))。
fitness(:,i)=FITNESS(:,SER(3*i))。        end
end
%% 记录最佳个体和收敛曲线
X=farm。凸轮滚子
Y=fitness。
ALLX{k}=X。
ALL Y(k,:)=Y。
minY=min(Y)。
pos=find(Y==minY)。
BESTX{k}=X(:,pos(1))。
BESTY(k)=minY。
%% 变异
for i=1:N
if Pm>rand&&pos(1)~=i
AA=farm(:,i)。
BB=GaussMutation(AA,LB,UB)。            farm(:,i)=BB。
end
end
disp(k)。
k=k+1。
end
源代码运行结果展示

本文发布于:2024-09-22 19:35:16,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/258948.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:算法   投影   记录   数据
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议