文档介绍:(一) 实验目的熟练掌握外点法、内点法原理并可以在 matlab 熟练运行。(二) 问题描述目标函数: . (三) 算法介绍外点法: 对于混合约束问题 min f(x) . 可以转化为: min F(x,)=f(x)++ ……+=f(x)+ 其中, P(x)= F(x,) :增广目标函数 P(x) :惩罚函数, 外部惩罚函数法迭代步骤: 给定初始点,初始惩罚因子,放大系数 c>1 ,置 k:=1 Step1 :以为初始点求解 min F(x,)得极小点 Step2 :若 Step3 :,置转 step1 注意外点法在选取初始点时要选取在可行域外的点。在本问题中=[-1;-1], c=10,= , 内点法: 这种解法只能用于不等式对于约束问题 min f(x) . 可以转化为: min F(x,)=f(x)+ ) 其中为一个小正数内部惩罚函数法迭代步骤: 已知 f(x),, 取给定初始点,初始惩罚因子,放大系数 1>c>0 ,置 k:=1 Step1 :以为初始点求解 min F(x,)得极小点 Step2 :若 Step3 :,置转 step1 在本问题中= [;] ,c= ,= , 注意内点法在选取初始点时要选取在可行域内的点。其中以为初始点求解 min F( x, )得极小点的求解过程我们利用最速下降法得到(四)程序代码及运行结果: (1 )外点法源程序代码: function f=again(x,c,e) syms x1 x2 t a=1; f=x1+x2; y1=-x1^2+x2; y2=x1; y1=-subs(y1,{x1,x2},x); y2=-subs(y2,{x1,x2},x) ; P=(max(0,double(y1)))^2+(max(0,double(y2)))^2; if double(y1)>0&&double(y2)>0 y11=-x1^2+x2; y22=x1; end if double(y1)<=0&&double(y2)>0 y11=0; y22=x1; end if double(y2)<=0&&double(y1)>0 y11=-x1^2+x2; y22=0; end FF=f+a*(y11^2+y22^2) ; a1=diff(FF,x1); b1=diff(FF,x2); a1=subs(a1,{x1,x2},x); b1=subs(b1,{x1,x2},x); g=[a1;b1]; d=-g; while P*a>e while double(sqrt(a1^2+b1^2))> x=x+t*d; FF=subs(FF,{x1,x2},x); f1=diff(FF); f1=solve(f1); if f1~=0 ti=double(f1); else break end x=subs(x,t,ti(1,1)); FF=f+a*(y11^2+y22^2); a11=diff(FF,x1); b11=diff(FF,x2); a11=subs(a11,{x1,x2},x); b11=subs(b11,{x1,x2},x); g11=[a11;b11]; d=-g11; a1=a11; b1=b11; end a=a*c; y1=-x1^2+