热门标签 | 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

     



推荐阅读
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了如何使用python从列表中删除所有的零,并将结果以列表形式输出,同时提供了示例格式。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 禁止程序接收鼠标事件的工具_VNC Viewer for Mac(远程桌面工具)免费版
    VNCViewerforMac是一款运行在Mac平台上的远程桌面工具,vncviewermac版可以帮助您使用Mac的键盘和鼠标来控制远程计算机,操作简 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
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社区 版权所有