How to determine Simplex using Nelder-Mead Algorithm in all direction?
Mostra commenti meno recenti
Dear All, how can I determine all the possibles simplexes while working with Nelder-Mead Algorithm? Please have a look into the illustrated picture along with codes.
function [xMin] = NMS2(objfunc,x0,alpha,beta,gamma,varargin)
N = length(x0);
% Initializing the simplex
smp = repmat(x0,1,N+1);
smp(:,2:end) = smp(:,2:end) + eye(N);
% Identify the vertices
fval = feval(objfunc,smp,varargin{:});
iter = 0;TOL = 1e-8; maxIter = 500*N;
while iter <= maxIter
% sort function values in ascending order
[fval,I2] = sort(fval);
smp = smp(:,I2);
v0 = smp(:,1);
f0 = fval(1);
fStd = std(fval);
distv0 = max(max(abs(repmat(v0,1,N)-smp(:,2:end))));
if fStd < TOL && distv0 < TOL
break;
end
vn = smp(:,N+1);
fn = fval(N+1);
%calculate the centroid over all vertices vi ~= vn
vert = mean(smp(:,1:N),2);
This is the partial code along with stopping condition.
2 Commenti
James Tursa
il 10 Feb 2020
I don't understand the question. What do you mean by "determine all the possible simplexes"?
Julkar_Mustakim
il 12 Feb 2020
Risposte (1)
James Tursa
il 12 Feb 2020
Modificato: James Tursa
il 12 Feb 2020
0 voti
The Nelder-Mead Simplex Method is an adaptive method that adjusts the lengths and directions dynamically. The vertices could be anywhere on your plot above (and outside of it), not just at the square corner points and mid-points. So your desire to determine all possible simplexes simply doesn't make sense for this algorithm. There are an infinite number of them and an infinite variety of shapes and sizes.
1 Commento
Julkar_Mustakim
il 14 Feb 2020
Categorie
Scopri di più su Optimization Toolbox in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!