유전 알고리즘 GA 최적화 BP 신경망(GA-BP) 회귀 예측-Matlab 코드 구현

I. 소개

    유전 알고리즘(GA) 및 역전파 신경망(Backpropagation Neural Network, BPNN)은 일반적으로 사용되는 최적화 알고리즘 및 모델이며, 회귀 예측 문제를 최적화하기 위해 조합하여 사용할 수 있습니다.

    유전 알고리즘을 사용하여 BP 신경망의 회귀 예측 문제를 최적화할 때, 유전 알고리즘 최적화 알고리즘의 검색 능력과 BP 신경망의 학습 능력을 결합하여 양자의 장점을 최대한 활용할 수 있으므로, 더 나은 회귀 예측 결과를 얻기 위해.

    유전 알고리즘의 주요 아이디어는 생물학적 진화 과정에서 자연 선택과 적합도 증가 과정을 시뮬레이션하고 선택, 교배 및 돌연변이와 같은 작업을 통해 인구의 적합도를 지속적으로 최적화하고 최종적으로 최적의 솔루션을 얻는 것입니다. . BP 신경망의 회귀 예측 문제를 최적화하기 위해 유전자 알고리즘을 사용할 때 BP 신경망의 매개변수는 염색체에 코딩되며 각 유전자는 매개변수의 값을 나타냅니다. 더 나은 회귀 예측 결과를 얻기 위해 모집단의 염색체를 지속적으로 업데이트합니다. 즉, BP 신경망의 매개변수를 지속적으로 업데이트합니다.

    BP 신경망은 일반적으로 사용되는 인공 신경망 모델로 학습 능력과 적응성이 강합니다. BP 신경망은 역전파 알고리즘을 통해 가중치와 편향 항목을 지속적으로 조정하여 예측 오류를 점진적으로 줄여 보다 정확한 회귀 예측 결과를 얻습니다. 유전 알고리즘을 이용하여 BP 신경망의 회귀 예측 문제를 최적화할 때 유전 알고리즘 최적화의 목적 함수로 BP 신경망의 매개변수를 사용하고, 적합도 함수로 예측 오차를 사용하여 더 나은 회귀 예측 결과를 얻기 위해 BP 신경망의 매개변수.

코드 획득: 여기를 클릭하여 바로 이동

2, 코드의 일부

net=newff(inputn,outputn,hiddennum_best,{'tansig','purelin'},'trainlm');% 建立模型

%网络参数配置
net.trainParam.epochs=1000;         % 训练次数
net.trainParam.lr=0.01;             % 学习速率
net.trainParam.goal=0.00001;        % 训练目标最小误差
net.trainParam.show=25;             % 显示频率
net.trainParam.mc=0.01;             % 动量因子
net.trainParam.min_grad=1e-6;       % 最小性能梯度
net.trainParam.max_fail=6;          % 最高失败次数

%初始化ga参数 
PopulationSize_Data=30;       %初始种群规模
MaxGenerations_Data=60;       %最大进化代数
CrossoverFraction_Data=0.8;   %交叉概率
MigrationFraction_Data=0.2;   %变异概率
nvars=inputnum*hiddennum_best+hiddennum_best+hiddennum_best*outputnum+outputnum; 
lb=repmat(-3,nvars,1);    %自变量下限
ub=repmat(3,nvars,1);     %自变量上限

%调用遗传算法函数
options = optimoptions('ga');
options = optimoptions(options,'PopulationSize', PopulationSize_Data);
options = optimoptions(options,'CrossoverFraction', CrossoverFraction_Data);
options = optimoptions(options,'MigrationFraction', MigrationFraction_Data);
options = optimoptions(options,'MaxGenerations', MaxGenerations_Data);
options = optimoptions(options,'SelectionFcn', @selectionroulette);   %轮盘赌选择
options = optimoptions(options,'CrossoverFcn', @crossovertwopoint);   %两点交叉
options = optimoptions(options,'MutationFcn', {  @mutationgaussian [] [] });   %高斯变异
options = optimoptions(options,'Display', 'iter');    %‘off’为不显示迭代过程,‘iter’为显示迭代过程
options = optimoptions(options,'PlotFcn', { @gaplotbestf });    %最佳适应度作图
%求解
[x,fval] = ga(@fitness,nvars,[],[],[],[],lb,ub,[],[],options);

3. 시뮬레이션 결과

(1) 실험식에 따르면 최적의 은닉층 노드 수는 입력 및 출력 노드의 수를 통해 구합니다.

(2) 예측 비교 차트 및 오류 차트

 (3) BP 및 GA-BP의 다양한 오류 표시기

(4) 유전 알고리즘 GA 적합도 값 진화 곡선

 (5) BP 및 GA-BP 모델의 회귀 다이어그램

(6) BP 및 GA-BP 모델의 오차 히스토그램

4. 결론

    유전알고리즘과 BP 신경망은 모두 무작위성을 기반으로 하는 알고리즘이므로 동일한 매개변수 집합의 최적화 결과가 다를 수 있으며 모델의 견고성과 신뢰성을 검증하기 위해 여러 번의 반복 실험이 필요하다는 점에 유의해야 합니다.

추천

출처blog.csdn.net/baoliang12345/article/details/130331210