函数为:
function MAX=optFx(x)
clc;
clear;
% t0=clock;
%=================================================有NN=四层
NN=4;
% raa每层降解系数;
% d每环的厚度
% x=[];
raa(l)=x(1);
raa(2)=x(2);
raa(3)=x(3);
raa(4)=x(4);
d(2)=x(5);
d(3)=x(6);
d(4)=x(7);
d(5)=x(8);
d(6)=x(9);
d(7)=40;
d(1)=0;
%以下是通过参数raa和d求Mt的值
................
Rr2(1)=h(1);
for i=2:N
Rr1(i)=Rr2(i-1)+h(i);
Rr2(i)=Rr1(i)+d(i);
end
for l=1:1:NN
u=0;
ra=raa(l);
rc=3.03*10^(-9);
for i=1:Nx
for j=1:Ny
u=unifrnd(0,1);
if r1(i,j)==0
r2(i,j,l)=-log(1-u)/(log(175*175)*ra*3600);
elseif r1(i,j)==1
r2(i,j,l)=-log(1-u)/(rc*log(175*175)*3600);
else
r2(i,j,l)=0.1;
end
end
end
end
.............
..............
dt=1;
dd=50;
[er,Mt]=suberosiondr(Nx,Ny,NN,dt,dd,r2,r33);
%以上是利用参数raa和d求得r2和r33,再求得Mt
% 目标曲线ft(t)=(1/600)*(t-100);
ft=0;
for t=101:700
ft(t)=(1/600)*(t-101);
Ft(t)=abs(ft(t)-Mt(t));
end
MAX=max(Ft);
上面是程序,其主要功能是利用参数raa和d通过数值方法求得一时间序列Mt,MAX是误差的最大值,优化目标是Mt与ft最接近,即误差最大值MAX最小,寻找此时的参数raa和d。
请教此优化问题如何解决? |