xinyuan110 发表于 2006-5-13 11:28

[求助]谁有Powell方法之一编写无约束优化程序??

谁有Powell方法之一编写无约束优化程序??<BR>谢谢了`~~~~~~~~~~~~~~~~~<BR>

happy 发表于 2006-5-13 14:56

回复:(xinyuan110)[求助]谁有Powell方法之一编写无...

<P>powell优化搜索算法,适合于多参数优化且目标函数中不包含参数的情况<BR><BR>function =POWELL(handles)</P>
<P>F= handles.I;<BR>R= handles.J; % reference image</P>
<P>len=10;</P>
<P>%方向矢量矩阵存放d1,d2,d3三个方向矢量<BR>D=;<BR>%从起始点X0出发,沿方向d3进行搜索,得到最大值fZ,对应点为Z。<BR>X0=;<BR>d3=D(3,:);<BR>=oneDimSearch(R,F,X0,d3,len,handles);<BR>%从Z出发,沿方向d1进行搜索,得到最大值fX1,对应点为X1。<BR>d1=D(1,:);<BR>=oneDimSearch(R,F,Z,d1,len,handles);<BR>%从X1出发,沿方向d2进行搜索,得到最大值fX2,对应点为X2。<BR>d2=D(2,:);<BR>=oneDimSearch(R,F,X1,d2,len,handles);<BR>%从X2出发,沿方向d3进行搜索,得到最大值fX3,对应点为X3。<BR>d3=D(3,:);<BR>=oneDimSearch(R,F,X2,d3,len,handles);<BR>Cha=;<BR>=max(Cha);</P>

<P> e=9;<BR> FANSHU=X3-X0;<BR> Y=sum( FANSHU.*FANSHU );<BR> aaa=0;<BR>while(Y&gt;e )<BR>    aaa=aaa+1;<BR>      % d为这一轮产生的新方向向量 <BR>      d=X3-Z;<BR>      %从点X3出发沿d进行一轮搜索,得到最大值fZ1,对应点Z1以及到达极值点的步长landa。<BR>      =oneDimSearch(R,F,X3,d,len,handles);<BR>      temp=sqrt( (fX3-fZ1)/maxCha );<BR>      %判断是否替换方向向量<BR>      if( abs(landa) &lt;= temp )<BR>            %共轭性没有得到增强,不替换方向向量,重新进行搜索,不过X0换成Zk1,即起始点换成Zk1。<BR>            X0=Z1;<BR>         else<BR>            %共轭性得到增强,替换选定的方向向量d_j0。d_j0=d_j0+1,....,d_n=d。并用X3替换X0。然后从Zk1出发重新进行搜索<BR>            D(4,:)=d;<BR>                for i=j0:3<BR>                     D(i,:)=D(i+1,:);<BR>                end<BR>            X0=Z1;</P>
<P>      end<BR>      <BR>      <BR>      %%%%%%<BR>            %从起始点X0(已被Z1替代)出发,沿方向d3进行搜索,得到最大值fZ,对应点为Z。<BR>            <BR>            d3=D(3,:);<BR>            =oneDimSearch(R,F,X0,d3,len,handles);<BR>            %从Z出发,沿方向d1进行搜索,得到最大值fX1,对应点为X1。<BR>            d1=D(1,:);<BR>            =oneDimSearch(R,F,Z,d1,len,handles);<BR>            %从X1出发,沿方向d2进行搜索,得到最大值fX2,对应点为X2。<BR>            d2=D(2,:);<BR>            =oneDimSearch(R,F,X1,d2,len,handles);<BR>            %从X2出发,沿方向d3进行搜索,得到最大值fX3,对应点为X3。<BR>            d3=D(3,:);<BR>            =oneDimSearch(R,F,X2,d3,len,handles);<BR>            Cha=;<BR>            =max(Cha);<BR>            <BR>            FANSHU=X3-X0;<BR>            Y=sum( FANSHU.*FANSHU );<BR>       %%%%%%<BR>end<BR>OUT(1)=X3(2); <BR>OUT(2)=X3(1); <BR>OUT(3)=-X3(3); <BR>OUT(4)=fX3; </P>
页: [1]
查看完整版本: [求助]谁有Powell方法之一编写无约束优化程序??