复合形法作业Word文档下载推荐.docx

上传人:b****3 文档编号:6185024 上传时间:2023-05-06 格式:DOCX 页数:16 大小:260.11KB
下载 相关 举报
复合形法作业Word文档下载推荐.docx_第1页
第1页 / 共16页
复合形法作业Word文档下载推荐.docx_第2页
第2页 / 共16页
复合形法作业Word文档下载推荐.docx_第3页
第3页 / 共16页
复合形法作业Word文档下载推荐.docx_第4页
第4页 / 共16页
复合形法作业Word文档下载推荐.docx_第5页
第5页 / 共16页
复合形法作业Word文档下载推荐.docx_第6页
第6页 / 共16页
复合形法作业Word文档下载推荐.docx_第7页
第7页 / 共16页
复合形法作业Word文档下载推荐.docx_第8页
第8页 / 共16页
复合形法作业Word文档下载推荐.docx_第9页
第9页 / 共16页
复合形法作业Word文档下载推荐.docx_第10页
第10页 / 共16页
复合形法作业Word文档下载推荐.docx_第11页
第11页 / 共16页
复合形法作业Word文档下载推荐.docx_第12页
第12页 / 共16页
复合形法作业Word文档下载推荐.docx_第13页
第13页 / 共16页
复合形法作业Word文档下载推荐.docx_第14页
第14页 / 共16页
复合形法作业Word文档下载推荐.docx_第15页
第15页 / 共16页
复合形法作业Word文档下载推荐.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

复合形法作业Word文档下载推荐.docx

《复合形法作业Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《复合形法作业Word文档下载推荐.docx(16页珍藏版)》请在冰点文库上搜索。

复合形法作业Word文档下载推荐.docx

三.问题求解

下面分别用复合形法和matlab工具箱分别进行求解并比较计算结果

问题一:

1-1函数的三维立体图

1-2.复合形法求解寻优趋势图

1-3.求解结果对照表

方法

复合形法

Matlab工具箱

x1

1.0004

1

x2

1.0002

f

1.8048e-07

问题二:

2-1函数的三维立体图

2-2.复合形法求解寻优趋势图

2-3.求解结果对照表

Matlab工具箱

x1

0.9950

-0.1431*e-05

-0.1431* e-05

0.9950

8.1197e-10

问题三:

3-2.复合形法求解寻优趋势图

3-3.求解结果对照表

Matlab工具箱

-2.9561

1.5345

1.0558

1.5345

0.9903

1.9860

四.结果分析

对于求解此类问题,做出目标函数的大致图形(当然只限于三维以内)有利于我们判断函数的极值点位置以及估计函数值,同时也可以用来检验计算结果的正确性。

对于问题一,两种求解方法的计算结果基本相同,但对于问题二和问题三的求解结果为何不同,我们猜想应该是matlab工具箱的求解方法对求解函数有着特殊的要求所导致的,例如,要求函数可导或者连续等。

附录:

程序(只给出问题三的求解程序,其他问题的求解类似)

一.复合形法求解程序如下:

symsst

f=-((sin(sqrt(s^2+t^2)))^2-0.5)/(1+0.001*(s^2+t^2))^2+0.5;

g=[s+44-st+44-t];

r=rand(1,6);

m=-4+(4-(-4))*r;

X=reshape(m,2,3)

[x,maxf,trace_value,trace_meanvalue]=Fuhexing(f,g,X,1.3,0.7,1,0.7,[st]);

x

maxf

[tvx,tvy]=size(trace_value);

fxx=[1:

tvy-1];

fyy=ones(1,tvy-1);

fyy=maxf*fyy;

plot(fxx,trace_value(1,2:

tvy),'

green'

fxx,trace_meanvalue(1,2:

tvy),'

blue'

fxx,fyy,'

red'

legend('最大值'

,'

平均值'

'

终值'

grid

function [x,maxf,trace_value,trace_meanvalue]=Fuhexing(f,g,X,alpha,sita,gama,beta,var,eps)

%f 目标函数

%g 约束函数

%X初始复合形

%alpha 反射系数 

%sita压缩系数

%gama扩展系数 

%beta收缩系数

%var自变量向量

%eps精度

%x 目标函数取最小值时的自变量 

%minf目标函数的最小值

trace_value=[0];

                  

%用于记录最大值的轨迹

trace_meanvalue=[0];

          

%用于记录平均值的轨迹

N=size(X);

 

n=N(2);

                    

%n为复合形的顶点个数

FX=zeros(1,n);

                  

%用于存放复合形的函数值 

ifnargin==8

eps=1.0e-6;

end

N=size(X);

n=N(2);

Fx=zeros(1,n);

while1           

%一直执行,知道找到满足收敛条件后用 break跳出循环

  fori=1:

n

  FX(i)=subs(f,var,X(:

,i));

                  

%求出复合形的函数值

  end

[XS,IX]=sort(FX);

               

%对FX从大到小排序 

Xsorted=X(:

,IX);

             

%Xsorted为排好序的X 

px=(sum(Xsorted,2)-Xsorted(:

1))/(n-1);

         

%求的除最小值以为的平均值

trace_meanvalue=[trace_meanvalue,sum(FX)/n];

Fpx=subs(f,var,px);

               

%求的平均值的函数值

aaa=subs(f,var,Xsorted(:

n));

trace_value=[trace_value,aaa];

SumF=sqrt(sum((FX-Fpx).^2)/(n-1));

              

%计算收敛值

ifSumF<

=eps

   x=Xsorted(:

n);

break;

               

%如果收敛,则退出循环 

else

 bcon_1=1;

cof_alpha=alpha;

      

%反射

whilebcon_1 

 x2=px+cof_alpha*(px-Xsorted(:

,1));

          

%x2为反射点坐标

   gx2=subs(g,var,x2);

       

%计算约束值

 if min(gx2)>

=0            

%在约束条件内

 bcon_1=0;

 else

     cof_alpha=0.5*cof_alpha;

             

%如不在约束条件内,则循环,直到到达约束条件 

  end

end

fx2=subs(f,var,x2);

             

%反射点函数值反射部分结束

   

iffx2>

XS(n)           

%如果反射部分优于最优值则进行扩张操作

cof_gama=gama;

   x3=x2+cof_gama*(x2-px);

       

%扩张 

  gx3=subs(g,var,x3);

   fx3=subs(f,var,x3);

  ifmin(gx3)>=0            

%如果符合边界, 

   iffx3>

XS(n) 

    count=1;

             

%优于最优值

      else

    count=2;

           

%比最优值差

    end

   else

      count=3;

        

%不符合边界

      end          

%扩张结束

      ifcount==1 

   Xsorted(:

1)=x3;

        

%用扩张点代替最差点 

  X=Xsorted;

   continue

else 

  Xsorted(:

1)=x2;

         

%用反色点代替最差点

  X=Xsorted;

   continue

    end

  

else            

%如果反射部分比最优值差 

 iffx2>

XS

(2)               

%如果反射部分大于次坏值,即反射部分优于次坏值则反射点代替

  Xsorted(:

1)=x2;

    X=Xsorted;

  continue 

 else

    iffx2>

XS

(1)             

%如果反射点比最差点好,比次差点差这用反射点代替最差点 

     Xsorted(:

1)=x2;

 cof_beta=beta;

    bcon_3=1;

   whilebcon_3<

4

   x4=Xsorted(:

1)+cof_beta*(px-Xsorted(:

1));

       gx4=subs(g,var,x4);

       if min(gx4)>=0      

%符合边界值 

      bcon_3=5;

             

%退出收缩

   else

      cof_beta=0.5*cof_beta;

      bcon_3=bcon_3+1;

%最多收缩系数调整 4次 

   end

    end

 

  ifmin(gx4)>

=0           

%符合边界值 

       fx4=subs(f,var,x4);

   FNnew=subs(f,var,Xsorted(:

       

%计算最差点函数值

    iffx4>

FNnew                

%如果收缩值优于最差值

       Xsorted(:

,1)=x4;

          

%收缩值代替最差值

         X=Xsorted;

        continue

     else                

%收缩值比最差值差,则对所有点进行压缩

        x0=Xsorted(:

n);

        fori=1:

n  

       Xsorted(:

i)=x0+sita*(Xsorted(:

i)-x0);

    end

  end 

  else               

%如果收缩后的值不符合边界

     x0=Xsorted(:

n);

    fori=1:

     Xsorted(:

,i)=x0+sita*(Xsorted(:

i)-x0);

         X=Xsorted;

      

%用压缩值代替原复合形

   continue 

     end 

      end

 else                 

%如果反射值比最差点还要差

      x0=Xsorted(:

,n);

      fori=1:

     Xsorted(:

i)=x0+sita*(Xsorted(:

       X=Xsorted;

       

    continue 

    end

     end 

   end 

  end

end 

X=Xsorted;

end

maxf=subs(f,var,x);

二.matlab工具箱求解命令如下:

x0=[1;

1];

VLB=[-4;

-4];

VUB=[4;

4];

[x,fval]=fmincon('

fun',x0,[],[],[],[],VLB,VUB)

[XY]=meshgrid(-4:

0.01:

4,-4:

4);

Z=0.5-((sin((X.^2+Y.^2).^0.5)).^2-0.5)./(1+0.001.*(X.^2+Y.^2)).^2;

mesh(X,Y,Z);

shadinginterp;

functionf=fun(x)

f=-0.5+((sin(x

(1)^2+x

(2)^2).^(1/2)).^2-0.5)/(1+0.001*(x

(1)^2+x(2)^2))^2;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高中教育 > 高中教育

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2