欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    整理大连理工大学优化作业程序.docx

    • 资源ID:13818843       资源大小:289.18KB        全文页数:17页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    整理大连理工大学优化作业程序.docx

    1、整理大连理工大学优化作业程序1.1程序(Java)public class Wolfe_Powell public static double getFx ( double x ) double x1= x0; double x2 = x1; double Fx= 100 * (x2-x1*x1)* (x2-x1*x1) + (1-x1)* (1-x1) ; return Fx; public static double getDeltFx ( double x ) double x1= x0; double x2 = x1; double deltFx = new double2; delt

    2、Fx 0 = -400*(x2 - x1* x1) *x1- 2*(1- x1) ; deltFx 1 = 200*(x2- x1 * x1) ; return deltFx ; public static double getDeltFx_Sk ( double deltFx , double Sk ) double a = 0 ; for ( int i = 0 ; i Sk.length ; i+ ) a = a + deltFx i * Sk i ; return a ; public static double getL ( double x, double s ) double x

    3、1= x0; double x2 = x1; double c1 =0.1 , c2 =0.5 ,a =0 , b=1e8 ,L= 1; double Fx0 , Fx1 ,deltFx1_Sk ,deltFx0_Sk ,temp ,temp2; double deltFx0 , deltFx1 ; Fx0 = getFx(x) ; deltFx0 = getDeltFx (x) ; deltFx0_Sk = getDeltFx_Sk( deltFx0 , s) ; temp = c2 * getDeltFx_Sk( deltFx0 , s) ; for ( int i=0;i= temp2

    4、& deltFx1_Sk = temp) break ; else if( (Fx0 - Fx1 ) temp2 ) b = L ; L = (L +a) /2 ; else if ( deltFx1_Sk = 2*L ? (2*L):( L + b ) / 2; System.out.println( L= + L); System.out.println( 计算次数 + i ); return L ; public static void main(String args) Wolfe_Powell temp =new Wolfe_Powell(); double X = -1 ,1 ;

    5、double sk = 1 ,1 ; temp.getL( X ,sk) ; 1.2实验结果步长L = 0.00390625 x =-0.9992 , 1.0324 计算次数 8 2.1程序(Java)public class GongE public static double getFx ( double x ) double x1= x0; double x2 = x1;double Fx= x1*x1 - 2*x1*x2 + 2*x2*x2 +x3*x3 - x2*x3 +2 * x1 +3*x2 -x3 ; return Fx; public static double getDel

    6、tFx ( double x ) double x1= x0; double x2 = x1; double deltFx = new doublex.length;deltFx 0 = 2*x1 - 2*x2+2 ;deltFx 1 = -2*x1 +4*x2 - x3 +3;deltFx 2 = 2*x3 -x2 -1 ; return deltFx ; public static double getX ( double x ) double g0,g1; double s0= new doublex.length; double s1=new doublex.length; doubl

    7、e g0_L,g1_L ,L ,temp; double x0 =x ; int k =0 ; g0 = getDeltFx ( x0 ) ; for ( int j = 0 ; j x.length ; j+ ) s0 j = -g0 j ; for (int i = 0 ;i2; i +,k+) g0 = getDeltFx ( x0 ) ; g0_L = getDeltFx_Sk ( s0 , s0 ) ; L =getL(x0,s0); / 例题一中的方法取得步长L for(int j=0;jx.length ; j+) x0j= x0j+ s0j*L ; g1 = getDeltFx

    8、(x0) ; g1_L = getDeltFx_Sk ( g1 , g1 ); if ( Math.sqrt( g1_L )= 1e-2 ) break ; else temp = g1_L/ g0_L ; for(int j=0;jx.length ; j+) s0j = -g1j + temp * s0j; return x0; public static void main(String args) GongE temp =new GongE(); double x = 1,1 ; double result = temp.getX(x) ; for ( int i = 0 ; i x.

    9、length ; i+ ) System.out.println ( result + i + = + result i ) ; 2.2实验结果最优点 x*=-4,-3,-1 最优解 f*=-8 3.1公用程序(Java) public static double getFx ( double x ) /取得Fx 值 double x1= x0; double x2 = x1;double Fx = x1 + 2 * x2 * x2 + Math.exp ( x1 * x1 + x2 * x2 ) ; return Fx ; public static double getDeltFx ( d

    10、ouble x ) /取得Fx 的梯度值 double x1= x0; double x2 = x1; double deltFx = new double 2 ;deltFx 0 = 1 + 2 * x1 * Math.exp ( x1 * x1 + x2 * x2 ) ; deltFx 1 = 4 * x2 + 2 * x2 * Math.exp ( x1 * x1 + x2 * x2 ) ; return deltFx ; 3.2.1最速下降法程序(Java)public class FastWay public static double getX ( double x ) doubl

    11、e deltF0 = new double2; double L =0; for ( int i = 0 ; i 1e1 ; i+ ) deltF0 = getDeltFx(x); for(int j=0 ;j deltF0.length ;j+) /取得负梯度 deltF0j = - deltF0j; L = getL ( x , deltF0 ) ; / 调用习题1的不精确搜索取得步长L if ( Math.sqrt ( getDeltFx_Sk ( deltF0 , deltF0 ) ) = 1e-3 ) System.out.println ( 最终计算次数 + i ) ; Syste

    12、m.out.println(x1= + x0+ x2= + x1); break ; x0 = x0+ L * deltF0 0 ; x1= x1+ L * deltF0 1 ; return x; public static void main ( String args ) FastWay temp = new FastWay () ; double x0 = 2 , 2 ; temp.getX(x0) ; 3.2.2最速下降法结果 最优点X*=-0.4194 0 最优解f*=0.7729 计算次数count=103.3.1牛顿法程序(Java) public static double

    13、getDeltFx ( double x ) double x1 = x 0 ; double x2 = x 1 ; double one = new double 2 ; double exp =Math.exp( Math.pow(x1,2)+Math.pow(x2,2) ; one 0 = 1+ 2*x1*exp ; one 1 = 4* x2 +2*x2*exp ; double two = new double22 ; two00 = 2*exp *(1+2*Math.pow(x1,2) ; two11 = 2*exp *(1+2*Math.pow(x2,2) +4 ; double

    14、 deltFx = new double 2 ; for (int i = 0 ; i 2 ; i+ ) deltFx0 = one 0 /two00 ; deltFx1 = one 1 /two11 ; return deltFx; public static void main ( String args ) double x = 1 , 0 ; double DeltFx = new double 2 ; for(int i =0 ;i 1e3;i+) DeltFx = getDeltFx(x); x0 = x0- DeltFx0; x1 = x1- DeltFx1; if( Math.

    15、sqrt( getDeltFx_Sk(DeltFx,DeltFx ) ) = 1e-4) System.out.println(计算次数为 + i); break ; System.out.println( x1= +x0 + x2= + x1 +n) ; System.out.println( Fx= +getFx(x) ; 3.3.2牛顿法结果 最优点X*= -0.4194 , 0 最优解f*= 0.7729 计算次数count=53.4.1 BFGS法程序(matlab)function x,val,k = bfgs(fun,gfun,x0)maxk=1000; sigma=0.4; r

    16、ho=0.55 ; epsion=1e-5;k=0 ; n =length(x0);Bk=eye(n); %Bk=feval(Hess,x0);while (kmaxk) gk=feval(gfun,x0); if(norm(gk)epsion),break;end; dk=-Bkgk; m=0;mk=0; while(m20) newf=feval(fun,x0+rhom*dk) oldf=feval(fun,x0) if(newf0) Bk=Bk-(Bk*sk*sk*Bk)/(sk*Bk*sk)+(yk*yk)/(yk*sk); end; k=k+1; x0=x;endval=feval(

    17、fun,x0);3.4.2 BFGS法结果 最优点X*=-0.4194 0 最优解f*=0.7729 计算次数count=44.1 有效集法(matlab)4.1.1 主程序functionx , Lagrange , exitflag , output= TwoProg (H,c,Ae,be,Ai,bi,x0)n=length(x0); x=x0; ni=length(bi); ne=length(be); Lagrange =zeros(ne+ni,1); index=ones(ni,1);for(i=1:ni) if(Ai(i,:)*xbi(i)+1e-9),index(i)=0;end

    18、end%算法主程序k=0;while(k0),Temp=Ae ; end for(j=1:ni) if(index(j)0),Temp=Temp;Ai(j,:);end end gk=H*x+c; m1,n1=size(Temp); dk,Lagrange =SubPro (H,gk , Temp,zeros(m1,1); if(norm(dk)ne) y,jk=min(Lagrange (ne+1:length(Lagrange ); end if(y=0) exitflag=0; else exitflag=1; for(i=1:ni) if(index(i)&(ne+sum(index(

    19、1:i)=jk) index(i)=0;break; end end end k=k+1; else exitflag=1; %求步长 alpha=1.0;tm=1.0; for(i=1:ni) if(index(i)=0)&(Ai(i,:)*dk0) tm1=(bi(i)-Ai(i,:)*x)/(Ai(i,:)*dk); if(tm1tm) tm=tm1;ti=i; end end end alpha=min(alpha,tm); x=x+alpha*dk; if(tm0) rb=Ae*ginvH*c+be; Lagrange =pinv(Ae*ginvH*Ae)*rb; x=ginvH*(

    20、Ae*Lagrange -c);else x=-ginvH*c; Lagrange =0;end4.1.4 运行函数H=2 -2;-2 4;c=-2 -6;Ae= ;be= ;Ai=1 -2;-0.5 -0.5;1 0;0 1;bi=-2 -1 0 0;x0=0 1 ;x,lambda,exitflag,output=qpact(H,c,Ae,be,Ai,bi,x0)4.2 有效集法结果 内部点 初始点x0=0 0 最优点X*=0.8 1.2 最优解f*=-7.2 迭代次数=10 边界点 初始点x0=1 1 最优点X*=0.8 1.2 最优解f*=-7.2 迭代次数=2 检验点 初始点x0=0

    21、 1 最优点X*=0.8 1.2 最优解f*=-7.2 迭代次数=75.1 乘子法程序(matlab)5.1.1 chengZi程序-乘子法主程序functionx,mu,Lagrange ,output=chengZi(fun,hf,gf,dfun,dhf,dgf,x0)sigma=2.0;count=0;innerCount=0; eta=2.0;=0.8;%PHR算法中的实参数 x=x0;he=feval(hf,x);gi=feval(gf,x);n=length(x);l=length(he);m=length(gi);%选取乘子向量的初始值mu=0.1*ones(l,1);Lagra

    22、nge =0.1*ones(m,1);btak=10;btaold=10;%用来检验终止条件的两个值while(btak1e-6&count1e-6 if(count=2&btak*btaold) sigma=eta*sigma; end %更新乘子向量 for(i=1:l),mu(i)=mu(i)-sigma*he(i);end for(i=1:m) Lagrange (i)=max(0.0,Lagrange (i)-sigma*gi(i); end end count=count+1; btaold=btak; x0=x;endf=feval(fun,x)output.inner_iter

    23、=innerCount;output.iter=count;output.bta=btak;output.fval=f;5.1.2 f1程序-目标函数function f=f1(x)f=4*x(1)-x(2)2-12;5.1.3 h1程序-等式约束function he=h1(x)he=25-x(1)2-x(2)2;5.1.4 g1程序-不等式约束function gi=g1(x)gi=10*x(1)-x(1)2+10*x(2)-x(2)2-34;5.1.5 df1程序-目标函数的梯度文件function g=df1(x)g=4 ,-2.0*x(2);5.1.6 dhe程序-等式约束(向量)函

    24、数的Jacobi矩阵(转置)function dhe=dh1(x)dhe=-2*x(1),-2.0*x(2);5.1.7 dgi程序-不等式约束(向量)函数的Jacobi矩阵(转置)function dgi=dg1(x)dgi=10-2*x(1),10-2*x(2);0,1;1,0;5.1.8 LagrTiDu程序-增广拉格朗日函数的梯度程序function result=LagrTiDu(x,fun,hf,gf,dfun,dhf,dgf,mu,Lagrange ,sigma)result=feval(dfun,x);he=feval(hf,x);gi=feval(gf,x);dhe=feva

    25、l(dhf,x);dgi=feval(dgf,x);l=length(he);m=length(gi);for(i=1:l) result=result+(sigma*he(i)-mu(i)*dhe(:,i); endfor(i=1:m) result=result+(sigma*gi(i)-Lagrange (i)*dgi(:,i);1)规划实施可能对相关区域、流域、海域生态系统产生的整体影响。end(4)预防或者减轻不良环境影响的对策和措施的合理性和有效性;5.1.9 Lagr程序-增广拉格朗日函数程序function result=Lagr(x,fun,hf,gf,dfun,dhf,dgf,mu,Lagrange ,sigma)f=feval(fun,x);he=feval(hf,x);gi=feval(gf,x);(一)环境影响经济损益分析概述l=length(he);m=length(gi);result=f;s1=0.0;仍以


    注意事项

    本文(整理大连理工大学优化作业程序.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

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


    收起
    展开