西风独自凉 发表于 2012-3-31 14:52:49

搜索最值如何让变量搜遍定义域

本帖最后由 西风独自凉 于 2012-3-31 14:53 编辑

计算下列函数的最小值 f=5*sin(x(1)*x(2))+x(1)^2+x(2)^2';
x(1)和x(2)的范围为 [-5 5]
我采用遗传算法工具箱求解了上述问题的最小值。matlab代码如下:

适应度函数:

function f=GA_demo(x)
f=5*sin(x(1)*x(2))+x(1)^2+x(2)^2';

主程序:

clear
clc
fitnessfcn = @GA_demo;         % 适应度函数句柄
nvars = 2;         % 个体的变量数目
options = gaoptimset('PopulationSize',100,'EliteCount',10,'CrossoverFraction',0.75,'Generations',500,'StallGenLimit',500,'TolFun',1e-100,'PlotFcns',{@gaplotbestf,@gaplotbestindiv}); %参数设置
=ga(fitnessfcn,nvars,[],[],[],[], [-5 -5],,[],options)   % 调用ga函数
结果如下:

x_best =

    1.0767   -1.0767


fval =

   -2.2640

现在我要考察x(1)从最小值-5到 1.0767 的变化过程中,x(2)如何变化,即作出x(1)~x(2)曲线(x(2)关于x(1)的变化曲线)。请各位大侠指点一下。最好使用遗传算法、粒子群算法、模拟退火。





shamohu 发表于 2012-4-1 15:59:38

用1stOpt帮你做一个:
LoopConstant x1=[-5:0.1:1.0767];
ParameterDomain = [-5,5];
PlotLoopData x1,x2;
MinFunction 5*sin(x1*x2)+x1^2+x2^2;



西风独自凉 发表于 2012-4-2 08:24:13

本帖最后由 西风独自凉 于 2012-4-2 08:26 编辑

shamohu 发表于 2012-4-1 15:59 http://forum.simwe.com/static/image/common/back.gif
用1stOpt帮你做一个:

谢谢版主的指导,我想对下面目标函数进行优化,然后再作出x(1)~x(2)曲线(x(2)关于x(1)的变化曲线)。版主能不能给看看怎么做。
目标函数:变量x(1)范围 x2范围

function F=fitness(x)
p=1.225;
B=31;
m=17800;
I=2173000;
wh=0.099*2*pi;
wa=0.186*2*pi;
ch=0;
ca=0;

k=B*x(1)/2/x(2);
y1=(pi./k)';
xx1=;
yy1=;
H1=interp1(xx1,yy1,y1,'cubic');%样条插值

xx2=;
yy2=;
H2=interp1(xx2,yy2,y1,'cubic');

xx3=;
yy3=;
H3=interp1(xx3,yy3,y1,'cubic');

xx4=;
yy4=;
H4=interp1(xx4,yy4,y1,'cubic');

xx5=;
yy5=;
A1=interp1(xx5,yy5,y1,'cubic');

xx6=;
yy6=;
A2=interp1(xx6,yy6,y1,'cubic');

xx7=;
yy7=;
A3=interp1(xx7,yy7,y1,'cubic');

xx8=;
yy8=;
A4=interp1(xx8,yy8,y1,'cubic');
F=((x(1)/wh)^4*(1+p*B^2*H4/m+p*B^4*A3/I-p*B^2/m*p*B^4/I*A2*H1+p*B^2*p*B^4*A1*H2/m/I+p*B^2*p*B^4*A3*H4/m/I-p*B^2*p*B^4*A4*H3/m/I)+(x(1)/wh)^3*(2*ca*wa*p*B^2*H1/wh/m+2*ch*p*B^4*A2/I)+(x(1)/wh)^2*(-wa^2/(wh^2)-wa^2*p*B^2*H4/(wh^2)/m-1-p*B^4*A3/I-4*ch*ca*wa/wh)+(wa/wh)^2)^2+((x(1)/wh)^4*(p*B^2*H1/m+p*B^4*A2/I+p*B^2/m*p*B^4/I*A3*H1-p*B^2*p*B^4*A1*H3/m/I+p*B^2*p*B^4*A2*H4/m/I-p*B^2*p*B^4*A4*H2/m/I)+(x(1)/wh)^3*(-2*ca*wa/wh-2*ca*wa*p*B^2*H4/wh/m-2*ch-2*ch*p*B^4*A3/I)+(x(1)/wh)^2*(-wa^2*p*B^2*H1/(wh^2)/m-p*B^4*A2/I)+(x(1)/wh)*(2*ch*wa^2/wh^2+2*ca*(wa/wh)))^2;

页: [1]
查看完整版本: 搜索最值如何让变量搜遍定义域