⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 matlab遗传算法现在参数优化中的应用.txt

📁 MATLAB绘制出权值wv和阀值bv确定的误差曲面
💻 TXT
字号:
遗传算法现在参数优化中的应用2007/06/02 23:30(1)De Jong函数
二维的De Jong函数图形如下
[x1,x2] = meshgrid(-512:4:512);
f=x1.^2+x2.^2;
mesh(x1,x2,f); 
xlabel('x1');
ylabel('x2');
zlabel('f(x1,x2)');
函数的代码
function [eval]=dejong(sol)
numv = size(sol,2);
x=sol(1:numv);
eval=sum(x.^2);







De Jong

De Jong函数适值的代码
function [sol,eval]=dejongmin(sol,options)
numv = size(sol,2)-1;
x=sol(1:numv);
eval=dejong(x);
eval=-eval;

求解的代码
%维数n=3
%设置参数边界
bounds = ones(3,1)*[-512 512];
%遗传算法优化
[p,endPop,bestSols,trace]=ga(bounds,'dejongmin');

%性能跟踪
plot(trace(:,1),trace(:,3),'b-')
hold on
plot(trace(:,1),trace(:,2),'r-')
xlabel('Generation');
ylabel('Fittness');
legend('解的变化','种群平均值的变化');

>> p

p =

   1.0e-003 *

     0.2500     0.1567     0.0500    -0.0001
此时,De Jong函数的适值的极小值为dejong(p)=1.0e-003* -0.0001

(2) Rosenbrock函数
二维的Rosenbrock函数绘制图如下
[x1,x2] = meshgrid(-512:1:512);
f=100*(x2-x1.^2).^2+(1-x1).^2;
mesh(x1,x2,f); 
xlabel('x1');
ylabel('x2');
zlabel('f(x1,x2)');







Rosenbrock

Rosenbrock函数适值
function [sol,eval]=rosenbrockmin(sol,options)
numv = size(sol,2)-1;
x=sol(1:numv);
eval=rosenbrock(x);
eval=-eval;

求解过程
%维数n=4
%设置参数边界
bounds = ones(4,1)*[-512 512];

%遗传算法优化
[p,endPop,bestSols,trace]=ga(bounds,'rosenbrockMin');

%性能跟踪
plot(trace(:,1),trace(:,3),'b-')
hold on
plot(trace(:,1),trace(:,2),'r-')
xlabel('Generation');
ylabel('Fittness');
legend('解的变化','种群平均值的变化');

注:该程序求出的解有很大的不确定性,有待改进,最优解为1 1 1 1,极小值为0

(3)


function [eval]=griewangk(sol)
numv = size(sol,2);
x=sol(1:numv);
multi=1;
for i=1:numv
   multi=multi*cos(x(i)/sqrt(i));
end
eval=sum(x.^2/4000)-multi+1;

function [sol,eval]=griewangkmin(sol,options)
numv = size(sol,2)-1;
x=sol(1:numv);
eval=griewangk(x);
eval=-eval;

%维数n=6
%设置参数边界
bounds = ones(6,1)*[-512 512];

%遗传算法优化
[p,endPop,bestSols,trace]=ga(bounds,'griewangkmin');

%性能跟踪
plot(trace(:,1),trace(:,3),'b-')
hold on
plot(trace(:,1),trace(:,2),'r-')
xlabel('Generation');
ylabel('Fittness');
legend('解的变化','种群平均值的变化');

同样不稳定,最优解应为0 0 0 最小值应为0




[x1,x2] = meshgrid(-500:5:50);
f=x1.^2/4000+x2.^2/4000-cos(x1)*cos(x2/sqrt(2))+1;
mesh(x1,x2,f); 
xlabel('x1');
ylabel('x2');
zlabel('f(x1,x2)');


函数代码
function [eval]=rosenbrock(sol)
numv = size(sol,2);
x=sol(1:numv);
summ=0;
for i=1:numv-1
   summ=summ+100*(x(i+1)-x(i).^2).^2+(1-x(i)).^2;
end
eval=summ; 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -