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

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

个人收集整理资料,仅供交流学习,勿作商业用途基于遗传算法(粒子群算法、人工鱼群算法等)的投影寻踪模型MATLAB源代码投影寻踪是一种处理多因素复杂问题的统计方法,其基本思路是将高维数据向低维空间进行投影,通过低维投影数据的散布结构来研究高维数据特征,可用于聚类、分类、综合评价、预测等。投影寻踪模型最终可归结为一个非线性连续函数优化模型,可以采用遗传算法、粒子群算法、人工鱼群算法或人工免疫克隆优化算法等进行求解,得到最优的投影向量。%%第一步:仿真参数设置clcclearcloseallloaddata1.txtD=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个人收集整理资料,仅供交流学习,勿作商业用途2/10%%调用遗传算法[BESTX,BESTY,ALLX,ALLY]=GAUCP(K,N,Pm,LB,UB,D,Alpha)。矚慫润厲钐瘗睞枥庑赖賃軔朧碍鳝绢。%GreenSim团队——专业级算法设计&代写程序%欢迎访问GreenSim团队主页→%%整理输出结果Best_a=(BESTX{K})'。%方向向量d=zeros(n,p)。Djmax=max(D)。Djmin=min(D)。fori=1:nd(i,:)=(D(i,:)-Djmin)./(Djmax-Djmin)。endZ=zeros(n,1)。fori=1:nZ(i)=abs(sum(Best_a.*d(i,:)))。endZ=abs(Z)。figure%投影散布图plot(abs(Z),'bd','LineWidth',1,'MarkerEdgeColor','k','MarkerFaceColor','b','MarkerSize',5)。聞創沟燴鐺險爱氇谴净祸測樅锯鳗鲮。个人收集整理资料,仅供交流学习,勿作商业用途3/10%axis([1,12,0,2.5])。%图形边界根据需要显示gridonxlabel('','FontName','TimesNewRoman','FontSize',12)。残骛楼諍锩瀨濟溆塹籟婭骒東戇鳖納。ylabel('ProjectiveValue','FontName','TimesNewRoman','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])。%图形边界根据需要显示gridonxlabel('','FontName','TimesNewRoman','FontSize',12)。謀荞抟箧飆鐸怼类蒋薔點鉍杂篓鳐驱。ylabel('ProjectiveValue','FontName','TimesNewRoman','Fontsize',12)。厦礴恳蹒骈時盡继價骚卺癩龔长鳏檷。%%disp('最佳投影向量为')disp(Best_a)。个人收集整理资料,仅供交流学习,勿作商业用途4/10function[BESTX,BESTY,ALLX,ALLY]=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%%输出参数列表%BESTXK×1细胞结构,每一个元素是M×1向量,记录每一代的最优个体%BESTYK×1矩阵,记录每一代的最优个体的评价函数值%ALLXK×1细胞结构,每一个元素是M×N矩阵,记录全部个体%ALLYK×N矩阵,记录全部个体的评价函数值%%第一步:个人收集整理资料,仅供交流学习,勿作商业用途5/10M=length(LB)。%决策变量的个数%种群初始化,每一列是一个样本farm=zeros(M,N)。fori=1:Mx=unifrnd(LB(i),UB(i),1,N)。farm(i,:)=x。end%输出变量初始化ALLX=cell(K,1)。%细胞结构,每一个元素是M×N矩阵,记录每一代的个体ALLY=zeros(K,N)。%K×N矩阵,记录每一代评价函数值BESTX=cell(K,1)。%细胞结构,每一个元素是M×1向量,记录每一代的最优个体BESTY=zeros(K,1)。%K×1矩阵,记录每一代的最优个体的评价函数值k=1。%迭代计数器初始化%%第二步:迭代过程whilek=K%%以下是交叉过程newfarm=zeros(M,2*N)。Ser=randperm(N)。%两两随机配对的配对表A=farm(:,Ser(1))。个人收集整理资料,仅供交流学习,勿作商业用途6/10B=farm(:,Ser(2))。P0=unidrnd(M-1)。a=[A(1:P0,:)。B((P0+1):end,:)]。%产生子代ab=[B(1:P0,:)。A((P0+1):end,:)]。%产生子代bnewfarm(:,2*N-1)=a。%加入子代种群newfarm(:,2*N)=b。fori=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。endFARM=[farm,newfarm]。%%选择复制SER=randperm(3*N)。FITNESS=zeros(1,3*N)。fitness=zeros(1,N)。fori=1:(3*N)Beta=FARM(:,i)。个人收集整理资料,仅供交流学习,勿作商业用途7/10FITNESS(i)=FIT(Beta,D,Alpha)。endfori=1:Nf1=FITNESS(SER(3*i-2))。f2=FITNESS(SER(3*i-1))。f3=FITNESS(SER(3*i))。iff1=f2&&f1=f3farm(:,i)=FARM(:,SER(3*i-2))。fitness(:,i)=FITNESS(:,SER(3*i-2))。elseiff2=f1&&f2=f3farm(:,i)=FARM(:,SER(3*i-1))。fitness(:,i)=FITNESS(:,SER(3*i-1))。elsefarm(:,i)=FARM(:,SER(3*i))。fitness(:,i)=FITNESS(:,SER(3*i))。endend%%记录最佳个体和收敛曲线X=farm。Y=fitness。ALLX{k}=X。ALLY(k,:)=Y。个人收集整理资料,仅供交流学习,勿作商业用途8/10minY=min(Y)。pos=find(Y==minY)。BESTX{k}=X(:,pos(1))。BESTY(k)=minY。%%变异fori=1:NifPmrand&&pos(1)~=iAA=farm(:,i)。BB=GaussMutation(AA,LB,UB)。farm(:,i)=BB。endenddisp(k)。k=k+1。end源代码运行结果展示个人收集整理资料,仅供交流学习,勿作商业用途9/10050100150200250300-20-15-10-5函数值迭代次数0102030405060700123456ProjectiveValue个人收集整理资料,仅供交流学习,勿作商业用途10/100102030405060700123456ProjectiveValue

1 / 10
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功