% 导入负荷数据集
load(‘load_dataset.mat’); % 导入负荷数据集,包含输入特征和目标值
% 数据预处理
X = load_dataset(:, 1:end-1); % 输入特征
Y = load_dataset(:, end); % 目标值
% 归一化处理
Xnorm = normalize(X);
Ynorm = normalize(Y);
% 定义问题的参数和函数
nVar = size(Xnorm, 2); % 输入特征数量
VarSize = [1 nVar]; % 个体大小
MaxIt = 100; % 最大迭代次数
nPop = 50; % 种群数量
% 定义TSA算法的参数
delta = 0.1; % 控制步长
% 初始化种群
empty_individual.Position = [];
empty_individual.Cost = [];
pop = repmat(empty_individual, nPop, 1);
% 初始化最优解
best_sol.Cost = inf;
% 初始化种群
for i = 1:nPop
% 随机生成解
pop(i).Position = unifrnd(-1, 1, VarSize);
% 计算适应度
pop(i).Cost = CostFunction(pop(i).Position, Xnorm, Ynorm);
% 更新最优解
if pop(i).Cost < best_sol.Cost
best_sol = pop(i);
end
end
% 迭代优化
for it = 1:MaxIt
new_pop = repmat(empty_individual, nPop, 1);
for i = 1:nPop
% 选择父代
p = TournamentSelection(pop, 2);
% 生成子代
c = empty_individual;
c.Position = pop(i).Position + delta * (best_sol.Position - pop(i).Position) + delta * (pop(p(1)).Position - pop(p(2)).Position);
% 边界处理
c.Position = max(c.Position, -1);
c.Position = min(c.Position, 1);
% 计算适应度
c.Cost = CostFunction(c.Position, Xnorm, Ynorm);
% 更新最优解
if c.Cost < best_sol.Cost
best_sol = c;
end
% 存储子代
new_pop(i) = c;
end
% 更新种群
pop = new_pop;
% 显示迭代结果
disp(['Iteration ' num2str(it) ': Best Cost = ' num2str(best_sol.Cost)]);
end
% 提取最佳解
best_position = best_sol.Position;
% 构建TCN模型
layers = [
sequenceInputLayer(nVar)
temporalConvolutionLayer(10, 64, 4, ‘Padding’,