热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

【SVM预测】灰狼算法优化svm支持向量机预测matlab源码

预测模型参数的选取对其泛化能力和预测准确度,起着至关重要作用。基于径向基核函数的最小二乘支持向量机参数主要涉及惩罚因子和核函数参数,这两个参数的选择将直接影响最小二乘支持向量机的学

预测模型参数的选取对其泛化能力和预测准确度,起着至关重要作用。基于径向基核函数的最小二乘支持向量机参数主要涉及惩罚因子和核函数参数,这两个参数的选择将直接影响最小二乘支持向量机的学习和泛化能力。为了提高最小二乘支持向量机的预测结果,文章用灰狼优化算法对其参数寻优,建立软件老化预测模型。通过实验证明了该模型,对软件老化的预测表现出很好的效果。

遗留在软件中的缺陷会随软件系统长期持续运行造成计算机内存泄漏、舍入误差积累、文件锁未释放等现象发生,导致系统性能衰退甚至崩溃。这些软件老化现象的发生不仅降低了系统可靠性,严重时还会危害人的生命财产安全。为了减轻软件老化带来的危害,对软件老化趋势进行预测,采取抗衰策略避免软件老化现象的发生尤为重要[1]。

国内外很多科研机构,如贝尔实验室、IBM、南京大学、武汉大学[2]、西安交通大学[3]等,都对软件老化展开了深入研究,并取得了一些成果。他們研究的主要方向是通过对软件老化趋势的预测,找到软件抗衰策略最佳执行时机。

本文以Tomcat服务器为研究对象,监测Tomcat运行情况,收集系统性能参数,建立基于灰狼优化算法的最小二乘支持向量机软件老化预测模型。预测软件运行状态,确定软件抗衰策略执行时机。

1 最小二乘支持向量机

支持向量机(Support Vector Machine,SVM)是由Cortes和Vapnik[4]提出的。SVM以VC维理论和结构风险最小化原理为基础,可以很好地解决小样本、非线性、高维数和局部极小值等问题。

当训练样本数目越多,SVM求解二次规划问题越复杂,模型训练时间过长。Snykens等[5]提出最小二乘支持向量机(Least Squares Support Vector Machine,LSSVM),艮P在SVM的基础上用等式约束条件代替不等式约束,将二次规划问题转化为线性方程组问题,很大程度上的避免了 SVM大量的复杂计算,降低了训练难度。近年来LSSVM广泛应用于回归估计和非线性建模等领域,取得了良好的预测效果。

本文采用径向基核函数作为LSSVM模型的核函数。基于径向基核函数的LSSVM算法参数主要涉及惩罚因子C和核函数参数〃,本文采用灰狼优化算法对LSSVM的参数寻优。

2 灰狼优化算法

2014年,Mirjalili等[6]提出灰狼优化(Grey WolfOptimizer,GWO)算法,GWO算法通过模拟自然界灰狼的等级制度和捕食策略,寻找最优值。GWO算法以快速收敛性、调节参数少,在求解函数优化问题中表现出更加优越性而备受关注。该方法在全局搜索性、收敛性等方面优于粒子群优化算法、差分进化算法和引力搜索算法,并在特征子集选择、表面波参数优化等领域广泛应用。

2.1 灰狼优化算法原理

灰狼个体间通过协同合作来实现种群的繁荣发展,尤其是在捕猎过程中灰狼群体有着严格的金字塔式社会等级制度。等级最高的狼为α,剩下的灰狼个体被依次被标记为β,δ,ω,它们协同合作进行捕食。

在整个灰狼群体中,α狼扮演捕猎过程中领导者的角色,负责狩猎过程中的决策及管理整个狼群;β狼和δ狼是适应度次佳的群体,它们协助α狼对整个狼群进行管理,在狩猎过程中拥有决策权;剩余灰狼个体被定义为ω,协助α,β,δ对猎物进行攻击。

2.2 灰狼优化算法描述

GWO算法模仿狼群狩猎行为将整个狩猎的过程分为包围、追捕、攻击3个阶段,捕获猎物的过程就是寻找最优解的过程。假设灰狼所处的解空间是V维,灰狼群体X由N个灰狼个体组成,即X=[Xi;X2,…,XN];对于灰狼个体Xi(1≤i≤N)来说,它在V维空间中的位置Xi=[Xi1;Xi2,…,XiV],该灰狼个体位置与猎物所处位置的距离由适应度来衡量,距离越小适应度越大。GWO算法寻优过程如下。

2.2.1 包围

首先对猎物进行包围,在此过程中猎物与灰狼之间的距离用数学模型表示为:

其中:Xp(m)为第m次迭代后猎物位置,X(m)为灰狼位置,D为灰狼和猎物之间的距离,A和C分别是收敛因子和摆动因子,计算公式为:

2.2.2 追捕

GWO算法的寻优过程是根据α,β和δ的位置,来定位猎物位置。ω狼在α,β,δ狼的引导下对猎物进行追捕,根据当前最佳搜索单位的位置更新它们各自位置,并根据更新后α,β,δ位置重新确定猎物位置。狼群个体位置会随猎物的逃跑而改变,此阶段更新过程的数学描述为:

2.2.3 攻击

狼群对猎物进行攻击并捕获猎物,得到最优解。该过程通过式(2)中递减实现。当1≤∣A∣,表明狼群会更加接近猎物,这时狼群就会缩小搜索范围进行局部搜索;当1<∣A∣,狼群就会朝远离猎物方向分散开,扩大搜索范围进行全局搜索

 

  1.  

    tic % 计时
    %% 清空环境导入数据
    clear
    clc
    close all
    format long
    load wndspd
    %% GWO-SVR
    input_train=[
    560.318,1710.53; 562.267,1595.17; 564.511,1479.78; 566.909,1363.74; 569.256,1247.72; 571.847,1131.3; 574.528,1015.33;
    673.834,1827.52; 678.13,1597.84; 680.534,1482.11; 683.001,1366.24; 685.534,1250.1; 688.026,1133.91; 690.841,1017.81;
    789.313,1830.18; 791.618,1715.56; 796.509,1484.76; 799.097,1368.85; 801.674,1252.76; 804.215,1136.49; 806.928,1020.41;
    904.711,1832.73; 907.196,1718.05; 909.807,1603.01; 915.127,1371.43; 917.75,1255.36; 920.417,1139.16; 923.149,1023.09;
    1020.18,1835.16; 1022.94,1720.67; 1025.63,1605.48; 1028.4,1489.91; 1033.81,1258.06; 1036.42,1141.89; 1039.11,1025.92;
    1135.36,1837.45; 1138.33,1722.94; 1141.35,1607.96; 1144.25,1492.43; 1147.03,1376.63; 1152.23,1144.56; 1154.83,1028.73;
    1250.31,1839.19; 1253.44,1725.01; 1256.74,1610.12; 1259.78,1494.74; 1262.67,1379.1; 1265.43,1263.29; 1270.48,1031.58;
    1364.32,1840.51; 1367.94,1726.52; 1371.2,1611.99; 1374.43,1496.85; 1377.53,1381.5; 1380.4,1265.81; 1382.89,1150.18;
    1477.65,1841.49; 1481.34,1727.86; 1485.07,1613.64; 1488.44,1498.81; 1491.57,1383.71; 1494.47,1268.49; 1497.11,1153.04;
    1590.49,1842.51; 1594.53,1729.18; 1598.15,1615.15; 1601.61,1500.72; 1604.72,1385.93; 1607.78,1271.04; 1610.43,1155.93;
    1702.82,1843.56; 1706.88,1730.52; 1710.65,1616.79; 1714.29,1502.66; 1717.69,1388.22; 1720.81,1273.68; 1723.77,1158.8;
    ];
    input_test=[558.317,1825.04; 675.909,1712.89; 793.979,1600.35; 912.466,1487.32;
    1031.17,1374.03; 1149.79,1260.68; 1268.05,1147.33; 1385.36,1034.68;1499.33,1037.87;1613.11,1040.92;1726.27,1044.19;];

    output_train=[
    235,175; 235,190; 235,205; 235,220; 235,235; 235,250; 235,265;
    250,160; 250,190; 250,205; 250,220; 250,235; 250,250; 250,265;
    265,160; 265,175; 265,205; 265,220; 265,235; 265,250; 265,265;
    270,160; 270,175; 270,190; 270,220; 270,235; 270,250; 270,265;
    285,160; 285,175; 285,190; 285,205; 285,235; 285,250; 285,265;
    290,160; 290,175; 290,190; 290,205; 290,220; 290,250; 290,265;
    305,160; 305,175; 305,190; 305,205; 305,220; 305,235; 305,265;
    320,160; 320,175; 320,190; 320,205; 320,220; 320,235; 320,250;
    335,160; 335,175; 335,190; 335,205; 335,220; 335,235; 335,250;
    350,160; 350,175; 350,190; 350,205; 350,220; 350,235; 350,250;
    365,160; 365,175; 365,190; 365,205; 365,220; 365,235; 365,250;

    ];
    output_test=[235,160; 250,175; 265,190;270,205; 285,220; 290,235; 305,250; 320,265; 335,265; 350,265; 365,265;];

    % 生成待回归的数据
    x = [0.1,0.1;0.2,0.2;0.3,0.3;0.4,0.4;0.5,0.5;0.6,0.6;0.7,0.7;0.8,0.8;0.9,0.9;1,1];
    y = [10,10;20,20;30,30;40,40;50,50;60,60;70,70;80,80;90,90;100,100];
    X = input_train;
    Y = output_train;
    Xt = input_test;
    Yt = output_test;
    %% 利用灰狼算法选择最佳的SVR参数
    SearchAgents_no=60; % 狼群数量
    Max_iteration=500; % 最大迭代次数
    dim=2; % 此例需要优化两个参数c和g
    lb=[0.1,0.1]; % 参数取值下界
    ub=[100,100]; % 参数取值上界

    Alpha_pos=zeros(1,dim); % 初始化Alpha狼的位置
    Alpha_score=inf; % 初始化Alpha狼的目标函数值,change this to -inf for maximization problems

    Beta_pos=zeros(1,dim); % 初始化Beta狼的位置
    Beta_score=inf; % 初始化Beta狼的目标函数值,change this to -inf for maximization problems

    Delta_pos=zeros(1,dim); % 初始化Delta狼的位置
    Delta_score=inf; % 初始化Delta狼的目标函数值,change this to -inf for maximization problems

    PositiOns=initialization(SearchAgents_no,dim,ub,lb);

    Convergence_curve=zeros(1,Max_iteration);

    l=0; % 循环计数器




    % %% SVM网络回归预测
    % [output_test_pre,acc,~]=svmpredict(output_test',input_test',model_gwo_svr); % SVM模型预测及其精度
    % test_pre=mapminmax('reverse',output_test_pre',rule2);
    % test_pre = test_pre';
    %
    % gam = [bestc bestc]; % Regularization parameter
    % sig2 =[bestg bestg];
    % model = initlssvm(X,Y,type,gam,sig2,kernel); % 模型初始化
    % model = trainlssvm(model); % 训练
    % Yp = simlssvm(model,Xt); % 回归

    plot(1:length(Yt),Yt,'r+:',1:length(Yp),Yp,'bo:')
    title('+为真实值,o为预测值')


    % err_pre=wndspd(104:end)-test_pre;
    % figure('Name','测试数据残差图')
    % set(gcf,'unit','centimeters','position',[0.5,5,30,5])
    % plot(err_pre,'*-');
    % figure('Name','原始-预测图')
    % plot(test_pre,'*r-');hold on;plot(wndspd(104:end),'bo-');
    % legend('预测','原始')
    % set(gcf,'unit','centimeters','position',[0.5,13,30,5])
    %
    % result=[wndspd(104:end),test_pre]
    %
    % MAE=mymae(wndspd(104:end),test_pre)
    % MSE=mymse(wndspd(104:end),test_pre)
    % MAPE=mymape(wndspd(104:end),test_pre)
    %% 显示程序运行时间
    toc

     



推荐阅读
  • 1.执行sqlsever存储过程,消息:SQLServer阻止了对组件“AdHocDistributedQueries”的STATEMENT“OpenRowsetOpenDatas ... [详细]
  • 使用PHP实现网站访客计数器的完整指南
    本文详细介绍了如何利用PHP构建一个简易的网站访客统计系统。通过具体的代码示例和详细的解释,帮助开发者理解和实现这一功能,适用于初学者和有一定经验的开发人员。 ... [详细]
  • 采用IKE方式建立IPsec安全隧道
    一、【组网和实验环境】按如上的接口ip先作配置,再作ipsec的相关配置,配置文本见文章最后本文实验采用的交换机是H3C模拟器,下载地址如 ... [详细]
  • 本文详细介绍了在腾讯云服务器上配置 phpMyAdmin 的方法,包括安装、配置和解决常见问题。通过这些步骤,您可以轻松地在腾讯云环境中部署并使用 phpMyAdmin。 ... [详细]
  • 本文介绍了数据库体系的基础知识,涵盖关系型数据库(如MySQL)和非关系型数据库(如MongoDB)的基本操作及高级功能。通过三个阶段的学习路径——基础、优化和部署,帮助读者全面掌握数据库的使用和管理。 ... [详细]
  • 目录一、salt-job管理#job存放数据目录#缓存时间设置#Others二、returns模块配置job数据入库#配置returns返回值信息#mysql安全设置#创建模块相关 ... [详细]
  • ZooKeeper集群脑裂问题及其解决方案
    本文深入探讨了ZooKeeper集群中可能出现的脑裂问题,分析其成因,并提供了多种有效的解决方案,确保集群在高可用性环境下的稳定运行。 ... [详细]
  • 本文详细介绍了优化DB2数据库性能的多种方法,涵盖统计信息更新、缓冲池调整、日志缓冲区配置、应用程序堆大小设置、排序堆参数调整、代理程序管理、锁机制优化、活动应用程序限制、页清除程序配置、I/O服务器数量设定以及编入组提交数调整等方面。通过这些技术手段,可以显著提升数据库的运行效率和响应速度。 ... [详细]
  • 历经三十年的开发,Mathematica 已成为技术计算领域的标杆,为全球的技术创新者、教育工作者、学生及其他用户提供了一个领先的计算平台。最新版本 Mathematica 12.3.1 增加了多项核心语言、数学计算、可视化和图形处理的新功能。 ... [详细]
  • 深入解析Serverless架构模式
    本文将详细介绍Serverless架构模式的核心概念、工作原理及其优势。通过对比传统架构,探讨Serverless如何简化应用开发与运维流程,并介绍当前主流的Serverless平台。 ... [详细]
  • 如何使用Ping命令来测试网络连接?当网卡安装和有关参数配置完成后,可以使用ping命令来测试一下网络是否连接成功。以winXP为例1、打开XP下DOS窗口具体操作是点击“开始”菜 ... [详细]
  • 深入解析Java虚拟机(JVM)架构与原理
    本文旨在为读者提供对Java虚拟机(JVM)的全面理解,涵盖其主要组成部分、工作原理及其在不同平台上的实现。通过详细探讨JVM的结构和内部机制,帮助开发者更好地掌握Java编程的核心技术。 ... [详细]
  • 本文详细介绍了一种通过MySQL弱口令漏洞在Windows操作系统上获取SYSTEM权限的方法。该方法涉及使用自定义UDF DLL文件来执行任意命令,从而实现对远程服务器的完全控制。 ... [详细]
  • 本文回顾了2017年的转型和2018年的收获,分享了几家知名互联网公司提供的工作机会及面试体验。 ... [详细]
  • Python 工具推荐 | PyHubWeekly 第二十一期:提升命令行体验的五大工具
    本期 PyHubWeekly 为大家精选了 GitHub 上五个优秀的 Python 工具,涵盖金融数据可视化、终端美化、国际化支持、图像增强和远程 Shell 环境配置。欢迎关注并参与项目。 ... [详细]
author-avatar
侬田写e
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有