PaperFight Site
一定要善于利用各种 LLM 和编程助手。优先建议国外的比如 Gemini 等 LLM,以及 GitHub Copilot 或者 Claude Code 这种编程助手。
neocode
为神经网络 PID 整定的 Python 代码。
包含 Python 部分的服务器代码和神经网络等。可复用的主要是服务器代码。
neomatlabcode
包含 neocode SCI 论文的 代码。
运行的逻辑是:
.slx文件是 Simulink 的仿真模型文件,可以 设置仿真时间和仿真求解器等。.mlx文件是 MATLAB 实时脚本,用它来设置一些仿真所需的变量并唤起仿真。.slx中的 MATLAB 函数模块,调用getNextData函数创建客户端,与 Python 程序进行连接并进行数据交互。
训练信号的生成
训练信号不要设置成实际运行时的参考 r。一般来说信号丰富一些能够更好地让 AI 进行学习,包括让 AI 形成一个控制器或者让 AI 给出控制器的参数(PID)整定。
比如如下 MATLAB 代码
matlab
%% PID 神经网络训练输入信号生成器
clear; clc;
% 参数设置
T_total = 300; % 总时长 (s)
Ts = 0.1; % 采样时间 (s)
t = 0:Ts:T_total; % 时间向量
N = length(t); % 采样点数
%% 1. 生成多尺度随机阶跃信号 (作为主参考输入)
% 目的是模拟不同幅值和持续时间的设定值变化
ref = zeros(1, N);
step_count = 15; % 随机跳变的次数
change_points = sort(randperm(N, step_count)); % 随机选择跳变点
amplitudes = (rand(1, step_count+1) - 0.5) * 20; % 随机幅值在 [-10, 10] 之间
last_idx = 1;
for i = 1:step_count
ref(last_idx:change_points(i)) = amplitudes(i);
last_idx = change_points(i);
end
ref(last_idx:end) = amplitudes(end);
%% 2. 叠加正弦扫频信号 (增加频率覆盖范围)
% 帮助神经网络学习系统的高频响应
f0 = 0.01; % 起始频率 (Hz)
f1 = 0.5; % 截止频率 (Hz)
chirp_signal = 0.5 * chirp(t, f0, T_total, f1);
%% 3. 生成外部干扰信号 (Disturbance)
% 在 150s 处模拟一个突发的负载扰动
dist = zeros(1, N);
dist(t >= 150 & t <= 160) = -3; % 持续 10s 的负向阶跃干扰
% 叠加轻微的高斯白噪声 (测量噪声)
noise = 0.05 * randn(1, N);
%% 4. 合成最终训练信号
% 输入信号 = 随机阶跃 + 扫频 + 噪声
u_train = ref + chirp_signal + noise;
%% 5. 数据可视化
figure('Color', 'w', 'Name', 'PID NN Training Data');
subplot(2,1,1);
plot(t, ref, 'LineWidth', 1.5, 'DisplayName', 'Base Reference (Steps)');
hold on;
plot(t, u_train, 'Color', [0.85, 0.33, 0.1], 'DisplayName', 'Combined Input (Rich)');
grid on;
legend;
title('Training Reference Signal (Target)');
ylabel('Amplitude');
subplot(2,1,2);
plot(t, dist, 'r', 'LineWidth', 1.2, 'DisplayName', 'Load Disturbance');
hold on;
plot(t, noise, 'Color', [0.5, 0.5, 0.5, 0.3], 'DisplayName', 'Measurement Noise');
grid on;
legend;
title('Disturbances and Noise');
xlabel('Time (s)');
ylabel('Amplitude');
% 导出数据格式建议:[时间, 输入信号值, 干扰值]
% training_data = [t', u_train', dist'];得到的输入曲线大致如下图所示
