当前位置:文档之家› 优化方法上机作业--2013

优化方法上机作业--2013

优化方法上机作业--2013
优化方法上机作业--2013

第一题(牛顿法和不精确一维搜索)

牛顿法:

syms x1 x2;

f=(x2-(x1)*(x1))^2+(1-x1)^2;

v=[x1,x2];

df=jacobian(f,v);

df=df.';

G=jacobian(df,v);

epson=1e-12;x0=[0,1]';g1=subs(df,{x1,x2},{x0(1,1),x0(2,1)});G1=subs(G,{x1,x2},{x 0(1,1),x0(2,1)});k=0;mul_count=0;sum_count=0;

mul_count=mul_count+12;sum_count=sum_count+6;

while(norm(g1)>epson)

p=-G1\g1;

x0=x0+p;

g1=subs(df,{x1,x2},{x0(1,1),x0(2,1)});

G1=subs(G,{x1,x2},{x0(1,1),x0(2,1)});

k=k+1;

mul_count=mul_count+16;sum_count=sum_count+11;

end;

k

x0

mul_count

sum_count

运行结果:

k =

9

x0 =

1

1

mul_count =

156

sum_count =

105

不精确一维搜索:

fun1.m文件

function f=fun1(x)

f=(x(1)-1)^2+(x(2)-x(1)^2)^2;

gfun1.m文件

function gf = gfun1(x)

gf=[2*x(1)*(x(1)^2-x(2))+2*(x(1)-1),2*(x(2)-x(1)^2)]';

wolfepowell.m文件

function [k,m,opt,x]=wolfepowell(xk,sk)

max=1000;

c1=0.1; c2=0.6;a=0;b=inf;dk=0.2;m=0;

while(m<=max)

if (fun1(xk)-fun1(xk+sk*dk)<-c1*dk*gfun1(xk)'*sk)

b=dk;dk=(dk+a)/2;

elseif

(fun1(xk)-fun1(xk+sk*dk)>=-c1*dk*gfun1(xk)'*sk)&&(gfun1(xk+sk*dk)'*sk

a=dk;

if 2*dk<(dk+b)/2

dk=2*dk;

else

dk=(dk+b)/2;

end

else

mk=m;

break;

end

m=m+1;

end

m=mk;k=dk;x=xk+sk*dk;opt=fun1(x);

运行结果:

>>xk=[0,1]';sk=[1,-1]';

[k,m,opt,x]= wolfepowell(xk,sk)

k =

0.8000

m =

2

opt =

1.0080

x =

0.8000

0.2000

第二题(共轭梯度法)

frcg.m文件

function [x,val,k]=frcg(fun,gfun,x0)

maxk=5000;

rho=0.6;sigma=0.4;

k=0; epsilon=1e-4;

n=length(x0);

while(k

g=feval(gfun,x0);

itern=k-(n+1)*floor(k/(n+1));

itern=itern+1;

if(itern==1)

d=-g;

else

beta=(g'*g)/(g0'*g0);

d=-g+beta*d0; gd=g'*d;

if(gd>=0.0)

d=-g;

end

end

if(norm(g)

m=0; mk=0;

while(m<20)

if(feval(fun,x0+rho^m*d)

mk=m; break;

end

m=m+1;

end

x0=x0+rho^mk*d;

val=feval(fun,x0);

g0=g; d0=d;

k=k+1;

end

x=x0;

val=feval(fun,x);

fun.m文件

function f=fun(x)

f=x(1)^2-2*x(1)*x(2)+2*x(2)^2+x(3)^2+x(4)^2-x(2)*x(3)+2*x(1)+3*x(2)-x(3); gfun.m文件

function gf=gfun(x)

gf=[2*x(1)-2*x(2)+2, -2*x(1)+4*x(2)+3,2*x(3)-x(2)-1,2*x(4)]';

运行结果:

>>x0=[0 0 0 0]';

[x,val,k]=frcg('fun','gfun',x0)

x =

-3.4064

-2.6515

-0.7032

val =

-7.8338

k =

5000

第三题(BFGS法、最速下降法和牛顿法)fun3.m文件

function f=fun3(x)

f=(x(1)-1)^2+5*(x(2)-x(1)^2)^2;

gfun3.m文件

function gf = gfun3(x)

gf=[20*x(1)*(x(1)^2-x(2))+2*(x(1)-1),10*(x(2)-x(1)^2)]'; Hessen.m文件

function Hess=Hessen(x)

Hess=[60*x(1)^2-20*x(2)+2,(-20)*x(1);(-20)*x(1),10];

Steepest.m文件

function [m,opt,x] = Steepest(xk)

m=0;Eps=1.0e-4;max=1000;

while(m

g=gfun3(xk);

sk=-g;

dk=wolfepowell(xk,sk);

x=xk+dk*sk;

g0=gfun3(x);

if(norm(g0)<=Eps)

break;

else

xk=x;

end

m=m+1;

end

mk=m;

x=xk;

opt=fun3(xk);

newton.m文件

function [x,opt,mk] = newton(xk)

m=0;Eps=1e-4;max=100;H=[1,0;0,1];

while(m

g=gfun3(xk);

M=Hess(xk);

H=inv(M);

sk=-H*g;

dk=wolfepowell(xk,sk);

x=xk+dk*sk;

g0=gfun3(x);

if(norm(g0)<=Eps)

break;

else

xk=x;

end

m=m+1;

end

mk=m;

x=xk;

opt=fun3(xk);

bfgs.m文件

function [x,opt,mk] = bfgs(xk)

m=0;Eps=1e-4;max=100;H=[1,0;0,1];

while(m

g=gfun3(xk);

sk=-H*g;

dk=wolfepowell(xk,sk);

x=xk+dk*sk;

g0=gfun3(x);

if(norm(g0)<=Eps)

break;

else

H=H+((1+((g0-g)'*H*(g0-g))/((x-xk)'*(g0-g)))*(x-xk)*(x-xk)'-H*(g0-g)*(x-xk)'-(x-x k)*(g0-g)'*H)/((x-xk)'*(g0-g));

xk=x;

end

m=m+1;

end

mk=m;

x=xk;

opt=fun3(xk);

wolfepowell.m文件

function [k,m,opt,x]=wolfepowell(xk,sk)

max=1000;

c1=0.1; c2=0.6;a=0;b=inf;dk=0.2;m=0;

while(m<=max)

if (fun3(xk)-fun3(xk+sk*dk)<-c1*dk*gfun3(xk)'*sk)

b=dk;dk=(dk+a)/2;

elseif

(fun3(xk)-fun3(xk+sk*dk)>=-c1*dk*gfun3(xk)'*sk)&&(gfun3(xk+sk*dk)'*sk

a=dk;

if 2*dk<(dk+b)/2

dk=2*dk;

else

dk=(dk+b)/2;

end

else

mk=m;

break;

end

m=m+1;

end

m=mk;k=dk;x=xk+sk*dk;opt=fun3(x);

输入参数:

牛顿法运行结果:

>> xk=[2,0]';[x,opt,mk] = newton(xk)

x =

1.0000

1.0000

opt =

3.2601e-10

mk =

12

最速下降法运行结果:

>>xk=[2,0]';[x,opt,mk] = Steepest(xk)

x =

0.9999

0.9998

opt =

8.2108e-09

mk =

354

BFGS法运行结果:

>>xk=[2,0]';[x,opt,mk] = bfgs(xk)

x =

0.9999

0.9999

opt =

4.7725e-09

mk =

16

(0.9999, 0.9998) 最速下降法(迭代次数354)即得数值最优点为x= (1.0000, 1.0000) 牛顿法(迭代次数12)

(0.9999, 0.9999) BFGS公式(迭代次数16)最优解近似为0

第四题(乘子法)

multphr.m文件

function [x,mu,lambda,output]=multphr(fun,hf,gf,dfun,dhf,dgf,x0)

maxk=500;

sigma=2.0;

eta=2.0; theta=0.8;

k=0; ink=0;

epsilon=1e-5;

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); lambda=0.1*ones(m,1);

btak=10; btaold=10;

while(btak>epsilon && k

[x,~,ik]=bfgs('mpsi','dmpsi',x0,fun,hf,gf,dfun,dhf,dgf,mu,lambda,sigma);

ink=ink+ik;

he=feval(hf,x); gi=feval(gf,x);

btak=0.0;

for (i=1:l), btak=btak+he(i)^2; end

for (i=1:m);

temp=min(gi(i),lambda(i)/sigma);

btak=btak+temp^2;

end

btak=sqrt(btak);

if(btak>epsilon)

if(k>=2&&btak> theta*btaold)

sigma=eta*sigma;

end

for (i=1:l), mu(i)=mu(i)-sigma*he(i); end

for (i=1:m)

lambda(i)=max(0.0,lambda(i)-sigma*gi(i));

end

end

k=k+1;

btaold=btak;

x0=x;

end

f=feval(fun,x);

output.fval=f;

output.iter=k;

output.inner_iter=ink;

output.bta=btak;

mpsi.m文件

function psi=mpsi(x,fun,hf,gf,dfun,dhf,dgf,mu,lambda,sigma) f=feval(fun,x); he=feval(hf,x); gi=feval(gf,x);

l=length(he); m=length(gi);

psi=f; s1=0.0;

for(i=1:l)

psi=psi-he(i)*mu(i);

s1=s1+he(i)^2;

end

psi=psi+0.5*sigma*s1;

s2=0.0;

for(i=1:m)

s3=max(0.0, lambda(i) - sigma*gi(i));

s2=s2+s3^2-lambda(i)^2;

end

psi=psi+s2/(2.0*sigma);

h1.m文件

function he=h1(x)

he=-x(1)^2-x(2)^2+25.0;

f1.m文件

function f=f1(x)

f=4*x(1)-x(2)^2-12;

g1.m文件

function gi=g1(x)

gi=10*x(1)-x(1)^2+10*x(2)-x(2)^2-34;

h1.m文件

function dhe = dh1(x)

dhe = [-1*x(1), -1*x(2)]';

dg1.m文件

function dgi = dg1(x)

dgi = [10-2*x(1), 10-2*x(2)]';

df1.m文件

function g=df1(x)

g = [4, -2.0*x(2)]';

bfgs.m文件

function [x,val,k]=bfgs(fun,gfun,x0,varargin)

maxk=500;

rho=0.55; sigma1=0.4; epsilon1=1e-5;

k=0; n=length(x0);

Bk=eye(n);

while(k

gk=feval(gfun,x0,varargin{:});

if(norm(gk)

dk=-Bk\gk;

m=0; mk=0;

while(m<20)

newf=feval(fun,x0+rho^m*dk,varargin{:});

oldf=feval(fun,x0,varargin{:});

if(newf

mk=m; break;

end

m=m+1;

end

x=x0+rho^mk*dk;

sk=x-x0; yk=feval(gfun,x,varargin{:})-gk;

if(yk'*sk>0)

Bk=Bk-(Bk*sk*sk'*Bk)/(sk'*Bk*sk)+(yk*yk')/(yk'*sk);

end

k=k+1; x0=x;

end

val=feval(fun,x0,varargin{:});

dmpsi.m文件

function dpsi=dmpsi(x,fun,hf,gf,dfun,dhf,dgf,mu,lambda,sigma) dpsi=feval(dfun,x);

he=feval(hf,x); gi=feval(gf,x);

dhe=feval(dhf,x); dgi=feval(dgf,x);

l=length(he); m=length(gi);

for(i=1:l)

dpsi=dpsi+(sigma*he(i)-mu(i))*dhe(:,i);

end

for(i=1:m)

dpsi=dpsi+(sigma*gi(i)-lambda(i))*dgi(:,i);

end

运行结果:

>>x0=[1,1]';

[x,mu,lambda,output]=multphr('f1','h1','g1','df1','dh1','dg1',x0) x =

1.0013

4.8987

mu =

2.0312

lambda =

0.7545

output =

fval: -31.9923

iter: 5

inner_iter: 58

bta: 4.3187e-07

第五题(有效集法)

qpact.m文件

function [x,lamk,exitflag,output]=qpact(H,c,Ae,be,Ai,bi,x0) epsilon=1.0e-9; err=1.0e-6;

k=0; x=x0; n=length(x); kmax=1.0e3;

ne=length(be); ni=length(bi); lamk=zeros(ne+ni,1);

index=ones(ni,1);

for (i=1:ni)

if(Ai(i,:)*x>bi(i)+epsilon), index(i)=0; end

end

while (k<=kmax)

Aee=[ ];

if(ne>0), Aee=Ae; end

for(j=1:ni)

if(index(j)>0), Aee=[Aee; Ai(j,:)]; end

end

gk=H*x+c;

[m1,n1] = size(Aee);

[dk,lamk]=qsubp(H,gk,Aee,zeros(m1,1));

if(norm(dk)<=err)

y=0.0;

if(length(lamk)>ne)

[y,jk]=min(lamk(ne+1:length(lamk))); end

if(y>=0)

exitflag=0;

else

exitflag=1;

for(i=1:ni)

if(index(i) & (ne+sum(index(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,:)*dk<0))

tm1=(bi(i)-Ai(i,:)*x)/(Ai(i,:)*dk); if(tm1

tm=tm1; ti=i;

end

end

end

alpha=min(alpha,tm);

x = x+alpha*dk;

if(tm<1), index(ti)=1; end

end

if(exitflag==0), break; end

k=k+1;

end

output.fval=0.5*x'*H*x+c'*x;

output.iter=k;

qsubp.m文件

function [x,lambda]=qsubp(H,c,Ae,be)

ginvH=pinv(H);

[m,n]=size(Ae);

if (m>0)

rb = Ae*ginvH*c + be;

lambda = pinv(Ae*ginvH*Ae')*rb;

x = ginvH*(Ae'*lambda-c);

else

x = -ginvH*c;

lambda = zeros(m,1);

end

callqpact.m文件

function callqpact

H=[2 0; 0 2];

c=[-2 -5]';

Ae=[ ]; be=[ ];

Ai=[1 -2; -1 -2; -1 2;1 0;0 1];

bi=[-2 -6 -2 0 0]';

x0=[0 0]';

[x, lambda, exitflag,output]=qpact(H,c,Ae,be,Ai,bi,x0)

运行结果:

>>callqpact

x =

1.4000

1.7000

lambda =

0.8000

exitflag =

output =

fval: -6.4500

iter: 7

第七题

fun文件

function f=fun(x)

f=abs(x(1))+abs(x(2))+abs(x(3))+abs(x(4));

主程序

x0=[1;1;1;1];

A=[]; b=[];

Aeq=[1 0 0 0.5;0 1 0.2 0.3;0 0.1 1 0.2];beq=[-1;0.2;1]; VLB=[]; VUB=[];

[x,fval]=fmincon('fun',x0,A,b,Aeq,beq,VLB,VUB)

运行结果

x =

-1.0000

-0.0000

1.0000

0.0000 fval =

2.0000

北航最优化方法大作业参考

北航最优化方法大作业参考

1 流量工程问题 1.1 问题重述 定义一个有向网络G=(N,E),其中N是节点集,E是弧集。令A是网络G的点弧关联矩阵,即N×E阶矩阵,且第l列与弧里(I,j)对应,仅第i行元素为1,第j行元素为-1,其余元素为0。再令b m=(b m1,…,b mN)T,f m=(f m1,…,f mE)T,则可将等式约束表示成: Af m=b m 本算例为一经典TE算例。算例网络有7个节点和13条弧,每条弧的容量是5个单位。此外有四个需求量均为4个单位的源一目的对,具体的源节点、目的节点信息如图所示。这里为了简单,省区了未用到的弧。此外,弧上的数字表示弧的编号。此时,c=((5,5…,5)1 )T, ×13 根据上述四个约束条件,分别求得四个情况下的最优决策变量x=((x12,x13,…,x75)1× )。 13 图 1 网络拓扑和流量需求

1.2 7节点算例求解 1.2.1 算例1(b1=[4;-4;0;0;0;0;0]T) 转化为线性规划问题: Minimize c T x1 Subject to Ax1=b1 x1>=0 利用Matlab编写对偶单纯形法程序,可求得: 最优解为x1*=[4 0 0 0 0 0 0 0 0 0 0 0 0]T 对应的最优值c T x1=20 1.2.2 算例2(b2=[4;0;-4;0;0;0;0]T) Minimize c T x2 Subject to Ax2=b2 X2>=0 利用Matlab编写对偶单纯形法程序,可求得: 最优解为x2*=[0 4 0 0 0 0 0 0 0 0 0 0 0]T 对应的最优值c T x2=20 1.2.3 算例3(b3=[0;-4;4;0;0;0;0]T) Minimize c T x3 Subject to Ax3=b3 X3>=0 利用Matlab编写对偶单纯形法程序,可求得: 最优解为x3*=[4 0 0 0 4 0 0 0 0 0 0 0 0]T 对应的最优值c T x3=40

最优化实验报告

最优化方法 课程设计报告班级:________________ 姓名: ______ 学号: __________ 成绩: 2017年 5月 21 日

目录 一、摘要 (1) 二、单纯形算法 (2) 1.1 单纯形算法的基本思路 (2) 1.2 算法流程图 (3) 1.3 用matlab编写源程序 (4) 二、黄金分割法 (7) 2.1 黄金分割法的基本思路 (7) 2.2 算法流程图 (8) 2.3 用matlab编写源程序 (9) 2.4 黄金分割法应用举例 (11) 三、最速下降法 (11) 3.1 最速下降法的基本思路 (11) 3.2 算法流程图 (13) 3.3 用matlab编写源程序 (13) 3.4 最速下降法应用举例 (13) 四、惩罚函数法 (17) 4.1 惩罚函数法的基本思路 (17) 4.2 算法流程图 (18) 4.3 用matlab编写源程序 (18) 4.4 惩罚函数法应用举例 (19) 五、自我总结 (20) 六、参考文献 (20)

一、摘要 运筹学是一门以人机系统的组织、管理为对象,应用数学和计算机等工具来研究各类有限资源的合理规划使用并提供优化决策方案的科学。通过对数据的调查、收集和统计分析,以及具体模型的建立。收集和统计上述拟定之模型所需要的各种基础数据,并最终将数据整理形成分析和解决问题的具体模型。 最优化理论和方法日益受到重视,已经渗透到生产、管理、商业、军事、决策等各个领域,而最优化模型与方法广泛应用于工业、农业、交通运输、商业、国防、建筑、通信、政府机关等各个部门及各个领域。伴随着计算机技术的高速发展,最优化理论与方法的迅速进步为解决实际最优化问题的软件也在飞速发展。其中,MATLAB软件已经成为最优化领域应用最广的软件之一。有了MATLAB 这个强大的计算平台,既可以利用MATLAB优化工具箱(OptimizationToolbox)中的函数,又可以通过算法变成实现相应的最优化计算。 关键词:优化、线性规划、黄金分割法、最速下降法、惩罚函数法

最优化方法大作业答案

1.用薄钢板制造一体积5m 3,长度不小于4m ,无上盖的货箱,要求钢板耗量最小。确定货箱的长x 1、宽x 2和高x 3。试列出问题的数学模型。 解:min 32312122x x x x x x z ++= s.t 5321=x x x 41≥x 0,,321≥x x x 2.将下面的线性规划问题表示为标准型并用单纯形法求解 max f=x 1+2x 2+x 3 s .t .2x 1+x 2-x 3≤2 -2x 1+x 2-5x 3≥-6 4x 1+x 2+x 3≤6 x i ≥0 i=1,2,3 解:先化标准形: Min 321x x x z -+= 224321=+-+x x x x 6525321=++-x x x x 646321=+++x x x x 列成表格:

1 2 1 610011460105122001112----- 可见此表已具备1°,2°,3°三个特点,可采用单纯形法。首先从底行中选元素-1,由2/2,6/2,6/4最小者决定选第一行第一列的元素2,标以记号,迭代一次得 1 2 1 2102310401162010021212 11-------- 再从底行中选元素-2/3,和第二列正元素1/2,迭代一次得 1 2 12 32 30 210231040116201002121211- ------ 再从底行中选元素-3,和第二列正元素2,迭代一次得 4 2 3 3 410120280114042001112--- 再迭代一次得 10 2 30 2 10 6 221023 1010213000421021013-- 选取最优解:

最优化方法实验报告(1)

最优化方法实验报告Numerical Linear Algebra And Its Applications 学生所在学院:理学院 学生所在班级:计算数学10-1 学生姓名:甘纯 指导教师:单锐 教务处 2013年5月

实验一 实验名称:熟悉matlab基本功能 实验时间: 2013年05月10日星期三实验成绩: 一、实验目的: 在本次实验中,通过亲临使用MATLAB,对该软件做一全面了解并掌握重点内容。 二、实验内容: 1. 全面了解MATLAB系统 2. 实验常用工具的具体操作和功能 实验二 实验名称:一维搜索方法的MATLAB实现 实验时间: 2013年05月10日星期三实验成绩: 一、实验目的: 通过上机利用Matlab数学软件进行一维搜索,并学会对具体问题进行分析。并且熟悉Matlab软件的实用方法,并且做到学习与使用并存,增加学习的实际动手性,不再让学习局限于书本和纸上,而是利用计算机学习来增加我们的学习兴趣。 二、实验背景: (一)0.618法(黄金分割法),它是一种基于区间收缩的极小点搜索

算法,当用进退法确定搜索区间后,我们只知道极小点包含于搜索区间内,但是具体哪个点,无法得知。 1、算法原理 黄金分割法的思想很直接,既然极小点包含于搜索区间内,那么可以不断的缩小搜索区间,就可以使搜索区间的端点逼近到极小点。 2、算法步骤 用黄金分割法求无约束问题min (),f x x R ∈的基本步骤如下: (1)选定初始区间11[,]a b 及精度0ε>,计算试探点: 11110.382*()a b a λ=+- 11110.618*()a b a μ=+-。 (2)若k k b a ε-<,则停止计算。否则当()()k k f f λμ>时转步骤(3)。 当()()k k f f λμ≤转步骤(4)。 (3)置 11111110.382*()k k k k k k k k k k a b b a b a λλμμ+++++++=??=?? =??=+-?转步骤(5)

最优化方法大作业

发动机空燃比控制器 引言:我主要从事自动化相关研究。这里介绍我曾经接触过的发动机空燃比控制器设计中的优化问题。 发动机空燃比控制器设计中的最优化问题 AFR =a f m m && (1) 空燃比由方程(1)定义,在发动机运行过程中如果控制AFR 稳定在14.7可以获 得最好的动力性能和排放性能。如果假设进入气缸的空气流量a m &可以由相关单元检测得到,则可以通过控制进入气缸的燃油流量f m &来实现空燃比的精确控制。由于实际发动机的燃油喷嘴并不是直接对气缸喷燃油,而是通过进气歧管喷燃油,这么做会在进 气歧管壁上液化形成油膜,因此不仅是喷嘴喷出的未液化部分燃油会进入气缸,油膜 蒸发部分燃油也会进入气缸,如方程(2)。这样如何更好的喷射燃油成为了一个问题。 1110101122211ττττ?? ?? -?? ??????????=+????????-????????????-???? ? ??? ?? ????????? ?f f f v X x x u x x X x y =x && (2) 其中12、,==ff fv x m x m &&=f y m &,=fi u m &这里面,表示油膜蒸发量ff m &、fv m &表示为液化部分燃油、fi m &表示喷嘴喷射的燃油,在τf 、τv 、X 都已知的情况下,由现代控制理论知识,根据系统的增广状态空间模型方程(3) 0000001 1 011011114.70ττττ????-?? ??????????=-+-??????????????? ??????????????? ?? ??=?????? f f v v a X X u +q q m y q x x x &&& (3) 其中()0 14.7?t a q = y -m &。由极点配置方法,只要设计控制器方程(4),就可以 使得y 无差的跟踪阶跃输入,那么y 也能较好的跟踪AFR *a m /&。 12-- u =K q K x (4) 这里面的12、K K 确定,可由主导极点概念降维成两个参数12C ,C ,虽然都是最终稳态无差,但是目标是使得瞬态过程中y 和阶跃输入y r 的差异尽可能的小。所以原问

最优化原理大作业

基于粒子群算法的神经网络在电液伺服系统中的应用 摘要:由于人工神经网络在解决具有非线性、不确定性等系统的控制问题上具有极大的潜力,因而在控制领域正引起人们的极大关注,并且已在一些响应较慢的过程控制中获得成功应用。由于电液伺服系统属 于非线性系统,因此本文利用神经网络控制电液伺服系统,并利用粒子群优化算法训练该神经网络的 权值。通过对神经网络的优化实现对电液伺服系统的控制。 关键词:神经网络电液伺服系统粒子群算法优化 近年来,由于神经网络具有大规模并行性、冗余性、容错性、本质的非线性及自组织自学习自适应能力,所以已成功地应用于众多领域。但在具有复杂非线性特性的机电设备的实时控制方面,虽然也有一些神经网络技术的应用研究,但距实用仍有一段距离。电液伺服系统就属于这类设备[1]。 神经网路在用于实时控制时,主要是利用了网络所具有的其输人——输出间的非线性映射能力。它实际上是通过学习来逼近控制对象的动、静态特性。也就是构造实际系统的神经网络模型[2]。本文利用神经网络控制一电液伺服系统,并利用粒子群优化算法训练该神经网络的权值,将结果与BP神经网络控制该系统的结果进行比较。从而得在电液伺服系统中引入神经网络是可行的。 1、粒子群算法 粒子群优化算法(Particle Swarm optimization, PSO)是一种进化计算技术, 由Eberhart博士和kennedy博士发明, 源于对鸟群捕食的行为研究, 粒子群优化算法的基本思想是通过群体中个体之间的协作和信息共享来寻找最优解[3]。算法最初受到飞鸟和鱼类集群活动的规律性启发,利用群体智能建立了一个简化模型,用组织社会行为代替了进化算法的自然选择机制,通过种群间个体协作来实现对问题最优解的搜索[4]。 在找到这两个最优值时, 粒子根据如下的公式来更新自己的速度和新的位置 v[]=v[]+c1*rand()*(pbest[]-present[]) + c2*rand()*(gbest[]-present[]) present[]=persent[]+v[] 式中ω为惯性权重,ω取大值可使算法具有较强的全局搜索能力,ω取小值则算法倾向于局部搜索。一般的做法是将ω初始取0.9并使其随迭代次数的增加而线性递减至0.4,这样就可以先侧重于全局搜索,使搜索空间快速收敛于某一区域,然后采用局部精细搜索以获得高精度的解;c1、c2为两个学习因子,一般取为2;randl和rand2为两个均匀分布在(0,l)之间的随机数;i=1,2,?,m;k=1,2,?,d。另外,粒子在每一维的速度Vi都被一个最大速度Vmax所限制。如果当前粒子的加速度导致它在某一维的速度 超过该维上的最大速度Vmax,则该维的速度被限制为最大速度[5]。 粒子群算法流程如下: (一)初始化粒子群。设群体规模为m,在允许的范围内随机设置粒子的初始位置和速 度。 (二)评价每个粒子的适应值。 (三)调整每一个粒子的位置和速度。 (四)如果达到最大迭代次数genmax或误差达到最初设定数值终止迭代,否则返回(2)。 2、神经网络 神经网络一般由输入层、隐含层、输出层组成。对于输入信号,先向前传播到隐节点,经过节点作用函数后,再把隐节点的输出信息传播到输出节点,最后输出结果。节点的作用函数通常选取S 型函数f(x)=1/(1+e-x)。神经网络算法的学习过程分为正

北航惯性导航大作业

惯性导航基础课程大作业报告(一)光纤陀螺误差建模与分析 班级:111514 姓名: 学号 2014年5月26日

一.系统误差原理图 二.系统误差的分析 (一)漂移引起的系统误差 1. εx ,εy ,εz 对东向速度误差δVx 的影响 clc;clear all; t=1:0.01:25; g=9.8; L=pi/180*39; Ws=2*pi/84.4*60; Wie=2*pi/24; R=g/(Ws)^2; e=0.1*180/pi; mcVx1=e*g*sin(L)/(Ws^2-Wie^2)*(sin(Wie*t)-Wie*sin(Ws*t)/Ws); mcVx2=e*((Ws^2-(Wie^2)*((cos(L))^2))/(Ws^2-Wie^2)*cos(Ws*t)-(Ws^2)*((sin(L))^2)*cos(Wi e*t)/(Ws^2-Wie^2)-(cos(L))^2); mcVx3=(sin(L))*(cos(L))*R*e*((Ws^2)*cos(Wie*t)/(Ws^2-Wie^2)-(Wie^2)*cos(Ws*t)/(Ws^2-Wi e^2)-1); plot(t,[mcVx1',mcVx2',mcVx3']); title('Ex,Ey,Ez 对Vx 的影响'); xlabel('时间t'); ylabel('Vx(t)'); 0,δλδL ,v v δδ

legend('Ex-mcVx1','Ey-mcVx2','Ez-mcVx3'); grid; axis square; 分析:εx,εy,εz对东向速度误差δVx均有地球自转周期的影响,εx,εy还会有舒勒周期分量的影响,其中,εy对δVx的影响较大。 2.εx,εy,εz对东向速度误差δVy的影响 clc;clear all; t=1:0.01:25; g=9.8; L=pi/180*39; Ws=2*pi/84.4*60; Wie=2*pi/24; R=g/(Ws)^2; e=0.1*180/pi; mcVy1=e*g*(cos(Wie*t)-cos(Ws*t))/(Ws^2-Wie^2); mcVy2=g*sin(L)*e/(Ws^2-Wie^2)*(sin(Wie*t)-Wie/Ws*sin(Ws*t)); mcVy3=g*cos(L)*e/(Ws^2-Wie^2)*(sin(Wie*t)-Wie/Ws*sin(Ws*t)); plot(t,[mcVy1',mcVy2',mcVy3']); title('Ex,Ey,Ez对Vy的影响'); xlabel('时间t'); ylabel('Vy(t)'); legend('Ex-mcVy1','Ey-mcVy2','Ez-mcVy3'); grid; axis square;

最优化DFP算法报告

最优化DFP算法姓名:施政学号:1010010125 班级:1 班专业:通信与信息系统 目录 1 算法流程图 (1) 1.1DFP算法的流程图 (1) 1.2 黄金分割法流程图 (1) 1.3 回退法计算初始区间的算法 (2) 2 测试函数 (3) 2.1 二维、二次函数 (3) 2.2 二维、高次函数 (3) 2.3 高维、二次函数 (4) 2.4 高维、高次函数 (4) 3 运行结果及分析 (5) 4 Matlab源程序 (6) 4.1 主函数 (6) 4.2 DFP算法函数 (8) 4.3 黄金分割法函数 (9) 4.4 回退法求解初始区间 (10) 4.5 计算测试函数的值 (11) 4.6 计算测试函数的梯度 (12) 5 参考文献 (12)

1 算法流程图 对于DFP算法主要涉及到3个主要的算法,分别是:利用回退法计算初始区间、利用黄金分割法进行一维搜索、然后利用DFP算法计算最小点对应的自变量的值。 下面分别画出了这三个算法流程图。 1.1DFP算法的流程图 设定控制误差为ε;输入的初始点坐标是0x;0E是与0x同维的单位阵。 图 1 1.2 黄金分割法流程图 给定精确度ε>0;当区间长度小于等于ε时,即停止运行,同时取x=(a+b)/2作为最小点坐标。 在给定初始区间[a,b]内,求最小点时对应的α值,要保证α是大于等于零的,否则函数值就不是朝下降方向递降的了。在本算法中保证初始区间的端点是大于等于零的,就可以满足这一条件了。 算法如下图所示:

图 2 1.3 回退法计算初始区间的算法 针对这个算法,参考文献[1]上面利用的回退法不能保证a ,b 两个端点的值大于零,因为利用黄金分割法求α时,α肯定是大于等于零的,所以可以对书上的算法适当的改进。初始的点是0x ;步长是x Δ;算法如下: 图 3 注意:上面的算法是针对一维的情况,所以在计算0x ;1x ;2x 时,应该注意使

学生科学实验效果最优化的基石实验报告设计

学生科学实验效果最优化的基石实验报告设计 自然科学是以实验为基础的学科。实验是人们研究和认识自然的重要方法。因此,在自然科学的教学中,实验也是重要的教学方法之一。通过实验,不仅可以提供学生对科学现象的感性认识,更可以让学生获得初步的实验技能和观察分析问题的能力。 小学科学实验教学的设计是运用系统论的思想和方法,以学习理论、教学理论为基础,计划和安排实验教学的各个环节、要素,以实现教学效果最优化为目的的活动。通过多年来的实验教学实践与思考,我们可以让学生像科学家那样,亲历科学探究的过程,这有利于充分发挥学生的主体作用,让学生积极主动参与到观察、实验等学习活动中去,亲自感知实验所产生的各种现象和变化,提高自行获取知识的能力,而其中比较重要的一个环节就是学生实验报告的设计与记录。在学生实验的过程中,一份好的实验报告设计,就像是一盏明灯,能给学生指引实验的目标、方向,能提供给学生形成结论的分析数据,进而培养学生科学实验的基本素养,使学生的科学实验效果达到最优化。 一、观察实验报告的填写,有利于学生在实验中观察,进一步培养学生实验的责任心和有序观察能力。 教科版四下《油菜花开了》解剖花的实验中,我设计了如下实验报告,在教学中取得了很好的效果。 《解剖花》实验人

花的名称 实验方法:用镊子把花的各部分,从外向里一层层撕下,整齐排列并贴在相应的名称左边,数一数,填在相应的空格上。 个萼片 个花瓣 个雄蕊 个雌蕊 在班级(1)上课时我没有设计实验报告,就按照书本上的要求,先介绍解剖花的方法、花的结构,然后让学生按照书本要求独立解剖油菜花。在实验过程中,学生非常认真,且相当活跃,但检查结果时,学生雌雄蕊不分,萼片、花瓣不分,桌上、地上掉落的都是花瓣,实验效果之不佳显而易见。 后来,我根据班级(1)出现的情况,设计了如上实验报告,实验的效果就相当出色。在这个实验报告中,我并没有限制学生解剖何种花,但学生可以根据实验要求很清楚地完成解剖的任务。充分体现了以教师为主导、学生为主体的课堂教学思想;而且在实验的过程中,桌上有了这份实验报告,便时刻提醒着学生做实验究竟是何目的,做实验时必须仔细观察什么,做实验的观察步骤是什么。在解剖花的过程中,动作快的同学还可在老师的同意下,多取一两张实验报告单,多解剖几种花,因此既避免了学生在一旁闲着无所事事而打闹的局面,又进一步提高了这些学生的科学素质。至于个别有困难的学生,教师可在巡视的过程中

最优化方法(黄金分割与进退法)实验报告

一维搜索方法的MATLAB 实现 姓名: 班级:信息与计算科学 学号: 实验时间: 2014/6/21 一、实验目的: 通过上机利用Matlab 数学软件进行一维搜索,并学会对具体问题进行分析。并且熟悉Matlab 软件的实用方法,并且做到学习与使用并存,增加学习的实际动手性,不再让学习局限于书本和纸上,而是利用计算机学习来增加我们的学习兴趣。 二、实验背景: 黄金分割法 它是一种基于区间收缩的极小点搜索算法,当用进退法确定搜索区间后,我们只知道极小点包含于搜索区间内,但是具体哪个点,无法得知。 1、算法原理 黄金分割法的思想很直接,既然极小点包含于搜索区间内,那么可以不断 的缩小搜索区间,就可以使搜索区间的端点逼近到极小点。 2、算法步骤 用黄金分割法求无约束问题min (),f x x R ∈的基本步骤如下: (1)选定初始区间11[,]a b 及精度0ε>,计算试探点: 11110.382*()a b a λ=+- 11110.618*()a b a μ=+-。 (2)若k k b a ε-<,则停止计算。否则当()()k k f f λμ>时转步骤(3)。 当 ()()k k f f λμ≤转步骤(4)。 (3) 11111110.382*()k k k k k k k k k k a b b a b a λλμμ+++++++=??=?? =??=+-?转步骤(5)

(4) 转步骤(5) (5)令1k k =+,转步骤(2)。 算法的MATLAB 实现 function xmin=golden(f,a,b,e) k=0; x1=a+0.382*(b-a); x2=a+0.618*(b-a); while b-a>e f1=subs(f,x1); f2=subs(f,x2); if f1>f2 a=x1; x1=x2; f1=f2; x2=a+0.618*(b-a); else b=x2; x2=x1; f2=f1; x1=a+0.382*(b-a); end k=k+1; end xmin=(a+b)/2; fmin=subs(f,xmin)

最优化方法大作业答案

武工院你们懂的 1.用薄钢板制造一体积5m 3,长度不小于4m ,无上盖的货箱,要求钢板耗量最小。确定货箱的长x 1、宽x 2和高x 3。试列出问题的数学模型。 解:min 32312122x x x x x x z ++= s.t 5321=x x x 41≥x 0,,321≥x x x 2.将下面的线性规划问题表示为标准型并用单纯形法求解 max f=x 1+2x 2+x 3 s .t .2x 1+x 2-x 3≤2 -2x 1+x 2-5x 3≥-6 4x 1+x 2+x 3≤6 x i ≥0 i=1,2,3 解:先化标准形: Min 321x x x z -+= 224321=+-+x x x x 6525321=++-x x x x 646321=+++x x x x

列成表格: 00001216 100114 60105122001112----- 可见此表已具备1°,2°,3°三个特点,可采用单纯形法。首先从底行中选元素-1,由2/2,6/2,6/4最小者决定选第一行第一列的元素2,标以记号,迭代一次得 0000 1 2 121023 10 40116201002 1 21 211-------- 再从底行中选元素-2/3,和第二列正元素1/2,迭代一次得 1 002 1232 30210231 040116201002121211-- ----- 再从底行中选元素-3,和第二列正元素2,迭代一次得 4002 3 03410120280114042001112--- 再迭代一次得

10 23021 062 21023 1010 213 000421 2 10 13- - 选取最优解: 01=x 42=x 23=x 3. 试用DFP 变尺度法求解下列无约束优化问题。 min f (X )=4(x 1-5)2+(x 2-6)2 取初始点X=(8,9)T ,梯度精度ε=0.01。 解:取I H =0,初始点()T X 9,8= 2221)6()5(4)(-+-=x x x f ??????--=?122408)(21x x x f ???? ??=?624)() 0(x f T x f d )6,24()()0()0(--=-?= )0(0)0()1(d x x α+= T )69,248(00αα--= ])669()5248(4min[)(min 2020)0(0)0(--+--?=+αααd x f )6()63(2)24()2458(8) (00)0(0)0(=-?-+-?--=+ααααd d x df 13077.013017 0≈= α ???? ??=???? ??--?+???? ??=21538.886153.462413077.098)1(x

北航数值分析大作业第二题精解

目标:使用带双步位移的QR 分解法求矩阵10*10[]ij A a =的全部特征值,并对其中的每一个实特征值求相应的特征向量。已知:sin(0.50.2)() 1.5cos( 1.2)(){i j i j ij i j i j a +≠+== (i,j=1,2, (10) 算法: 以上是程序运作的逻辑,其中具体的函数的算法,大部分都是数值分析课本上的逻辑,在这里特别写出矩阵A 的实特征值对应的一个特征向量的求法: ()[]()() []()[]()111111I 00000 i n n n B A I gause i n Q A I u Bu u λλ-?-?-=-?-?? ?-=????→=??????→= ?? ? 选主元的消元 检查知无重特征值 由于=0i A I λ- ,因此在经过选主元的高斯消元以后,i A I λ- 即B 的最后一行必然为零,左上方变 为n-1阶单位矩阵[]()()11I n n -?-,右上方变为n-1阶向量[]()11n Q ?-,然后令n u 1=-,则 ()1,2,,1j j u Q j n ==???-。

这样即求出所有A所有实特征值对应的一个特征向量。 #include #include #include #define N 10 #define E 1.0e-12 #define MAX 10000 //以下是符号函数 double sgn(double a) { double z; if(a>E) z=1; else z=-1; return z; } //以下是矩阵的拟三角分解 void nishangsanjiaodiv(double A[N][N]) { int i,j,k; int m=0; double d,c,h,t; double u[N],p[N],q[N],w[N]; for(i=0;i

最优化方法课程实验报告

项目一 一维搜索算法(一) [实验目的] 编写加步探索法、对分法、Newton 法的程序。 [实验准备] 1.掌握一维收搜索中搜索区间的加步探索法的思想及迭代步骤; 2.掌握对分法的思想及迭代步骤; 3.掌握Newton 法的思想及迭代步骤。 [实验容及步骤] 编程解决以下问题: 1.用加步探索法确定一维最优化问题 1 2)(min 30 +-=≥t t t t ? 的搜索区间,要求选取2,1,000===αh t . 加步探索法算法的计算步骤: (1)选取初始点 ]) 0[)(0[max 00t t t ,或,∈?∞+∈,计算 )(00t ??=.给出初始步长0 >h , 加步系数1α>,令0=k 。 (2) 比较目标函数值.令k k k h t t +=+1,计算 )(11++=k k t ??,若k k ??<+1,转(3),否则转(4)。 (3) 加大探索步长.令 k k h h α=+1,同时,令,k t t =,1+=k k t t 1k k =+,转(2)。 (4) 反向探索.若0=k ,转换探索方向,令,k k h h -=1+=k t t ,转(2)。否则,停止迭代,令 11min{}max{}k k a t t b t t ++==,,,。 加步探索法算法的计算框图

程序清单 加步探索法算法程序见附录1 实验结果 运行结果为: 2.用对分法求解 )2()(min +=t t t ?, 已知初始单谷区间]5,3[],[-=b a ,要求按精度3.0=ε,001.0=ε分别计算. 对分法迭代的计算步骤: (1)确定初始搜索区间],[b a ,要求'()0'()0a b ??<>,。 (2) 计算],[b a 的中点)(2 1 b a c +=. (3) 若0)(<'c ?,则c a = ,转(4);若0)(='c ?,则c t =* ,转(5);若0)(>'c ?,则c b = ,转(4). (4) 若ε<-||b a ,则)(2 1* b a t +=,转(5);否则转(2). (5) 打印* t ,结束 对分法的计算框图

最优化方法课程实验报告

. . 项目一 一维搜索算法(一) [实验目的] 编写加步探索法、对分法、Newton 法的程序。 [实验准备] 1.掌握一维收搜索中搜索区间的加步探索法的思想及迭代步骤; 2.掌握对分法的思想及迭代步骤; 3.掌握Newton 法的思想及迭代步骤。 [实验容及步骤] 编程解决以下问题: 1.用加步探索法确定一维最优化问题 1 2)(min 30 +-=≥t t t t ? 的搜索区间,要求选取2,1,000===αh t . 加步探索法算法的计算步骤: (1)选取初始点])0[)(0[max 00t t t ,或,∈?∞+∈,计算)(00 t ??=.给出初始步长0 >h , 加步系数1α>,令0=k 。 (2) 比较目标函数值.令k k k h t t +=+1,计算 )(11++=k k t ??,若k k ??<+1,转(3),否则转(4)。 (3) 加大探索步长.令k k h h α=+1,同时,令,k t t =,1+=k k t t 1k k =+,转(2)。 (4) 反向探索.若0=k ,转换探索方向,令,k k h h -=1+=k t t ,转(2)。否则,停止迭代, 令 11min{}max{}k k a t t b t t ++==,,,。 加步探索法算法的计算框图

. . 程序清单 加步探索法算法程序见附录1 实验结果 运行结果为: 2.用对分法求解 )2()(min +=t t t ?, 已知初始单谷区间]5,3[],[-=b a ,要求按精度3.0=ε,001.0=ε分别计算. 对分法迭代的计算步骤: (1)确定初始搜索区间],[b a ,要求'()0'()0a b ??<>,。 (2) 计算],[b a 的中点)(2 1 b a c += . (3) 若0)(<'c ?,则c a = ,转(4);若0)(='c ?,则c t =* ,转(5);若0)(>'c ?,则c b = ,转(4). (4) 若ε<-||b a ,则)(2 1* b a t +=,转(5);否则转(2).

大连理工优化方法大作业MATLAB编程

function [x,dk,k]=fjqx(x,s) flag=0; a=0; b=0; k=0; d=1; while(flag==0) [p,q]=getpq(x,d,s); if (p<0) b=d; d=(d+a)/2; end if(p>=0)&&(q>=0) dk=d; x=x+d*s; flag=1; end k=k+1;

if(p>=0)&&(q<0) a=d; d=min{2*d,(d+b)/2}; end end %定义求函数值的函数fun,当输入为x0=(x1,x2)时,输出为f function f=fun(x) f=(x(2)-x(1)^2)^2+(1-x(1))^2; function gf=gfun(x) gf=[-4*x(1)*(x(2)-x(1)^2)+2*(x(1)-1),2*(x(2)-x(1)^2)]; function [p,q]=getpq(x,d,s) p=fun(x)-fun(x+d*s)+0.20*d*gfun(x)*s'; q=gfun(x+d*s)*s'-0.60*gfun(x)*s'; 结果: x=[0,1]; s=[-1,1]; [x,dk,k]=fjqx(x,s) x =-0.0000 1.0000 dk =1.1102e-016 k =54

function f= fun( X ) %所求问题目标函数 f=X(1)^2-2*X(1)*X(2)+2*X(2)^2+X(3)^2+ X(4)^2- X(2)*X(3)+2*X(1)+3*X(2)-X(3); end function g= gfun( X ) %所求问题目标函数梯度 g=[2*X(1)-2*X(2)+2,-2*X(1)+4*X(2)-X(3)+3,2*X(3)-X(2)-1,2*X(4)]; end function [ x,val,k ] = frcg( fun,gfun,x0 ) %功能:用FR共轭梯度法求无约束问题最小值 %输入:x0是初始点,fun和gfun分别是目标函数和梯度 %输出:x、val分别是最优点和最优值,k是迭代次数 maxk=5000;%最大迭代次数 rho=0.5;sigma=0.4;

结构优化设计大作业(北航)

《结构优化设计》 大作业报告 实验名称: 拓扑优化计算与分析 1、引言 大型的复杂结构诸如飞机、汽车中的复杂部件及桥梁等大型工程的设计问题,依靠传统的经验和模拟实验的优化设计方法已难以胜任,拓扑优化方法成为解决该问题的关键手段。近年来拓扑优化的研究的热点集中在其工程应用上,如: 用拓扑优化方法进行微型柔性机构的设计,车门设计,飞机加强框设计,机翼前缘肋设计,卫星结构设计等。在其具体的操作实现上有两种方法,一是采用计算机语言编程计算,该方法的优点是能最大限度的控制优化过程,改善优化过程中出现的诸如棋盘格现象等数值不稳定现象,得到较理想的优化结果,其缺点是计算规模过于庞大,计算效率太低;二是借助于商用有限元软件平台。本文基于matlab软件编程研究了不同边界条件平面薄板结构的在各种受力情况下拓扑优化,给出了几种典型结构的算例,并探讨了在实际优化中优化效果随各参数的变化,有助于初学者初涉拓扑优化的读者对拓扑优化有个基础的认识。

2、拓扑优化研究现状 结构拓扑优化是近20年来从结构优化研究中派生出来的新分支,它在计算结构力学中已经被认为是最富挑战性的一类研究工作。目前有关结构拓扑优化的工程应用研究还很不成熟,在国外处在发展的初期,尤其在国内尚属于起步阶段。1904 年Michell在桁架理论中首次提出了拓扑优化的概念。自1964 年Dorn等人提出基结构法,将数值方法引入拓扑优化领域,拓扑优化研究开始活跃。20 世纪80 年代初,程耿东和N. Olhoff在弹性板的最优厚度分布研究中首次将最优拓扑问题转化为尺寸优化问题,他们开创性的工作引起了众多学者的研究兴趣。1988年Bendsoe和Kikuchi发表的基于均匀化理论的结构拓扑优化设计,开创了连续体结构拓扑优化设计研究的新局面。1993年Xie.Y.M和Steven.G.P 提出了渐进结构优化法。1999年Bendsoe和Sigmund证实了变密度法物理意义的存在性。2002 年罗鹰等提出三角网格进化法,该方法在优化过程中实现了退化和进化的统一,提高了优化效率。目前常使用的拓扑优化设计方法可以分为两大类:退化法和进化法。结构拓扑优化设计研究,已被广泛应用于建筑、航天航空、机械、海洋工程、生物医学及船舶制造等领域。 3、拓扑优化建模(SIMP) 结构拓扑优化目前的主要研究对象是连续体结构。优化的基本方法是将设计区域划分为有限单元,依据一定的算法删除部分区域,形成带孔的连续体,实现连续体的拓扑优化。连续体结构拓扑优化方法目前比较成熟的是均匀化方法、变密度方法和渐进结构优化方法。 变密度法以连续变量的密度函数形式显式地表达单元相对密度与材料弹性模量之间的对应关系,这种方法基于各向同性材料,不需要引入微结构和附加的均匀化过程,它以每个单元的相对密度作为设计变量,人为假定相对密度和材料弹性模量之间的某种对应关系,程序实现简单,计算效率高。变密度法中常用的插值模型主要有:固体各向同性惩罚微结构模型(solidisotropic microstructures with penalization,简称SIMP)和材料属性的合理近似模型(rational approximation ofmaterial properties,简称RAMP)。而本文所用即为SIMP插值模型。

最优化实验报告

最优化方法 课程设计报告 班级:________________ 姓名: ______ 学号: __________ 成绩: 2017年 5月 21 日 目录 一、摘要 (1)

二、单纯形算法 (2) 1.1 单纯形算法的基本思路 (2) 1.2 算法流程图 (3) 1.3 用matlab编写源程序 (3) 二、黄金分割法 (7) 2.1 黄金分割法的基本思路 (7) 2.2 算法流程图 (8) 2.3 用matlab编写源程序 (9) 2.4 黄金分割法应用举例 (10) 三、最速下降法 (10) 3.1 最速下降法的基本思路 (10) 3.2 算法流程图 (12) 3.3 用matlab编写源程序 (12) 3.4 最速下降法应用举例 (13) 四、惩罚函数法 (16) 4.1 惩罚函数法的基本思路 (16) 4.2 算法流程图 (17) 4.3 用matlab编写源程序 (17) 4.4 惩罚函数法应用举例 (19) 五、自我总结 (19) 六、参考文献 (19)

一、摘要 运筹学是一门以人机系统的组织、管理为对象,应用数学和计算机等工具来研究各类有限资源的合理规划使用并提供优化决策方案的科学。通过对数据的调查、收集和统计分析,以及具体模型的建立。收集和统计上述拟定之模型所需要的各种基础数据,并最终将数据整理形成分析和解决问题的具体模型。 最优化理论和方法日益受到重视,已经渗透到生产、管理、商业、军事、决策等各个领域,而最优化模型与方法广泛应用于工业、农业、交通运输、商业、国防、建筑、通信、政府机关等各个部门及各个领域。伴随着计算机技术的高速发展,最优化理论与方法的迅速进步为解决实际最优化问题的软件也在飞速发展。其中,MATLAB软件已经成为最优化领域应用最广的软件之一。有了MATLAB这个强大的计算平台,既可以利用MATLAB优化工具箱(OptimizationToolbox)中的函数,又可以通过算法变成实现相应的最优化计算。 关键词:优化、线性规划、黄金分割法、最速下降法、惩罚函数 法

最优化大作业

最优化方法大作业 ---------用优化算法求解函数最值问题

摘要 最优化(optimization) 是应用数学的重要研究领域.它是研究在给定约束之下如何寻求某些因素(的量),以使某一(或某些)指标达到最优的一些学科的总称。最优化问题一般包括最小化问题和最大化问题,而最大化问题可以通过简单的转化使之成最最小化问题。最小化问题分为两类,即约束最小化和无约束最小化问题。在此报告中,前两个问题属于无约束最小化问题的求解,报告中分别使用了“牛顿法”和“共轭梯度法”。后两个问题属于有约束最小化问题的求解,报告中分别用“外点法”和“内点法”求解。虽然命名不一样,其实质都是构造“惩罚函数”或者“障碍函数”,通过拉格朗日乘子法将有约束问题转化为无约束问题进行求解。再此报告中,“外点法”和“内点法”分别用了直接求导和调用“牛顿法”来求解无约束优化问题。 在此实验中,用“共轭梯度法”对“牛顿法”所解函数进行求解时出现错误,报告中另取一函数用“共轭梯度法”求解得到正确的结果。此实验中所有的函数其理论值都是显见的,分析计算结果可知程序正确,所求结果误差处于可接受范围内。 报告中对所用到的四种方法在其使用以前都有理论说明,对“外点法”中惩罚函数和“内点法”中障碍函数的选择也有相应的说明,另外,对此次试验中的收获也在报告的三部分给出。 本报告中所用程序代码一律用MATLAB编写。 【关键字】函数最优化牛顿法共轭梯度法内点法外点法 MATLAB

一,问题描述 1, 分别用共轭梯度发法和牛顿法来求解一下优化问题 ()()()()()4 41432243221102510min x x x x x x x x x f -+-+-++= 2, 分别用外点法和内点发求解一下优化问题 ?? ?≥-++0 1.min 212 231x x t s x x 二、问题求解 用牛顿法求解 ()()()()()4 414 322 432 21102510min x x x x x x x x x f -+-+-++= 1.1.1问题分析: 取步长为1而沿着牛顿方向迭代的方法称为牛顿法,在牛顿法中,初始点的取值随意,在以后的每次迭代中,()[] ()k k k k x f x f x x ??-=-+1 21,直到终止条件成立时停止。 1.1.2 问题求解 注:本程序编程语言为MATLAB ,终止条件为()162 110-≤?x f ,初始取值为 [10 10 10 10] M 文件(求解函数)如下: function s=newton1(f,c,eps) %c 是初值,eps 为允许误差值 if nargin==2 eps=; elseif nargin<1 error('') % return end syms x1 x2 x3 x4

相关主题
文本预览
相关文档 最新文档