您现在的位置:首页 >> 机器学习 >> 内容

m基于分段蚁群算法优化SVM的数据预测matlab仿真

时间:2023/1/8 18:51:51 点击:

  核心提示:05_052_m,包括程序操作录像+参考文献...

1.完整项目描述和程序获取

>面包多安全交易平台:https://mbd.pub/o/bread/Y56Tmpdw

>如果链接失效,可以直接打开本站店铺搜索相关店铺:

点击店铺

>如果链接失效,程序调试报错或者项目合作可以加微信或者QQ联系。

2.部分仿真图预览



3.算法概述

       支持向量机(support vector machines, SVM)是二分类算法,所谓二分类即把具有多个特性(属性)的数据分为两类,目前主流机器学习算法中,神经网络等其他机器学习模型已经能很好完成二分类、多分类,学习和研究SVM,理解SVM背后丰富算法知识,对以后研究其他算法大有裨益;在实现SVM过程中,会综合利用之前介绍的一维搜索、KKT条件、惩罚函数等相关知识。本篇首先通过详解SVM原理,后介绍如何利用python从零实现SVM算法。

4.部分源码

if SEL == 1

%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%通过ACO搜索最优的2个参数

%% 输入参数列表

%迭代次数

K     = 20;

%蚁群规模

N     = 10;

%信息素蒸发系数

Rho   = 0.8;

%信息素增加强度

Q     = 0.75;

%蚂蚁爬行速度

Lambda= 0.4;

%决策变量的下界,M×1的向量

LB    =[1000,0.002,1];

%决策变量的上界,M×1的向量

UB    =[20000,0.02,2];

%% 第一步:初始化

M  = length(LB);%决策变量的个数

%蚁群位置初始化

X  = zeros(M,N);

for i=1:M

    x=unifrnd(LB(i),UB(i),1,N);

    X(i,:)=x;

end

%输出变量初始化

BESTX = cell(K,1);%细胞结构,每一个元素是M×1向量,记录每一代的最优个体

BESTY = zeros(K,1);%K×1矩阵,记录每一代的最优个体的评价函数值

k     = 1;%迭代计数器初始化

Tau   = ones(1,N);%信息素初始化

Y     = zeros(1,N);%适应值初始化

%% 第二步:迭代过程

while k<=K

    k

    YY=zeros(1,N);

    for n=1:N

        x     = X(:,n);

        J     = func_fitness(X_train,X_test,T_train,T_test,x(1),x(2),x(3));

        YY(n) = J;

    end

    maxYY   = max(YY);

    temppos = find(YY==maxYY);

    POS     = temppos(1);

    %蚂蚁随机探路

    for n=1:N

        x   = X(:,n);

        J   = func_fitness(X_train,X_test,T_train,T_test,x(1),x(2),x(3));

        Fx  = J;

        mx  = x + Lambda*rand*x;           

        J   = func_fitness(X_train,X_test,T_train,T_test,mx(1),mx(2),mx(3));

        Fmx = J;

        if Fmx<Fx

            X(:,n)=mx;

            Y(n)=Fmx;

        else

            X(:,n)=x;

            Y(n)=Fx;

        end

    end

    %朝信息素最大的地方移动

    for n=1:N

        rng(n*k);

        if n~=POS & rand <= 1-k/K

.............................................................

        end

    end

    indy     = find(Y==0);

    Y(indy)  = 1;

    %更新信息素并记录

    Tau      = Tau*(1-Rho);

    maxY     = max(Y);

    minY     = min(Y);

    DeltaTau = Q*(maxY-Y)/(maxY-minY)/1e1;

    p        = 0.05*Tau;

    Tau      = (1-p).*Tau + DeltaTau;

    minY     = min(Y);

    pos4     = find(Y==minY);

    BESTX{k} = X(:,pos4(1));

    %更新移动速度

    if k <= 1

       e1     = minY; 

       Lambda = Lambda;

    else

       Lambda = Lambda + 0.15*(minY-e1); 

       e1     = minY; 

    end

    k=k+1;

end

C0      = BESTX{end}(1);

gamma0  = BESTX{end}(2);

tt0     = BESTX{end}(3);

save ACO.mat C0 gamma0 tt0

end

if SEL == 2

load ACO.mat

%调用四个最优的参数

C     = C0;

gamma = gamma0;

tt    = tt0;

cmd       = ['-s 3',[' -t ', num2str(ceil(tt))],[' -c ', num2str(C)],[' -g ',num2str(gamma)],' -p 0.00001']; 

model     = svmtrain(T_train,X_train,cmd);

[yIn,input1ps] = mapminmax(In');

[Predict1,error1] = svmpredict(Out,yIn',model);

05_052_m

作者:我爱C编程 来源:我爱C编程
本站最新成功开发工程项目案例
相关文章
相关评论
发表我的评论
  • 大名:
  • 内容:
本类固顶
  • 没有
  • FPGA/MATLAB商业/科研类项目合作(www.store718.com) © 2025 版权所有 All Rights Reserved.
  • Email:1480526168@qq.com 站长QQ: 1480526168