房天下 > 房天下问答 > 业主生活 > 其他
  • 程序设之优化设计 MATLAB

    大家好!想请教个题目:题目是:编写一段程序,实现某一优化设计算法,编程语言MATLAB算出min F(x)=1.5X1^2+0.5X2^2+-X1X2-2*X1初始点 X0={-2,4} 精度 e=0.01谢谢 有高分送哦!

    提问者:RooRu

    发布于2010-10-29

共1个回答
  • 出水^_^芙蓉 丨Lv 0
    最数下降法解无约束优化的程序先建立一维搜索的m文件:minWP.m如下%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%function [x,minf]=minWP(f,XMAX,c1,c2,alpha,tol)%一维搜索的Wolfe-Powell法%作者:龚纯 王正林<<精通 Matlab 最优化计算>>%f:目标函数%XMAX:搜索最大值%c1:可接受系数1%c2:可接受系数2%alpha:增大步长倍数%tol:精度%x:极小值点%minf:极小值点处的函数值format long;if nargin==5 tol=1.0e-6;endif ~(c1>0)||~(c1<c2)||~(c2<1)||~(XMAX>0)||~(alpha>1) error('参数不对');endvar=findsym(f);df=diff(f);f0=subs(f,var,0);df0=subs(df,var,0);a=0;b=XMAX;if b<inf t=(a+b)/2;else t=10;endwhile 1 ft=subs(f,var,t); fu=f0+c1*t*df0; if ft<=fu dft=subs(df,var,t); dfl=c2*t*df0; if dft>dfl x=t; break; else a=t; if b==inf t=t*alpha; else t=(a+b)/2; end continue; end else b=t; t=(a+b)/2; continue; endendminf=subs(f,var,t);format short;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%然后建立最速下降法的m文件如下:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%minFD.mfunction [x,minf]=minFD(f,x0,var,tol)%最速下降法%作者:龚纯 王正林《精通Matlab最优化计算》%目标函数:f%初始点:x0%自变量向量:var%精度:tol%所求的驻点:x%驻点处的函数值format long;if nargin==3 tol=1.0e-6;endgradf=jacobian(f,var); %f的梯度wucha=1;syms lamda;while wucha>tol d=-subs(gradf,var,x0); wucha=norm(d); y=x0+lamda*d; yf=subs(f,var,y); %l=minHJ(yf,0,100); l=minWP(yf,10,0.2,0.6,2); x1=x0+l*d; x0=x1;endx=x1;minf=subs(f,var,x);format short;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%保存后就可调用了:>> clear>> syms x1 x2>> f=1.5*x1^2+0.5*x2^2-x1*x2-2*x1 f = 3/2*x1^2+1/2*x2^2-x1*x2-2*x1 >> [x,mf]=minFD(f,[-2 4],[x1,x2])x = 1.0000 1.0000mf = -1.0000
    +1 2010-10-29 举报
热门人气推荐
免责声明:问答内容均来源于互联网用户,房天下对其内容不负责任,如有版权或其他问题可以联系房天下进行删除。