声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1295|回复: 1

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

[复制链接]
发表于 2006-5-13 11:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
谁有Powell方法之一编写无约束优化程序??<BR>谢谢了`~~~~~~~~~~~~~~~~~<BR>
回复
分享到:

使用道具 举报

发表于 2006-5-13 14:56 | 显示全部楼层

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

<P>powell优化搜索算法,适合于多参数优化且目标函数中不包含参数的情况<BR><BR>function [OUT]=POWELL(handles)</P>
<P>F= handles.I;  <BR>R= handles.J; % reference image</P>
<P>len=10;</P>
<P>%方向矢量矩阵存放d1,d2,d3三个方向矢量<BR>D=[1 0 0;<BR>    0 1 0;<BR>    0 0 1];<BR>%从起始点X0出发,沿方向d3进行搜索,得到最大值fZ,对应点为Z。<BR>X0=[0 0 0];<BR>d3=D(3,:);<BR>[Z,fZ,step]=oneDimSearch(R,F,X0,d3,len,handles);<BR>%从Z出发,沿方向d1进行搜索,得到最大值fX1,对应点为X1。<BR>d1=D(1,:);<BR>[X1,fX1,step]=oneDimSearch(R,F,Z,d1,len,handles);<BR>%从X1出发,沿方向d2进行搜索,得到最大值fX2,对应点为X2。<BR>d2=D(2,:);<BR>[X2,fX2,step]=oneDimSearch(R,F,X1,d2,len,handles);  <BR>%从X2出发,沿方向d3进行搜索,得到最大值fX3,对应点为X3。<BR>d3=D(3,:);<BR>[X3,fX3,step]=oneDimSearch(R,F,X2,d3,len,handles);<BR>Cha=[fZ-fX1 fX1-fX2 fX2-fX3];<BR>[maxCha,j0]=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>        [Z1,fZ1,landa]=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>              [Z,fZ,step]=oneDimSearch(R,F,X0,d3,len,handles);<BR>              %从Z出发,沿方向d1进行搜索,得到最大值fX1,对应点为X1。<BR>              d1=D(1,:);<BR>              [X1,fX1,step]=oneDimSearch(R,F,Z,d1,len,handles);<BR>              %从X1出发,沿方向d2进行搜索,得到最大值fX2,对应点为X2。<BR>              d2=D(2,:);<BR>              [X2,fX2,step]=oneDimSearch(R,F,X1,d2,len,handles);  <BR>              %从X2出发,沿方向d3进行搜索,得到最大值fX3,对应点为X3。<BR>              d3=D(3,:);<BR>              [X3,fX3,step]=oneDimSearch(R,F,X2,d3,len,handles);<BR>              Cha=[fZ-fX1 fX1-fX2 fX2-fX3];<BR>              [maxCha,j0]=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>
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-25 19:22 , Processed in 0.052209 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表