资源简介
外点罚函数实现代码,罚函数是指在求解最优化问题(无线性约束优化及非线性约束优化)时,在原有目标函数中加上一个障碍函数,而得到一个增广目标函数,罚函数的功能是对非可行点或企图穿越边界而逃离可行域的点赋予一个极大的值,即将有约束最优化问题转化为求解
代码片段和文件信息
syms x1 x2 M; %M为罚因子。
m(1)=1;
c=5; %c为递增系数。赋初值。
a(1)=-3;
b(1)=-3;
f=x1+x2+M*(x1^2+x2^2-2)^2;%f=x1^3+x2^2+M*(x1+x2-1)^2;%外点罚函数
f0(1)=1;
%求偏导、Hessian元素
fx1=diff(f‘x1‘); %求x1偏导
fx2=diff(f‘x2‘);%求x2偏导
fx1x1=diff(fx1‘x1‘);%x1二阶导
fx1x2=diff(fx1‘x2‘);
fx2x1=diff(fx2‘x1‘);
fx2x2=diff(fx2‘x2‘);
%外点法M迭代循环
for k=1:100
x1=a(k);x2=b(k);M=m(k);
%牛顿法求最优值
for n=1:100
f1=subs(fx1); %求解梯度值和Hessian矩阵
f2=subs(fx2);
f11=subs(fx1x1);
f12=subs(fx1x2);
f21=subs(fx2x1);
评论
共有 条评论