大连理工优化方法增广拉格朗日方法MATLAB程序Word文件下载.docx
- 文档编号:18196506
- 上传时间:2022-12-14
- 格式:DOCX
- 页数:6
- 大小:15.07KB
大连理工优化方法增广拉格朗日方法MATLAB程序Word文件下载.docx
《大连理工优化方法增广拉格朗日方法MATLAB程序Word文件下载.docx》由会员分享,可在线阅读,更多相关《大连理工优化方法增广拉格朗日方法MATLAB程序Word文件下载.docx(6页珍藏版)》请在冰豆网上搜索。
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 大连理工 优化 方法 增广 拉格朗日 MATLAB 程序
![提示](https://static.bdocx.com/images/bang_tan.gif)