Im folgenden Code wird der Wert gbest
nicht mit jeder Iteration aktualisiert und zeigt Infinity
als Ergebnis an. Kann mir jemand helfen, herauszufinden, warum?Wert wird nicht innerhalb der for-Schleife aktualisiert
fgbest=Inf; % Initialization of gbest
for j=1:Popsize
% Generate Random Solution
pop(:,j)=randi([500,2000],10,1);
[obj]=objfn(pop,it);
% Evaluation
obj1(j,1) = obj(j,1);%
% Update the Personal Best
pbest(:,j) = pop(:,j);% pbest
fpbest(j,1) =obj1(j,1);% objective function
% Update Global Best
test = fgbest>fpbest(j,1);
if any(test)
gbest = pbest(:,j);
end
gbest
end
Eigentlich ist das Ziel, den Obj-Wert unter dem maximal möglichen Wert zu halten, dh. Unendlich und später möchte ich es auf den minimal möglichen Wert aktualisieren. aber danke für deinen Kommentar :) –
Es ist nicht klar, da du keine Definitionen für deine Variablen bereitstellst, aber warum brauchst du überhaupt 'any'? Ist nicht eine einzelne logische 0 oder 1 "test"? Wenn es * nicht * ist, könnte dies Ihren Fehler erklären, da 'any' sich nicht so verhält, wie Sie es für 2D-Matrizen erwarten würden. –