How to get data from a different array that created from same function
Show older comments
I have a data of
Position (DE,ER,OT)
13.0358109633153 7.29645405403526 1.93185356261591
11.6734834559360 1.24957327651606 0.382506369952874
19.5973279571221 2.91975489592012 3.01537406416702
19.2470045171241 1.93920480774493 1.04589509828743
6.89871768243832 9.33568916859900 2.01427092942622
5.53701248919927 1.60427609048376 2.04583332944291
7.55697709232973 1.39803559972575 2.23169951768857
1.92111202753096 6.18480688432816 0.153797552224977
11.5078816269411 7.91832559445504 1.25329718843926
9.01559229793461 5.73664601452083 0.400867067225150
Fitness
9.28064574272322
320.350630350650
5.88518035366886
11.7141376654576
8.83060849143833
5.13276803550592
5.40442492637360
2564.77531252141
18.0403993923121
472.153376001588
I try to calculate the best poisition that have the best Fitness
I use Fbest=min(Fitness) to get the best fitness from the data but i could not automaticly get the position. I know that the best fitness is 5.1327 which mean the best position is the data number 6 from data of position
How do I get the best position automaticly when I get the best Fitness ?
here are my initialization code
clc;
tic
UkPop = 30; % Size of The Population
A_loud = 0.5; % Loudness
r_ratio = 0.6; % Pulse rate
alpha = 0.9; % Alpha
gamma = alpha; % Gamma
Frek_min = 0; % Minimum freq
Frek_max = 5; % Maksimum freq
It = 1 % Iteration
MaxIt = 10 % Max Iteration
Dimensi = 3; % Dimension Parameter That will be Optimized
Frek_Bat = zeros(UkPop,1); % Frequency
Kecepatan = zeros(UkPop,Dimensi); % Velocity
Konstraint =[20 10 5 % Maximum
0.1 0.1 0.1]; % Minimum
for ix = 1:UkPop,
for is = 1:Dimensi
Bat_Position(ix,is) = Konstraint(2,is)+rand*(Konstraint(1,is)-Konstraint(2,is));
end
ER = Bat_Position(ix,1);
DE = Bat_Position(ix,2);
OT = Bat_Position(ix,3);
sim('Outer_control');
t=ScopeDatabat.time;
y=ScopeDatabat.signals.values;
for i=1:1001
error(i)=abs(y(i)^2)*t(i);
end
ITAE=sum(error);
Fitness(ix,:)=ITAE;
ITAE
ix
end
% Best
[Fitness_Min,Indeks] = min(Fitness);
posisi_terbaik_Bat = Bat_Position(Indeks,:);
2 Comments
Davide Masiello
on 10 Oct 2022
This 2 lines of code
[Fitness_Min,Indeks] = min(Fitness);
posisi_terbaik_Bat = Bat_Position(Indeks,:);
should do exactly what you are looking for.
Are they not?
Dicky Nafis
on 10 Oct 2022
Answers (0)
Categories
Find more on Curve Fitting Toolbox in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!