资源简介

果蝇参数寻优最小二乘支持向量机FOA-LSSVM的完整程序,自己写的

资源截图

代码片段和文件信息

%%FOA-LSSVM
%数据准备
clc;clear all; close all;%清空数据变量
d=1:1:30;t=1:1:24;%6月份30天的整点负荷数据、气象数据、日期类型作为历史数据,1号到29号的数据作为训练数据30号的数据作为测试数据
format long g
A=xlsread(‘E:\博士\计算工具\仿真matlab模型\预测数据\7月预测数据\7月整点负荷监测.xls‘‘B2:Y32‘);%导入7月份负荷数据
B=xlsread(‘E:\博士\计算工具\仿真matlab模型\预测数据\7月预测数据\7月气象\7月气温.xlsx‘‘B2:Y32‘);%导入7月份温度数据
C=xlsread(‘E:\博士\计算工具\仿真matlab模型\预测数据\7月预测数据\7月气象\7月相对湿度.xlsx‘‘B2:Y32‘);%导入7月份湿度数据
D=xlsread(‘E:\博士\计算工具\仿真matlab模型\预测数据\7月预测数据\7月气象\7月thi温湿指数.xlsx‘‘B2:Y32‘);%导入7月份温湿指数数据
E=xlsread(‘E:\博士\计算工具\仿真matlab模型\预测数据\7月预测数据\7月气象\7月sd人体舒适度‘‘B2:Y32‘);%导入7月份人体舒适度数据
%F=[0.3;0.3;0.1;0.1;0.1;0.1;0.2;0.2;0.1;0.1;0.1;0.1;0.1;0.2;0.2;0.1;0.1;0.1;0.1;0.1;0.2;0.2;0.1;0.1;0.1;0.1;0.1;0.2;0.2;0.1];
%F=[F F F F F F F F F F F F F F F F F F F F F F F F];%6月份日类型
%%-------------------------------------------------
%%----30号0时刻负荷预测模型
%导入数据
for j=1:24%列
Aj=A(23:30j);%31日前8天0时刻负荷数据
Bj=B(23:30j);%31日前8天0时刻温度数据
Cj=C(23:30j);%31日前8天0时刻湿度数据
Dj=D(23:30j);%31日前8天0时刻降水量数据
Ej=E(23:30j);%30日前8天0时刻风力数据
aj=[A(3015:24) A(311:j)];%0时刻前10个时刻负荷数据
bj=[B(3015:24) B(311:j)];%0时刻前10个时刻温度数据
cj=[C(3015:24) C(311:j)];%0时刻前10个时刻湿度数据
dj=[D(3015:24) D(311:j)];%0时刻前10个时刻降水量数据
ej=[E(3015:24) E(311:j)];%0时刻前10个时刻风力数据
Lj=[Aj;aj‘];
Wj=[Bj;bj‘];
Sj=[Cj;cj‘];
Jj=[Dj;dj‘];
Fj=[Ej;ej‘];
trainj=[Lj Wj Sj Jj Fj]
train_outj = [Aj‘ aj]
testj=[A(31j) B(31j) C(31j) D(31j) E(31j)] 
test_outj = A(31j)
%%数据归一化
%%归一化方法1(利用libsvm工具箱函数归一化)
[train_datajtest_dataj]=scaleForSVM(trainjtestj01)
[train_resultjtest_resultjpstrain1]=scaleForSVM(train_outj‘test_outj‘01)
%% 参数初始化
%***初始果蝇群体位置
X_axis=rands(12)
Y_axis=rands(12)
maxgen=100%迭代次数
sizepop=30%种群规模

%%定义lssvm相关参数
type=‘f‘;
kernel = ‘RBF_kernel‘;
proprecess=‘proprecess‘;

%***果蝇寻优开始
%利用嗅觉寻找食物

for i=1:sizepop
%初始果蝇个体飞行距离
X(i:)=X_axis+20*rand()-10
Y(i:)=Y_axis+20*rand()-10
%求出与原点之距离
D(i1)=(X(i1)^2+Y(i1)^2)^0.5
D(i2)=(X(i2)^2+Y(i2)^2)^0.5
%味道浓度为距离倒数,先求出味道浓度判定值
Dist=max(D(:1))
B=Dist*(0.8-rand());
S(i1)=1/D(i1)+B
S(i2)=1/D(i2)+B
%设定LSSVM参数值
type=‘f‘;
kernel = ‘RBF_kernel‘;
proprecess=‘proprecess‘;
C=10*S(i1)%利用FOA调整参数C
loss=‘einsensitive‘
e=S(i2)%利用FOA调整参数e
% 计算初始适应度
    gam=D(i1)
     sig2=D(i2)
     model=initlssvm(train_datajtrain_resultjtypegamsig2kernelproprecess);
     model=trainlssvm(model);
     %求出训练集和测试集的预测值
     [train_predict_yjztmodel]=simlssvm(modeltrain_dataj);
     [test_predict_yjztmodel]=simlssvm(modeltest_dataj);
     %预测数据反归一化
     train_predictj=mapminmax(‘reverse‘train_predict_yj‘pstrain1)%训练集预测值
     test_predictj=mapminmax(‘reverse‘test_predict_yj‘pstrain1)  %测试集预测值
     %计算均方差
    trainmsej=sum((train_predictj-train_outj).^2)/length(train_resultj)
    testmsej=sum((test_predictj-test_outj).^2)/length(test_resultj)    
    fitness(i)=testmsej      %以测试集的预测值计算的均方差为适应度值
    end
     %根据初始味道浓度值寻找初始值

评论

共有 条评论