大连理工优化方法增广拉格朗日方法MATLAB程序Word文件下载.docx

上传人:b****5 文档编号:18196506 上传时间:2022-12-14 格式:DOCX 页数:6 大小:15.07KB
下载 相关 举报
大连理工优化方法增广拉格朗日方法MATLAB程序Word文件下载.docx_第1页
第1页 / 共6页
大连理工优化方法增广拉格朗日方法MATLAB程序Word文件下载.docx_第2页
第2页 / 共6页
大连理工优化方法增广拉格朗日方法MATLAB程序Word文件下载.docx_第3页
第3页 / 共6页
大连理工优化方法增广拉格朗日方法MATLAB程序Word文件下载.docx_第4页
第4页 / 共6页
大连理工优化方法增广拉格朗日方法MATLAB程序Word文件下载.docx_第5页
第5页 / 共6页
点击查看更多>>
下载资源
资源描述

大连理工优化方法增广拉格朗日方法MATLAB程序Word文件下载.docx

《大连理工优化方法增广拉格朗日方法MATLAB程序Word文件下载.docx》由会员分享,可在线阅读,更多相关《大连理工优化方法增广拉格朗日方法MATLAB程序Word文件下载.docx(6页珍藏版)》请在冰豆网上搜索。

大连理工优化方法增广拉格朗日方法MATLAB程序Word文件下载.docx

functionqua=dhf(x)

qua=[-2*x

(1);

-2*x

(2)];

定义不等式约束函数gfun

functioninq=gfun(x)

inq=10*x

(1)-x

(1)^2+10*x

(2)-x

(2)^2-34;

定义不等式约束梯度数dgf

functioninq=dgf(x)

inq=[10-2*x

(1);

10-2*x

(2)];

定义增广拉格朗日函数mpsi

functionpsi=mpsi(x,fun,hf,gfun,dfun,dhf,dgf,mu,lambda,sigma)

f=feval(fun,x);

he=feval(hf,x);

gi=feval(gfun,x);

l=length(he);

m=length(gi);

psi=f;

s1=0;

fori=1:

l

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

s1=s1+he(i)^2;

end

psi=psi+0.5*sigma*s1;

s2=0.0;

m

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

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

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

定义增广拉格朗日函数梯度函数dmpsi

functiondpsi=dmpsi(x,fun,hf,gfun,dfun,dhf,dgf,mu,lambda,sigma)

dpsi=feval(dfun,x);

dhe=feval(dhf,x);

dgi=feval(dgf,x);

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

i);

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

定义BFGS法函数函数bfgs

function[x,val,k]=bfgs(mpsi,dmpsi,x0,fun,hf,gfun,dfun,dhf,dgf,mu,lambda,sigma)

maxk=1000;

rho=0.5;

sigma1=0.4;

epsilon1=1e-4;

k=0;

n=length(x0);

Bk=eye(n);

while(k<

maxk)

gk=feval(dmpsi,x0,fun,hf,gfun,dfun,dhf,dgf,mu,lambda,sigma);

if(norm(gk)<

epsilon1)

break;

end

dk=-Bk\gk;

m=0;

mk=0;

while(m<

20)

newf=feval(mpsi,x0+rho^m*dk,fun,hf,gfun,dfun,dhf,dgf,mu,lambda,sigma);

oldf=feval(mpsi,x0,fun,hf,gfun,dfun,dhf,dgf,mu,lambda,sigma);

if(newf<

oldf+sigma1*rho^m*gk'

*dk)

mk=m;

m=m+1;

x=x0+rho^mk*dk;

sk=x-x0;

yk=feval(dmpsi,x,fun,hf,gfun,dfun,dhf,dgf,mu,lambda,sigma)-gk;

if(yk'

*sk>

0)

Bk=Bk-((Bk*sk)*sk'

*Bk)/(sk'

*Bk*sk)+(yk*yk'

)/(yk'

*sk);

k=k+1;

x0=x;

val=feval(mpsi,x0,fun,hf,gfun,dfun,dhf,dgf,mu,lambda,sigma);

定义增广拉格朗日乘子法函数multphr

functionanswer=multphr(fun,hf,gfun,dfun,dhf,dgf,x0)

maxk=5000;

sigma=2.0;

eta=2.0;

theta=0.8;

ink=0;

epsilon=1e-4;

x=x0;

mu=0.1*ones(l,1);

lambda=0.1*ones(m,1);

btak=10;

btaold=10;

while(btak>

epsilon&

&

k<

[x,v,ik]=bfgs('

mpsi'

'

dmpsi'

x0,fun,hf,gfun,dfun,dhf,dgf,mu,lambda,sigma);

ink=ink+ik;

he=feval(hf,x);

gi=feval(gfun,x);

btak=0.0;

fori=1:

btak=btak+he(i)^2;

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

btak=btak+temp^2;

btak=sqrt(btak);

ifbtak>

epsilon

if(k>

=2&

btak>

theta*btaold)

sigma=eta*sigma;

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

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

btaold=btak;

x

f

mu

lambda

k

运行求解

>

x0=[0;

0]

x0=

0

multphr('

fun'

hf'

gfun'

dfun'

dhf'

dgf'

x0)

x=

1.00128148956437

4.89871784708758

f=

-31.9923105871169

mu=

1.01559644571312

lambda=

0.754451167977228

k=

4

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

当前位置:首页 > 高等教育 > 艺术

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1