%% 清空环境变量
warning off % 关闭报警信息
close all % 关闭开启的图窗
clear % 清空变量
clc % 清空命令行
%% 数据替换
% 将你的excel数据导入matlab,然后将输入数据换成X变量,输出预测数据换成Y变量。
% X为你的输入变量
% Y为你的输出预测变量
% 训练集——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= X((1:60),:)';%冒号代表取出来是整行或者整列,'代表转置
% P_test = X((61:end),:)';
% M = size(P_train,2);
% % 测试集—
% T_train= Y((1:60),:)';% 60代表划分给测试集的样本数
% T_test = Y((61:end),:)';
% N = size(T_test,2);
%% 数据归一化
[p_train, ps_input] = mapminmax(P_train, -1, 1);%将训练集和测试集的数据调整到0到1之间
p_test = mapminmax('apply', P_test, ps_input);
[t_train, ps_output] = mapminmax(T_train, -1, 1);% 对测试集数据做归一化
t_test = mapminmax('apply', T_test, ps_output);
%% 数据转置 为适应模型的建立
p_train = p_train'; p_test = p_test';
t_train = t_train'; t_test = t_test';
%% 参数设置
fun = @getObjValue; % 目标函数
dim = 3; % 优化参数个数
lb = [10, 10, 0.01]; % 优化参数目标下限(最大迭代次数,深度,学习率)
ub = [200, 20, 1]; % 优化参数目标上限(最大迭代次数,深度,学习率)
SearchAgents_no = 10; % 种群数量
Max_iteration = 20; % 最大迭代次数
params.objective = 'reg:linear'; % 回归函数