GA fitness function with variables in a summation
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
What is the best way to define the following fitness function for GA optimization?
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1185408/image.png)
where
are the variables to be found with GA-toolbox. N can be a positive integer.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1185373/image.png)
2 Commenti
Risposta accettata
Star Strider
il 8 Nov 2022
Modificato: Star Strider
il 8 Nov 2022
I still do not completely understand what you want to do.
Perhaps this —
Z = randn(16,1) + 1j*randn(16,1); % Creeate Data
omega = (0:15).'; % Creeate Data
objfcn = @(b,x) b(1) + 1i.*x.*b(2) + 1./(b(3) + 1j.*x.*b(4)); % Objective Function
Parms = 4; % Number Of Parameters To Be Estimated
ftnsfcn = @(b) norm(Z - objfcn(b,omega)); % Fitness Function
[B,fval,exitflag,output,population,scores] = ga(ftnsfcn, Parms, [],[],[],[], zeros(1,Parms)); % Genetic Algorithm Call
fprintf('\nR\t= %15.3f\nL\t= %15.3f\nG\t= %15.3f\nC\t= %15.3f\n',B)
fprintf('\nFinal Fitness Value = %15.6f\n',fval)
fprintf('\nGenerations = %6d\n', output.generations)
fprintf('\nMessage: %s\n',output.message)
figure
plot(omega, real(Z), 'pm', 'DisplayName','Re(Z)')
hold on
plot(omega, imag(Z), 'pc', 'DisplayName','Im(Z)')
plot(omega, real(objfcn(B,omega)), '-m', 'DisplayName','Re(Z_{est})')
plot(omega, imag(objfcn(B,omega)), '-c', 'DisplayName','Im(Z_{est})')
hold off
grid
legend('Location','best')
I do not understand the reason for the summation in the objective funciton, so I do not use it here.
It may be necessary to run ga a few times to get the best fit (save the results each time), however it should be possible to get a decent fit to your data.
EDIT — Corrected typographical errors.
.
4 Commenti
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Genetic Algorithm in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!