%% 清空环境变量
warning off % 关闭报警信息
close all % 关闭开启的图窗
clear % 清空变量
clc % 清空命令行
%% 导入数据
% 训练集——190个样本
%% 导入数据
% 训练集——190个样本
P_train = xlsread('data','training set','B2:G191')';
T_train= xlsread('data','training set','H2:H191')';
% 测试集——44个样本
P_test=xlsread('data','test set','B2:G45')';
T_test=xlsread('data','test set','H2:H45')';
N = size(P_test, 2); % 测试集样本数
M = size(P_train, 2); % 训练集样本数
%% 数据归一化
[p_train, ps_input] = mapminmax(P_train, 0, 1);
p_test = mapminmax('apply', P_test, ps_input);
[t_train, ps_output] = mapminmax(T_train, 0, 1);
t_test = mapminmax('apply', T_test, ps_output);
%% 参数设置
%% 获取最优正则化系数 C 和核函数参数 S
Kernel_type1 = 'rbf'; %核函数类型1
Kernel_type2 = 'poly'; %核函数类型2
%% 适应度函数
fobj=@(X)fobj(X,p_train,t_train,p_test,t_test,Kernel_type1,Kernel_type2);
%% 优化算法参数设置
pop=10;
Max_iter=20;
ub=[20 10^(3) 10^(3) 10 1]; %优化的参量分别为:正则化系数C,rbf核函数的核系数S(接下)
lb=[1 10^(-3) 10^(-3) 1 0]; %多项式核函数的两个核系数poly1和poly2,以及核权重系数w
dim=5;
%% 优化算法
[Best_score,Best_P,curve] = PSO(pop, Max_iter, lb, ub, dim, fobj);
%% 训练模型
%% 重新训练并进行预测
Regularization_coefficient= Best_P(1); %最优正则化系数
Kernel_para=Best_P(2:end); %包含3个核参数和1个核权重系数
智能算法及其模型预测