• 大小: 2KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-05-05
  • 语言: Matlab
  • 标签: 最优化  

资源简介

外点罚函数实现代码,罚函数是指在求解最优化问题(无线性约束优化及非线性约束优化)时,在原有目标函数中加上一个障碍函数,而得到一个增广目标函数,罚函数的功能是对非可行点或企图穿越边界而逃离可行域的点赋予一个极大的值,即将有约束最优化问题转化为求解

资源截图

代码片段和文件信息

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); 
   

评论

共有 条评论