《惩罚函数地内点法.doc》由会员分享,可在线阅读,更多相关《惩罚函数地内点法.doc(8页珍藏版)》请在课桌文档上搜索。
1、一、算法理论内点法总是从可行域的内点出发,并保持在可行域内进展搜索,因此这种方法适用于只有不等式约束条件的问题 内点法据图计算步骤:1 给定初,允许误差,初始参数缩小系数;2 以为初始点,求解问题 Min S.t. 3假如如此停,得近似解;否如此令回2.二、算法框图求满足从出发,求改变约束极值方法输出结果停三、算法程序clcm=zeros(1,50);a=zeros(1,50);b=zeros(1,50);f0=zeros(1,50);syms x1 x2 e;m(1)=1;c=0.2;a(1)=2;b(1)=-3;f=x12+x22-e*(1/(2*x1+x2-2)+1/(1-x1); f0
2、(1)=15; fx1=diff(f,x1); fx2=diff(f,x2);fx1x1=diff(fx1,x1);fx1x2=diff(fx1,x2);fx2x1=diff(fx2,x1);fx2x2=diff(fx2,x2);for k=1:100x1=a(k);x2=b(k);e=m(k);for n=1:100f1=subs(fx1);f2=subs(fx2);f11=subs(fx1x1);f12=subs(fx1x2);f21=subs(fx2x1);f22=subs(fx2x2);if(double(sqrt(f12+f22)=0.002)a(k+1)=double(x1);b(
3、k+1)=double(x2);f0(k+1)=double(subs(f); break; else X=x1 x2-inv(f11 f12;f21 f22)*f1 f2; x1=X(1,1);x2=X(2,1);endendif(double(sqrt(a(k+1)-a(k)2+(b(k+1)-b(k)2)=0.001)&(double(abs(f0(k+1)-f0(k)/f0(k)=0.001) a(k+1) b(k+1) k f0(k+1)break;elsem(k+1)=c*m(k);endend4、 算法实现例1. 利用内点法求解解:改变算法中f=x12+x22-e*(1/(2*x1+x2-2)+1/(1-x1); 回车完成结果复制粘贴代码,回车出现结果例2. 利用内点法求解解:改变算法中f=x12-x22-e*(1/(x1+x2-3)+1/(-x1); 回车完成结果例3. 利用内点法求解解:改变算法中f=2*x12-x22-e*(1/(x1+4*x2)+1/(x2-x1); 回车完成结果例4. 利用内点法求解解:改变算法中f=3*x12+x22-e*(1/(2*x1+x2)+1/(x2-x1); 回车完成结果