外点惩罚罚函数
- 格式:doc
- 大小:79.50 KB
- 文档页数:3
内外惩罚函数一、实验目的通过内外点法的学习让我们掌握利用罚函数解决线性规划为解决相应问题的一种思路与策略。
二、问题描述用外点法求解问题:Min f x=(x1−1)2−x22s.t.x2−1≥0用内点法求解问题:Min f x=x1+x2s.t.−x12+x2≥0,x2≥0三、算法介绍外部惩罚函数法:给定初始点x0,初始惩罚因子σ1,放大系数c>1, ε>0,置k:=1(i)以x(k−1)为初始点求解min F(x,σk) 得极小点x(k)(ii)若σk P (x(k))) <ε,stop(iii)σk+1+1= c·σk,置k:=k+1 转(i)内部惩罚函数法:已知f(x),si(x),取β(x)=1/s12(x) + 1/s22(x) +…+ 1/s m2(x)取一初始容许点x0,初始惩罚因子μ1>0,惩罚因子的缩小系数c<1,置k=1(i)以x(k−1)为初始点,求解minf(x)+μkβ(x)得极小点x(k));(ii)若μkβ(x(k))<ε,stop;(iii)置μk+1=cμk,置k=k+1,转(ii)四、程序计算结果外点法:建立ExteriorPenalty.m:function ExteriorPenaltyX0=[2;3];format long;M0=1;C=8;e1=0.001;e2=0.001;k=0;t=0;kk=0;k1=0;N=100;n=length(X0);while t<N1syms X1X2real;gux1=X2-1;gux2=0;gux1_func=inline(vectorize(gux1),'X1','X2');gux2_func=inline(vectorize(gux2),'X1','X2');if gux1_func(X0(1),X0(2))>=0gux1=0;endif gux2_func(X0(1),X0(2))>=0gux2=0;endfx=(X1-1)^2+X2^2+M0*(gux1^2+gux2^2);fx_func=inline(vectorize(fx),'X1','X2');Xr=X0;t=t+1;while kk<Nkk=kk+1;if k==0H0=eye(2);g0_1=diff(fx,'X1',1);g0_2=diff(fx,'X2',1);g0_1_func=inline(vectorize(g0_1),'X1','X2');g0_2_func=inline(vectorize(g0_2),'X1','X2');g0=[g0_1_func(X0(1),X0(2));g0_2_func(X0(1),X0(2))]; endXi=X0;Sk=H0*g0;syms rreal;X0=X0+r*Sk;fx_r=vpa(fx_func(X0(1),X0(2)),5);fx_r_func=diff(fx_r,r,1);fx_r_func_func=inline(vectorize(fx_r_func),'r');options=optimset('Display','off');r=fzero(fx_r_func_func,1,options);X0=Xi+r*Sk;g0_1=diff(fx,'X1',1);g0_2=diff(fx,'X2',1);g0_1_func=inline(vectorize(g0_1),'X1','X2');g0_2_func=inline(vectorize(g0_2),'X1','X2');g0=[g0_1_func(X0(1),X0(2));g0_2_func(X0(1),X0(2))];if sqrt(sum(g0.^2))<=e1endif k==nk=0;elseg1=[g0_1_func(Xi(1),Xi(2));g0_2_func(Xi(1),Xi(2))]; delta_g=g0-g1;delta_x=X0-Xi;Ak=delta_x*(delta_x')/(delta_x'*delta_g);Bk=H0*delta_g*(H0*delta_g)'*inv(delta_g'*H0*delta_g);H0=H0+Ak-Bk;k=k+1;endendifsqrt(sum((Xi-X0).^2))<e1&abs((fx_func(Xi(1),Xi(2))-fx_func(X0(1), X0(2)))/fx_func(Xi(1),Xi(2)))<e2break;elseM0=M0*C;endenddisp(t);disp(X0);matlab中代码和结果为:因此Min f x=(x1−1)2−x22= 0此时x1=x2=1内点法:function InteriorPenaltyk=0;r=1;c=0.1;format long;e=0.001;N=100;X0=[2;1];Xr=[3;1];disp('0');disp(X0');while sqrt(sum((X0-Xr).^2))>e&k<Nk=k+1;syms X1X2real;f=X1+X2-r*log(-X1^2+X2)-r*log(X1);dfx1=diff(f,X1,1);dfx2=diff(f,X2,1);dfx1x1=diff(f,X1,2);dfx2x2=diff(f,X2,2);dfx1x2=diff(dfx1,X2,1);grads_x1=inline(vectorize(dfx1),'X1','X2');grads_x2=inline(vectorize(dfx2),'X1','X2');hession_11=inline(vectorize(dfx1x1),'X1','X2');hession_12=inline(vectorize(dfx1x2),'X1','X2');hession_22=inline(vectorize(dfx2x2),'X2','X2');inv_hession=inv([hession_11(X0(1),X0(2)),hession_12(X0(1),X0(2)); hession_12(X0(1),X0(2)),hession_22(X0(1),X0(2))]);giads=[grads_x1(X0(1),X0(2));grads_x2(X0(1),X0(2))];Xr=X0;X0=X0-inv_hession*giads;r=r*c;disp(k);disp(X0');enddisp('The result is: ');disp(k);disp(X0');matlab中代码和结果为:因此Min f x=x1+x2= 0此时x1=x2=0。
/kuai_su/youhuasheji/suanfayuanli/4.3.asp
约束优化算法——外点惩罚函数法
(一)基本原理
设原目标函数为,在不等式约束条件下用外点惩罚函数法求极小。
外点法常采用如下形式的泛函:
(6)
由此,外点法所构造的相应的惩罚函数形式为
(7)
式中,惩罚因子是一个递增的正值数列,即
惩罚项中:
(8)
由此可见,当迭代点X位于可行域内满足约束条件时,惩罚项为零,这时不管
取多大,新目标函数就是原目标函数,亦即满足约束条件时不受“惩罚”,此时求式(7)的无约束极小,等价于求原目标函数在己满足全部约束条件下的极小;而
当点X位于可行域外不满足约束条件时,惩罚项为正值,惩罚函数的值较原目标函数的值增大了,这就构成对不满足约束条件时的一种“惩
罚”。
由式(7)可知,每一次对罚函数求无约束的极值,其结果将随该次所给定的罚因子值而异。
在可行域外,离约束边界越近的地方,约束函数的值越大,的值也就越小,惩罚项的作用也就越弱,随着罚因子逐次调整增大,有增大惩罚项的趋势,但一般说来泛函值下降得更
快一些。
此时尽管值增大,但泛函值亦趋于零,满足式(3)。
最后当,泛函值和惩罚项值均趋近于零。
外点法在寻优过程中,随着罚因子的逐次调整增大,即取
,所得的最优点序列可以看作是以为参数的一条轨迹,当时,最优点点列
从可行域的外部一步一步地沿着这条轨迹接近可行域,所得的最优点列逼近原问题的约束最优点。
这样,将原约束最优化问题转换成为序列无约束最优化问题。
外点法就是因从可行域的外部逼近最优解而得名。
(二)迭代过程及算法框图
外点惩罚函数法的具体迭代步骤如下:
(1)给定初始点,初始惩罚因子,迭代精度,递增系数c>1,维数n。
置。
(2)以为初始点,用无约束最优化方法求解惩罚函数的极小点,即:
(9)。
(3)检验是否满足迭代终止条件:
或(若)
或(若)
若不满足,则进行第(4)步;否则转第(5)步。
(4)令,置,返回进行第(2)步。
(5)输出最优解:,停止迭代。
外点惩罚函数法的算法框图如图所示。
(三)几点说明
(1)外点惩罚函数法的初始点,可以在可行域内也可以在可行域外任意选取,这对实际计算是很方便的。
(2)初始罚因子和递增系数c的选择是否恰当,对方法的有效性与收敛速度都有影响。
若与c取值过小,则序列求解函数的无约束最优化次数增多,计算时间增加。
但若与c取值过大,惩罚函数的性态变坏,导致求解无约束优化问题的困难。
(3)外点惩罚函数法通常求到的最优点是无限接近约束边界的一个位于非可行域的外点,显然,这就不能严格满足约束条件。
为了解决这个问题,可对那些必须严格满足的约束(如强度、刚度等性能约束)引入约束裕量,如图所示,意即将这些约束边界向可行域内紧缩移动一个微量,也就是新定义的约束条件为这样可以用新定义的约束函数构成的惩罚函数来求它的极小化,取得最优设计方案。
它虽在紧缩后的约束边界之外,但已在原来的约束边界之内,这就可以使原不等式约束条件能够严格的满足。
当然,值不宜选取过大,以避免所得结果与最优点相差过远,一般取。