% 用遗传算法求 20+x^2+y^2-10*(cos(2*pi*x)+cos(2*pi*y) 的最小值
function my_ga_test1()
figure
ezsurf(@(x,y)20+x^2+y^2-10*(cos(2*pi*x)+cos(2*pi*y)),[-5 5],[-5 5])
text(0,0,85,'\downarrowglobelmin(0,0)','EdgeColor','red','FontSize',18,'BackgroundColor',[.7 .9 .7]);
figure
ezcontour(@(x,y)20+x^2+y^2-10*(cos(2*pi*x)+cos(2*pi*y)),[-1 1],[-1 1])
text(0,0,'\downarrowglobelmin(0,0)','FontSize',18);
disp('please press any key to continue.....')
pause()
FitnessFunction = @simple_fitness;
numberOfVariables = 2;
opt= gaoptimset('PlotFcns',{@gaplotbestf,@gaplotmaxconstr},'Display','iter',...
'PopulationSize',50, 'Generations',100,'StallGenLimit', 50,'StallTimeLimit',50,'CrossoverFraction',0.8,'MutationFcn',@mutationadaptfeasible);
[x_ga,fval_ga] = ga(FitnessFunction,numberOfVariables,[],[],[],[],[],[],[],opt)
x0=rand(1,2);
[x1 f1]=fminsearch(FitnessFunction,x0)
[x2 f2]=fminunc(FitnessFunction,x0)
[x_ps,fval_ps] = patternsearch(FitnessFunction,x0)
[x_sa,fval_sa]= simulannealbnd(FitnessFunction,x0)
function y = simple_fitness(x)
y = 20+x(1)^2+x(2)^2-10*(cos(2*pi*x(1))+cos(2*pi*x(2)));