clc; clear all;
tol=1E-7;
format long;
inputfile;
% return;
guessinit={P1 P2 P3 P4 P5 P6 P7 P8 P9}; %initial Simplex
plot(A(:,1),A(:,2),'r*');
hold on;
[fnvalue] = evaluatefunctioninit(guessinit,A);
err=max(fnvalue)-min(fnvalue);
maxiter=1000;
guess=guessinit;
alpha=1;
beta=0.5;
gamma=2;
delta=0.5;
itrnumber=1;
while (err>tol)
itrnumber
error=err
[xc,indw]=calcentroid(fnvalue,guess);
[xh,xs,xl,fh,fs,fl]=sorting(guess,fnvalue);
xl
% Reflect
xr= xc + alpha*(xc-xh);
fr=evaluatefunction(xr,A); % Evaluate fr
if ((fl <= fr) && (fr <= fs))
guess{indw}=xr;
% break;
end
% Expand
if (fr < fl)
xe=xc + gamma*(xr-xc);
fe=evaluatefunction(xe,A);
if (fe<fr)
guess{indw}=xe;
% break;
else
guess{indw}=xr;
% break;
end
end
%Contract Outside
if ((fs<fr) && (fr<fh))
xu=xc+beta*(xr-xc);
fu=evaluatefunction(xu,A);
if (fu<fr)
guess{indw}=xu;
end
elseif (fr >= fh)
%Contract Inside
xi=xc+beta*(xh-xc);
fi= evaluatefunction(xi,A);
if (fi< fh)
guess{indw}=xi;
end
end
%Shrink
for i=1:9
guesssh{i}= xl+ delta*(guess{i}-xl);
end
[fnvalue] = evaluatefunctioninit(guesssh,A);
err=max(fnvalue)-min(fnvalue);
guess=guesssh;
itrnumber=itrnumber+1;
[x,y]=getbspline(xl);
plot(x,y);
grid on;
pause(0.01);
end