09-1惩罚函数的内点法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2013-2014 (1) 专业课程实践论文
内点法
内点法总是从可行域的内点出发,并保持在可行域内进行搜索,因此这种方法适用于只有不等式约束条件的问题
内点法据图计算步骤:
1.给定初()D x int 0∈,允许误差0〉ε,初始参数0r 1〉缩小系数1k ),1,0(=∈β;
2.以)1-k (x 为初始点,求解问题
Min )()(f x B r x k +
S.t. D int x ∈
3.若ε〈)()(k k x B r 则停,得近似解)(k x ;否则令1,r 1k +==+k k r k β回2.
求满足)0()0(x ,.....,2,1,0)(g 的m i x i =< ;;ρρ⇒⇒00k
从)(k x 出发,求
))(()(f ),(min ),(1)1(x g x x G x G i m i i k ∑=++==φρρρ
0~)}({max )1(+k i i x g )1()()1(0)()(x ++⇒-+k k k k x x x a )(f ~)(f )()1(k k x x + 1~ερ 1(k)1)(k ||~ x -x ||ε+k =+⇒1k ;ραρ
改变约束极值方法 输出结果
停
clc
m=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=x1^2+x2^2-e*(1/(2*x1+x2-2)+1/(1-x1));
f0(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:100
x1=a(k);x2=b(k);e=m(k);
for n=1:100
f1=subs(fx1);
f2=subs(fx2);
f11=subs(fx1x1);
f12=subs(fx1x2);
f21=subs(fx2x1);
f22=subs(fx2x2);
if(double(sqrt(f1^2+f2^2))<=0.002)
a(k+1)=double(x1);b(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);
end
end
if(double(sqrt((a(k+1)-a(k))^2+(b(k+1)-b(k))^2))<=0.001)&&(double(a bs((f0(k+1)-f0(k))/f0(k)))<=0.001)
a(k+1)
b(k+1)
k
f0(k+1)
break;
else
m(k+1)=c*m(k); end
end
四、算法实现 例1. 利用内点法求解22
21min x x + s.t 02221
≤-+x x 011≤+-x
解:改变算法中f=x1^2+x2^2-e*(1/(2*x1+x2-2)+1/(1-x1)); 回车完成结果 复制粘贴代码,回车出现结果
0 0
3 .t s min 12122
21≤-≤-+-x x x x x
解:改变算法中f=x1^2-x2^2-e*(1/(x1+x2-3)+1/(-x1)); 回车完成结果
0 0
4 .t s 2min 122122
21≤-≤+-x x x x x x
解:改变算法中f=2*x1^2-x2^2-e*(1/(x1+4*x2)+1/(x2-x1)); 回车完成结果
0 0
2 .t s 3min 122122
21≤-≤++x x x x x x
解:改变算法中f=3*x1^2+x2^2-e*(1/(2*x1+x2)+1/(x2-x1)); 回车完成结果