精华内容
下载资源
问答
  • 有约束极值问题实用教案.pptx
  • 使用粒子群方法求函数的极值。里面一共两个.m文件,一个是函数表达式,一个是使用粒子群对这个函数表达式在有约束的条件下求极值的主函数
  • 约束多维极值问题matlab源码,可直接运行
  • 用最速下降法、共轭梯度法、牛顿法、BFGS求解范例目标函数.
  • 卡罗需-库恩-塔克条件判断约束极值点的应用方法,李春明,,卡罗需-库恩-塔克(KKT)条件作为判断最优点是否为约束极值点的依据,在优化算法中非常重要。本文针对数值算法中遇到的几种情况提�
  • 约束一维极值问题

    2015-07-27 10:38:24
    可以实现,进退法。进退法是用来确定搜索区间的算法。其理论依据是:f(x)为单谷函数,且【a,b】为其极小点的一个搜索区间
  • 非线性规划(二): Matlab 求解约束极值问题

    万次阅读 多人点赞 2019-04-24 11:10:34
    非线性规划(一):定义与数值优化...非线性规划(二): Matlab 求解约束极值问题 目录 约束极值问题 1 二次规划 2 罚函数法 3 Matlab 求约束极值问题 3.1 fminbnd 函数 3.2 fseminf 函数 3.3 fminimax 函数...


    非线性规划(一):定义与数值优化方法(梯度法、牛顿法、拟牛顿法、变尺度法)

    非线性规划(二): Matlab 求解约束极值问题


    目录

    约束极值问题 

    1  二次规划         2  罚函数法 

    3  Matlab 求约束极值问题 

    3.1  fminbnd 函数           3.2  fseminf 函数                 3.3  fminimax 函数 

    4 Matlab 优化工具箱的用户图形界面解法 

    4  非线性规划的应用:飞行管理问题

    4.1  模型一            4.2  模型二                习 题 


    约束极值问题 

    有约束条件的极值问题称为约束极值问题,也叫规划问题。 求解约束极值问题要比求解无约束极值问题困难得多。为了简化其优化工作,可采用以下方法:将约束问题化为无约束问题将非线性规划问题化为线性规划问题,以及 能将复杂问题变换为较简单问题的其它方法。 库恩—塔克条件是非线性规划领域中重要的理论成果之一,是确定某点为优点 的必要条件,但一般说它并不是充分条件(对于凸规划,它既是优点存在的必要条件, 同时也是充分条件)。 

    无约束问题的求解请参考这里:非线性规划(一):定义与数值优化方法

    1  二次规划 

    若某非线性规划的目标函数为自变量 x的二次函数约束条件又全是线性的,就称 这种规划为二次规划。

    Matlab 中求解二次规划的命令是 

    [X,FVAL]= QUADPROG(H,f,A,b,Aeq,beq,LB,UB,X0,OPTIONS) 

    返回值 X 是决策向量 x的值,返回值 FVAL 是目标函数在 x处的值。(具体细节可以参 看在 Matlab 指令中运行 help quadprog 后的帮助)。 

    h=[4,-4;-4,8]; 
    f=[-6;-3]; 
    a=[1,1;4,1]; 
    b=[3;9]; 
    [x,value]=quadprog(h,f,a,b,[],[],zeros(2,1)) 

    2  罚函数法 

    利用罚函数法,可将非线性规划问题的求解,转化为求解一系列无约束极值问题, 因而也称这种方法为序列无约束小化技术,简记为 SUMT (Sequential Unconstrained Minization Technique)。 罚函数法求解非线性规划问题的思想是,利用问题中的约束函数作出适当的罚函 数,由此构造出带参数的增广目标函数,把问题转化为无约束非线性规划问题。主要有 两种形式,一种叫外罚函数法,另一种叫内罚函数法,下面介绍外罚函数法

    解  (i)编写 M 文件 test.m  

    function g=test(x); 
    M=50000; 
    f=x(1)^2+x(2)^2+8; 
    g=f-M*min(x(1),0)-M*min(x(2),0)-M*min(x(1)^2-x(2),0)+... 
      M*abs(-x(1)-x(2)^2+2); 

    或者是利用Matlab的求矩阵的极小值和极大值函数编写test.m如下: 

    function g=test(x); 
    M=50000; 
    f=x(1)^2+x(2)^2+8; 
    g=f-M*sum(min([x';zeros(1,2)]))-M*min(x(1)^2-x(2),0)+...   
      M*abs(-x(1)-x(2)^2+2); 

    我们也可以修改罚函数的定义,编写test.m如下: 

    function g=test(x); 
    M=50000; 
    f=x(1)^2+x(2)^2+8; 
    g=f-M*min(min(x),0)-M*min(x(1)^2-x(2),0)+M*(-x(1)-x(2)^2+2)^2; 

     (ii)在 Matlab 命令窗口输入 

    [x,y]=fminunc('test',rand(2,1)) 

    即可求得问题的解。 

    3  Matlab 求约束极值问题 

    在 Matlab 优化工具箱中,用于求解约束优化问题的函数有:fminbnd、fmincon、 quadprog、fseminf、fminimax,上面我们已经介绍了函数 fmincon 和 quadprog。 

    3.1  fminbnd 函数 

    求单变量非线性函数在区间上的极小值            

    Matlab 的命令为

    [X,FVAL] = FMINBND(FUN,x1,x2,OPTIONS)

    它的返回值是极小点x 和函数的极小值。这里 fun 是用 M 文件定义的函数或 Matlab 中 的单变量数学函数。 

    3.2  fseminf 函数 

    上述问题的 Matlab 命令格式为

    X=FSEMINF(FUN,X0,NTHETA,SEMINFCON,A,B,Aeq,Beq) 

    解  (1)编写 M 文件 fun6.m 定义目标函数如下: 

    function f=fun6(x,s); 
    f=sum((x-0.5).^2); 

    (2)编写 M 文件 fun7.m 定义约束条件如下: 

    function [c,ceq,k1,k2,s]=fun7(x,s); 
    c=[];ceq=[]; 
    if isnan(s(1,1))     
        s=[0.2,0;0.2 0]; 
    end 
    %取样值 
    w1=1:s(1,1):100; 
    w2=1:s(2,1):100; 
    %半无穷约束 
    k1=sin(w1*x(1)).*cos(w1*x(2))-1/1000*(w1-50).^2-sin(w1*x(3))-x(3)-1; k2=sin(w2*x(2)).*cos(w2*x(1))-1/1000*(w2-50).^2-sin(w2*x(3))-x(3)-1; 
    %画出半无穷约束的图形 
    plot(w1,k1,'-',w2,k2,'+'); 

    (3)调用函数 fseminf 在 Matlab 的命令窗口输入  

    [x,y]=fseminf(@fun6,rand(3,1),2,@fun7) 

    即可求得结果。

    3.3  fminimax 函数 

    上述问题的 Matlab 命令为    

     X=FMINIMAX(FUN,X0,A,B,Aeq,Beq,LB,UB,NONLCON) 

    解  (1)编写 M 文件 fun8.m 定义向量函数如下: 

    function f=fun8(x); 
    f=[2*x(1)^2+x(2)^2-48*x(1)-40*x(2)+304     
       -x(1)^2-3*x(2)^2     
        x(1)+3*x(2)-18     
       -x(1)-x(2)     
        x(1)+x(2)-8]; 

    (2)调用函数 fminimax 

    [x,y]=fminimax(@fun8,rand(2,1)) 

    3.3.4  利用梯度求解约束优化问题 

    分析:当使用梯度求解上述问题时,效率更高并且结果更准确。 题目中目标函数的梯度为: 

    解  (1)编写 M 文件 fun9.m 定义目标函数及梯度函数: 

    function [f,df]=fun9(x); 
    f=exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1); 
    df=[exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+8*x(1)+6*x(2)+1);exp(x(1))*(4*x(2) +4*x(1)+2)]; 

    (2)编写 M 文件 fun10.m 定义约束条件及约束条件的梯度函数: 

    function [c,ceq,dc,dceq]=fun10(x); 
    c=[x(1)*x(2)-x(1)-x(2)+1.5;-x(1)*x(2)-10]; 
    dc=[x(2)-1,-x(2);x(1)-1,-x(1)]; ceq=[];dceq=[]; 

    (3)调用函数 fmincon,编写主函数文件 example13.m 如下: 

    %采用标准算法 
    options=optimset('largescale','off'); 
    %采用梯度 
    options=optimset(options,'GradObj','on','GradConstr','on'); 
    [x,y]=fmincon(@fun9,rand(2,1),[],[],[],[],[],[],@fun10,options) 
     

    4 Matlab 优化工具箱的用户图形界面解法 

    Matlab 优化工具箱中的 optimtool 命令提供了优化问题的用户图形界面解法。 optimtool 可应用到所有优化问题的求解,计算结果可以输出到 Matlab 工作空间中。 
     

    例 14  用 optimtool 重新求解例 2。 

    解  (i)编写 M 文件 fun1.m 定义目标函数 

    function f=fun1(x); 
    f=sum(x.^2)+8; 
    

    (ii)编写M文件fun2.m定义非线性约束条件 

    function [g,h]=fun2(x); 
    g=[-x(1)^2+x(2)-x(3)^2 
        x(1)+x(2)^2+x(3)^3-20];  %非线性不等式约束 
    h=[-x(1)-x(2)^2+2 
       x(2)+2*x(3)^2-3]; %非线性等式约束 

    利用例 2 已经定义好的函数 fun1 和 fun2。在 Matlab 命令窗口运行 optimtool,就打 开图形界面,如图 1 所示,填入有关的参数,未填入的参数取值为空或者为默认值,然 后用鼠标点一下“start”按钮,就得到求解结果,再使用“file”菜单下的“Export to Workspace…”选项,把计算结果输出到 Matlab 工作空间中去。 

     

    4  非线性规划的应用:飞行管理问题

    在约 10,000m 高空的某边长 160km 的正方形区域内,经常有若干架飞机作水平 飞行。区域内每架飞机的位置和速度向量均由计算机记录其数据,以便进行飞行管理。 当一架欲进入该区域的飞机到达区域边缘时,记录其数据后,要立即计算并判断是否会 与区域内的飞机发生碰撞。如果会碰撞,则应计算如何调整各架(包括新进入的)飞机 飞行的方向角,以避免碰撞。现假定条件如下:

    1)不碰撞的标准为任意两架飞机的距离大于 8km;

    2)飞机飞行方向角调整的幅度不应超过 30 度;

    3)所有飞机飞行速度均为每小时 800km;

    4)进入该区域的飞机在到达区域边缘时,与区域内飞机的距离应在 60km 以上;

    5)多需考虑 6 架飞机;

    6)不必考虑飞机离开此区域后的状况。

    请你对这个避免碰撞的飞行管理问题建立数学模型,列出计算步骤,对以下数据进 行计算(方向角误差不超过 0.01 度),要求飞机飞行方向角调整的幅度尽量小。 

    设该区域 4 个顶点的座标为(0,0),(160,0),(160,160),(0,160)。记录数据见表 1。 

    4.1  模型一 

    本问题中的优化目标函数可以有不同的形式:如使所有飞机的大调整量小; 所有飞机的调整量绝对值之和小等。这里以所有飞机的调整量绝对值之和小为目标 函数,可以得到如下的数学规划模型: 

    利用如下的程序: 

    clc,clear 
    x0=[150 85 150 145 130 0]; 
    y0=[140 85 155 50 150 0]; 
    q=[243 236 220.5 159 230 52]; 
    xy0=[x0; y0]; 
    d0=dist(xy0);   %求矩阵各个列向量之间的距离 
    d0(find(d0==0))=inf; 
    a0=asind(8./d0)  %以度为单位的反函数 
    xy1=x0+i*y0 xy2=exp(i*q*pi/180) 
    for m=1:6      
        for n=1:6          
            if n~=m          
                b0(m,n)=angle((xy2(n)-xy2(m))/(xy1(m)-xy1(n)));           
            end 
        end 
    end 
    b0=b0*180/pi; 
    dlmwrite('txt1.txt',a0,'delimiter', '\t','newline','PC'); 
    fid=fopen('txt1.txt','a'); 
    fwrite(fid,'~','char');       %往纯文本文件中写 LINGO 数据的分割符 dlmwrite('txt1.txt',b0,'delimiter', '\t','newline','PC','-append','roffset', 1) 

    上述飞行管理的数学规划模型可如下输入 LINGO 求解: 

     

    model: 
    sets: 
    plane/1..6/:delta; 
    link(plane,plane):alpha,beta; 
    endsets 
    data: 
    alpha=@file('txt1.txt');   !需要在alpha的数据后面加上分隔符"~"; 
    beta=@file('txt1.txt'); 
    enddata 
    min=@sum(plane:@abs(delta)); 
    @for(plane:@bnd(-30,delta,30)); @for(link(i,j)|i#ne#j:@abs(beta(i,j)+0.5*delta(i)+0.5*delta(j))>a 
    lpha(i,j)); 
    end

     

    4.2  模型二

     

     

     计算到这里也没有展开的必要了。由于目标的约束是< 0和 <= 的不等式约束。用罚函数的方式编写和求解,有思路的人请留言到评论区讨论吧


    习 题 

     


    非线性规划(一):定义与数值优化方法(梯度法、牛顿法、拟牛顿法、变尺度法)

    非线性规划(二): Matlab 求解约束极值问题

    展开全文
  • 2019独角兽企业重金招聘Python工程师标准>>> ...

    外点法
    9ffa9efd487426c7e791a5e0cf0124481eb.jpg

    ff363a847487651960d71857f8600556a80.jpg

    150d81cfda77aa764bc5fa338e02afa8dc9.jpg

    8b4eb7740aea28bcd6ed2874c6cf72ffa16.jpg

    652e9322c8a95278f70bbea83b3ff9665bf.jpg

    内点法
    0155c5ae9b73ec671f0fb39b7ccae0778dc.jpg

    c30f272d30fb1578653557ffe80242df223.jpg

    3475ad28f644d1477e74dcf40cf2b668441.jpg

    8d00d35b524b70c9e4ccb025c53f303ffaf.jpg

     

    转载于:https://my.oschina.net/liyangke/blog/2985945

    展开全文
  • 本文介绍了多维无约束极值优化算法中的梯度下降法,通过python进行实现,并可视化展示了算法过程。 算法简介 给定初始点,沿着负梯度方向(函数值下降最快的方向)按一定步长(机器学习中也叫学习率)进行搜索,直到...
  • 等式约束极值、拉格朗日乘子法、不等式约束极值、KT条件


    1 等式约束极值问题

    考虑非线性规划
    min ⁡ f ( x ) x ∈ R n s.t. φ i ( x ) = 0 , i = 1 , ⋯   , m \begin{aligned} \min &\quad f({x}) \quad {x}\in\R^n \\ \text{s.t.} &\quad \varphi_i({x}) =0,\quad i=1,\cdots,m \end{aligned} mins.t.f(x)xRnφi(x)=0,i=1,,m

    由于自变量的相互独立性被约束条件破坏,不可任意使用求导后的结果。

    1.1 拉格朗日乘子法(必要条件)

    考虑约束极值问题:求双曲线xy=3离原点最近的点?
    min ⁡ x 2 + y 2 s.t. x y = 3 \begin{aligned} \min &\quad x^2 + y^2 \\ \text{s.t.} &\quad xy=3 \end{aligned} mins.t.x2+y2xy=3

    等式约束也可通过变量替换的形式将约束条件加入目标函数,从而转换为无约束极值问题,但一般不易求解。令目标函数 f ( x ) = x 2 + y 2 f(x)=x^2+y^2 f(x)=x2+y2,约束函数 φ ( x ) = x y − 3 = 0 \varphi(x)=xy-3=0 φ(x)=xy3=0,目标函数的等高线和约束曲线如下:

    图1 目标函数等值线簇与约束条件曲线

    当目标函数与约束曲面相切时(目标函数的梯度正交于约束曲面),可能取得最优值。当 f ( x ) f(x) f(x) φ ( x ) \varphi(x) φ(x)相交时,在等高线 f ( x ) f(x) f(x)的内外侧一定存在更大或更小的等高线(目标值)。相切亦不一定保证是极值点,这与 f ( x ) f(x) f(x) φ ( x ) \varphi(x) φ(x)凹凸性有关。

    f f f φ \varphi φ在切点处的梯度方向/法方向平行,即满足 ∇ f ( x ) = λ ∇ φ ( x ) \nabla f(x)=\lambda \nabla \varphi(x) f(x)=λφ(x),即 ( 2 x , 2 y ) T = λ ( y , x ) T (2x, 2y)^T=\lambda(y, x)^T (2x,2y)T=λ(y,x)T,因此等式约束问题转换为
    { 2 x = λ y 2 y = λ x x y = 3 \begin{cases} 2x=\lambda y \\ 2y = \lambda x \\ xy = 3 \end{cases} 2x=λy2y=λxxy=3

    易求得上述方程的解为 { ( x , y )   ∣   ( − 3 , − 3 ) , ( 3 , 3 ) } \{(x,y)\,|\,(-\sqrt 3, -\sqrt 3), (\sqrt 3, \sqrt 3)\} {(x,y)(3 ,3 ),(3 ,3 )}

    一般性,对于等式约束极值问题,定义辅助拉格朗日函数
    L ( x , λ ) = f ( x ) + ∑ i = 1 m λ i φ i ( x ) L(x, \lambda)=f(x) + \sum_{i=1}^m\lambda_i\varphi_i(x) L(x,λ)=f(x)+i=1mλiφi(x)

    分别对 x x x λ \lambda λ求偏导,并令各偏导为0,得
    { ∇ f ( x ) + ∑ i = 1 m λ i ∇ φ i ( x ) = 0 φ i ( x ) = 0 , i = 1 , 2 , ⋯   , m \begin{cases} \nabla f(x) + \sum\limits_{i=1}^m \lambda_i \nabla \varphi_i(x) = 0 \\ \varphi_i(x) = 0, \quad i = 1,2,\cdots,m \end{cases} f(x)+i=1mλiφi(x)=0φi(x)=0,i=1,2,,m

    上述方程组,恰好给出了等式约束和最优解的必要条件。

    证明:最优解处目标函数和约束函数法向量平行,以及拉格朗日函数的意义

    假设寻求函数
    z = f ( x , y ) z=f(x, y) z=f(x,y)

    在条件
    φ ( x , y ) = 0 \varphi(x,y)=0 φ(x,y)=0

    下的极值的必要条件。

    假设 ( x 0 , y 0 ) (x_0, y_0) (x0,y0)处取得极值,首先满足 φ ( x 0 , y 0 ) = 0 \varphi(x_0, y_0)=0 φ(x0,y0)=0。假定 ( x 0 , y 0 ) (x_0,y_0) (x0,y0)的某邻域内 f ( x , y ) f(x,y) f(x,y) g ( x , y ) g(x,y) g(x,y)均有一阶连续偏导,且 φ y ( x , y ) ≠ 0 \varphi_y(x,y)\neq 0 φy(x,y)=0。由隐函数存在定理,存在具有连续导数的函数 y = ψ ( x ) y=\psi(x) y=ψ(x)使得
    z = f ( x , ψ ( x ) ) z=f(x,\psi(x)) z=f(x,ψ(x))

    由极值的必要条件,知
    d z d x ∣ x = x 0 = f x ( x 0 , y 0 ) + f y ( x 0 , y 0 ) d y d x ∣ x = x 0 = 0 \frac{\mathrm dz}{\mathrm dx}\Big |_{x=x_0}=f_x(x_0,y_0)+f_y(x_0,y_0)\frac{\mathrm dy}{\mathrm dx}\big |_{x=x_0}=0 dxdzx=x0=fx(x0,y0)+fy(x0,y0)dxdyx=x0=0

    由隐函数求导公式,知
    ∂ φ ∂ x + ∂ φ ∂ y d y d x = 0 ⇒ d y d x = − φ x φ y ⇒ d y d x ∣ x = x 0 = − φ x ( x 0 , y 0 ) φ y ( x 0 , y 0 ) \frac{\partial\varphi}{\partial x} + \frac{\partial\varphi}{\partial y}\frac{\mathrm dy}{\mathrm dx}=0 \quad \Rightarrow \quad \frac{\mathrm dy}{\mathrm dx}=-\frac{\varphi_x}{\varphi_y} \quad \Rightarrow \quad \frac{\mathrm dy}{\mathrm dx}\big |_{x=x_0}=-\frac{\varphi_x(x_0,y_0)}{\varphi_y(x_0,y_0)} xφ+yφdxdy=0dxdy=φyφxdxdyx=x0=φy(x0,y0)φx(x0,y0)

    因此
    f x ( x 0 , y 0 ) φ x ( x 0 , y 0 ) = f y ( x 0 , y 0 ) φ y ( x 0 , y 0 ) = − λ \frac{f_x(x_0,y_0)}{\varphi_x(x_0,y_0)}=\frac{f_y(x_0,y_0)}{\varphi_y(x_0,y_0)}=-\lambda φx(x0,y0)fx(x0,y0)=φy(x0,y0)fy(x0,y0)=λ

    综上所述,最优解的必要条件
    { f x ( x 0 , y 0 ) + λ φ x ( x 0 , y 0 ) = 0 f y ( x 0 , y 0 ) + λ φ y ( x 0 , y 0 ) = 0 φ ( x 0 , y 0 ) = 0 \begin{cases} f_x(x_0,y_0)+\lambda \varphi_x(x_0,y_0)=0\\ f_y(x_0,y_0)+\lambda \varphi_y(x_0,y_0)=0\\ \varphi(x_0,y_0)=0 \end{cases} fx(x0,y0)+λφx(x0,y0)=0fy(x0,y0)+λφy(x0,y0)=0φ(x0,y0)=0

    引入辅助拉格朗日函数 L ( x , y , λ ) = f ( x , y ) + λ φ ( x , y ) L(x,y,\lambda)=f(x,y)+\lambda \varphi(x,y) L(x,y,λ)=f(x,y)+λφ(x,y),令 L ( x , y , λ ) L(x,y,\lambda) L(x,y,λ)对各变量的偏导为0等价于上述方程组

    2 不等式约束极值问题

    考虑非线性规划问题
    min ⁡ f ( x ) x ∈ R n s.t. g i ( x ) ≤ 0 , i = 1 , ⋯   , m \begin{aligned} \min &\quad f({x}) \quad {x}\in\R^n\\ \text{s.t.} &\quad g_i({x}) \leq 0,\quad i=1,\cdots,m\\ \end{aligned} mins.t.f(x)xRngi(x)0,i=1,,m

    可行域 S = { x ∣ g i ( x ) ≤ 0 , i = 1 , 2 , ⋯   , m } S=\{{x}|g_i({x})\leq 0, i=1,2,\cdots,m\} S={xgi(x)0,i=1,2,,m}

    2.1 约束作用

    x ∗ x^* x上述非线性规划问题的一个可行解,根据可行解的位置,约束作用可分为两种:

    • g i ( x ∗ ) = 0 g_i( x^*) = 0 gi(x)=0 x ∗ x^* x位于 S S S边界, x ∗ x^* x变动受到约束,该约束条件是 x ∗ x^* x起作用约束,约束下标集 I = { i   ∣   g i ( x ∗ ) = 0 } I = \{i \, | \, g_i(x^*) = 0\} I={igi(x)=0},图中A点;
    • g i ( x ∗ ) < 0 g_i( x^*) < 0 gi(x)<0 x ∗ x^* x位于 S S S内部, x ∗ x^* x变动不受约束,该约束条件是$ x^*$的不起作用约束,图中B点;
    图2 可行解的可能分布情况

    2.2 不等式约束的几何解释

    当约束区域 S S S包含目标函数原有可行解时,此时可行解满足 g i ( x ∗ ) < 0 g_i(x^*)<0 gi(x)<0,约束不起作用,等价于无约束极值问题;当约束区域 S S S不包含原有可行解时,此时可行解满足 g i ( x ∗ ) = 0 g_i(x^*)=0 gi(x)=0,约束起作用,可使用拉格朗日方法求解。

    因此可行解位于可行域内部时, λ = 0 \lambda=0 λ=0;可行解位于可行域边界时, g i ( x ∗ ) = 0 g_i(x^*)=0 gi(x)=0,因此无论哪种情况,均有
    λ g i ( x ∗ ) = 0 \lambda g_i(x^*)=0 λgi(x)=0

    图3 可行域不包含原有问题的解(左)和可行域包含原有问题的解(右)

    由上图可知,可行解应尽可能靠近约束边界(梯度方向指向边界),目标函数的负梯度方向应朝向无约束时的解(负梯度方向指向圆心极限值点)。对于该非线性规划问题,约束函数的梯度方向与目标函数的负梯度方向同向:
    − ∇ f ( x ) = λ ∇ g i ( x ) , λ > 0 -\nabla f(x)=\lambda \nabla g_i(x), \quad \lambda > 0 f(x)=λgi(x),λ>0

    梯度的方向

    对于线性规划中的约束条件 g i ( x ∗ ) ≤ 0 g_i(x^*)\leq0 gi(x)0,可行域对应图3中的红色区域。由于梯度是函数增长的方向,可行域的边界值为0,内部值小于0,因此可行域内某点的梯度方向指向可行域边界(较大的函数值)。

    注:若可行域为 g i ( x ∗ ) ≥ 0 g_i(x^*)\geq0 gi(x)0,则可行域内某点的梯度方向指向可行域中心。

    2.3 下降方向

    x ∗ ∈ R n x^* \in \R^n xRn d {d} d是非零向量,若 ∃ δ \exists \delta δ使得每个 λ ∈ ( 0 , δ ) \lambda \in (0, \delta) λ(0,δ),都有 f ( x ∗ + λ d ) < f ( x ∗ ) f(x^* + \lambda {d})<f(x^* ) f(x+λd)<f(x),则 d {d} d x ∗ x^* x处的下降方向。若 f ( x ∗ ) f({x^*}) f(x)可微,当 ∇ f ( x ∗ ) T d < 0 \nabla f(x^*)^T {d}<0 f(x)Td<0,显然可推出上式成立(泰勒展开)。

    2.4 可行方向

    x ∗ x^* x为可行解, d {d} d是非零向量,若 ∃ δ \exists \delta δ使得每个 λ ∈ ( 0 , δ ) \lambda \in (0, \delta) λ(0,δ),都有 x ∗ + λ d ∈ S x^* + \lambda {d}\in S x+λdS,则称 d {d} d x ∗ x^* x处的可行方向 D = { d ∣ d ≠ 0 , x ∗ ∈ cl S , ∃ δ > 0 , ∀ λ ∈ ( 0 , δ ) , x ∗ + λ d ∈ S } D= \{{d}|{d}\neq 0, x^* \in \text{cl S}, \exists \delta > 0, \forall \lambda \in (0, \delta), x^*+\lambda {d} \in S\} D={dd=0,xcl S,δ>0,λ(0,δ),x+λdS},则称为 x ∗ x^* x处的可行方向锥

    x ∗ x^* x为可行解, d {d} d是非零向量,对于 x ∗ x^* x的所有起作用约束,若 ∃ δ \exists \delta δ使得每个 λ ∈ ( 0 , δ ) \lambda \in (0, \delta) λ(0,δ),都有 g i ( x ∗ + λ d ) < 0 g_i( x^* +\lambda d) < 0 gi(x+λd)<0,即
    g i ( x ∗ + λ d ) ≈ g i ( x ∗ ) + ∇ g i ( x ∗ ) T d = ∇ g i ( x ∗ ) T d < 0 , i ∈ I g_i( x^* +\lambda d) \approx g_i(x^*)+ \nabla g_i(x^*)^T d = \nabla g_i(x^*)^T d < 0, \quad i \in I gi(x+λd)gi(x)+gi(x)Td=gi(x)Td<0,iI
    即当 i ∈ I i\in I iI,只要满足 ∇ g i ( x ∗ ) T d < 0 \nabla g_i( x^*)^T{d} < 0 gi(x)Td<0,则 g i ( x ∗ + λ d ) < 0 g_i( x^* +\lambda d)< 0 gi(x+λd)<0,即 d d d x ∗ x^* x的可行方向。

    2.5 Fritz John条件(最优解必要条件)

    由下降方向和可行方向的定义可知,若$ x^ 是 最 优 解 , 则 ∗ ∗ 是最优解,则 ** x^ 处 , 约 束 函 数 处,约束函数 g 的 可 行 方 向 一 定 不 是 目 标 函 数 的可行方向一定不是目标函数 f$的下降方向**,即下列方程组无解
    { ∇ f ( x ∗ ) T d < 0 ∇ g i ( x ∗ ) T d < 0 , i ∈ I \begin{cases} \nabla f(x^*)^T d\lt0 \\ \nabla g_i(x^*)^T d <0, \quad i \in I \end{cases} {f(x)Td<0gi(x)Td<0,iI

    直接理解为,不可能在最优解 x ∗ x^* x处,再找到比最优解对应的目标值小且满足约束条件的解。

    根据Gordan定理,必存在非零向量 w = ( w 0 , w i , i ∈ I ) ≥ 0 w=(w_0,w_i, i\in I) \geq 0 w=(w0,wi,iI)0,使得
    w 0 ∇ f ( x ∗ ) + ∑ i ∈ I w i ∇ g i ( x ∗ ) = 0 w_0\nabla f(x^*) + \sum_{i\in I}w_i\nabla g_i(x^*)= 0 w0f(x)+iIwigi(x)=0


    引理 Farkas
    a 1 , ⋯   , a m a_1,\cdots,a_m a1,,am b b b是n维向量,则存在向量 p p p,满足 a i T p ≥ 0 a_i^Tp\ge 0 aiTp0 b T p ≥ 0 b^Tp\ge 0 bTp0的充要条件是,存在非负数 r i r_i ri使得 b = ∑ i = 1 m γ i a i b=\sum\limits_{i=1}^m\gamma_ia_i b=i=1mγiai
    简单理解是,向量 p p p与所有 a i a_i ai b b b之间的夹角不超过 π \pi π,故向量 b b b a i a_i ai位于"同侧",图4左图。


    引理 Gordan
    a 1 , ⋯   , a m a_1,\cdots,a_m a1,,am b b b是n维向量,则不存在向量 p p p,使得 a i T p < 0 a_i^Tp\lt0 aiTp<0的充要条件是,存在非负数 r i r_i ri使得 ∑ i = 1 m γ i a i = 0 \sum\limits_{i=1}^m\gamma_ia_i=0 i=1mγiai=0
    简单理解是,向量 a 1 , ⋯   , a m a_1, \cdots, a_m a1,,am中,存在夹角超过 π \pi π的两个向量,即 a 1 , ⋯   , a m a1, \cdots, a_m a1,,am位于"不同侧",图4右图。

    图4 Farkas引理和Gordan引理的几何意义

    2.6 Kuhn-Tucker条件(最优解必要条件 - 约束规格)

    Fritz John条件中,当 w 0 = 0 w_0=0 w0=0时,梯度组合未包含目标函数信息。著名的K-T条件,增加起作用约束的梯度线性无关的约束规格。若 x ∗ x^* x是局部最优解,则存在非负数 w i w_i wi i ∈ I i\in I iI,使得
    ∇ f ( x ∗ ) + ∑ i ∈ I w i ∇ g i ( x ∗ ) = 0 \nabla f(x^*) + \sum_{i\in I}w_i\nabla g_i(x^*)= 0 f(x)+iIwigi(x)=0

    证明方法(1)

    由存在非零向量 w = ( w 0 , w ^ i , i ∈ I ) ≥ 0 w=(w_0,\hat w_i, i\in I) \geq 0 w=(w0,w^i,iI)0,使得
    w 0 ∇ f ( x ∗ ) + ∑ i ∈ I w ^ i ∇ g i ( x ∗ ) = 0 w_0\nabla f(x^*) + \sum_{i\in I} \hat w_i\nabla g_i(x^*)= 0 w0f(x)+iIw^igi(x)=0

    显然 w 0 ≠ 0 w_0\neq0 w0=0,因为 w 0 = 0 w_0=0 w0=0时, { ∇ g i ( x ∗ )   ∣   i ∈ I } \{\nabla g_i(x^*)\,|\,i \in I\} {gi(x)iI}线性相关,因此令 w i = w ^ i / w 0 w_i=\hat w_i/w_0 wi=w^i/w0,得
    ∇ f ( x ∗ ) + ∑ i ∈ I w i ∇ g i ( x ∗ ) = 0 , w i ≥ 0 \nabla f(x^*) + \sum_{i\in I}w_i\nabla g_i(x^*)= 0, \qquad w_i\geq0 f(x)+iIwigi(x)=0,wi0

    证明方法(2)
    引入辅助函数 L ( x , w ) = f ( x ) + w T g ( x ) L(x, w)=f(x)+w^Tg(x) L(x,w)=f(x)+wTg(x),假设 x ∗ x^* x是原问题的最优解,由于 g ( x ) ≤ 0 g(x)\leq0 g(x)0 w ≥ 0 w\geq0 w0,故
    L ( x , w ) = f ( x ) + w T g ( x ) ≥ f ( x ∗ ) L(x, w)=f(x)+w^Tg(x)\geq f(x^*) L(x,w)=f(x)+wTg(x)f(x)

    因此, L ( x , w ) L(x, w) L(x,w) x ∗ x^* x处梯度为 0 0 0,即
    ∇ f ( x ∗ ) + ∑ i ∈ I w i ∇ g i ( x ∗ ) = 0 , w i ≥ 0 \nabla f(x^*) + \sum_{i\in I}w_i\nabla g_i(x^*)= 0, \qquad w_i\geq0 f(x)+iIwigi(x)=0,wi0

    因此若 g i ( i ∉ I ) g_i(i\notin I) gi(i/I) x ∗ x^* x可微,则 K − T K-T KT条件的等价形式:
    { ∇ f ( x ∗ ) + ∑ i = 1 m w i ∇ g i ( x ∗ ) = 0 ( 1 ) w i g i ( x ∗ ) = 0 , i = 1 , 2 , ⋯   , m ( 2 ) w i ≥ 0 , i = 1 , 2 , ⋯   , m ( 3 ) \begin{cases} \nabla f(x^*) + \displaystyle\sum\limits_{i=1}^m w_i\nabla g_i(x^*)= 0 &\qquad(1)\\ w_ig_i(x^*)=0, \qquad i=1,2,\cdots,m &\qquad(2)\\ w_i \geq 0,\qquad i=1,2,\cdots,m &\qquad(3) \end{cases} f(x)+i=1mwigi(x)=0wigi(x)=0,i=1,2,,mwi0,i=1,2,,m(1)(2)(3)

    • i ∉ I i\notin I i/I时, g i ( x ∗ ) ≠ 0 g_i(x^*)\neq0 gi(x)=0,故 w i = 0 w_i=0 wi=0,项 w i ∇ g i ( x ∗ ) w_i\nabla g_i(x^*) wigi(x) ( 1 ) (1) (1)式中自然消去;
    • i ∈ I i\in I iI时, g i ( x ∗ ) = 0 g_i(x^*)= 0 gi(x)=0,条件 ( 2 ) (2) (2) w i w_i wi没有限制,条件 ( 2 ) (2) (2)称为互补松弛条件

    2.7 最优解必要条件

    若非线性规划问题中,目标函数 f ( x ) f(x) f(x) g ( x ) g(x) g(x)均为凸函数,约束作用集 I = { i   ∣   g i ( x ∗ ) = 0 } I = \{i\ |\ g_i(x^*)=0\} I={i  gi(x)=0} f f f g i ( i ∈ I ) g_i(i\in I) gi(iI) x ∗ x^* x处可微, g i ( i ∉ I ) g_i(i\notin I) gi(i/I)在点 x ∗ x^* x处连续,若点 x ∗ x^* x处K-T条件成立,则 x ∗ x^* x全局最优解

    证明:显然可行域为凸集, f f f为凸函数,此问题为凸规划。
    凸函数 f ( x ) f(x) f(x),满足
    f ( x ) ≥ f ( x ∗ ) + ∇ f ( x ∗ ) T ( x − x ∗ ) f(x) \geq f(x^*)+\nabla f(x^*)^T(x- x^*) f(x)f(x)+f(x)T(xx)

    由于 x ∗ x^* x处K-T条件成立,故 ∇ f ( x ∗ ) = − ∑ i = 1 m w i ∇ g i ( x ∗ ) \nabla f(x^*) = - \displaystyle\sum\limits_{i=1}^m w_i\nabla g_i(x^*) f(x)=i=1mwigi(x) w i w_i wi非负,因此
    f ( x ) ≥ f ( x ∗ ) − ∑ i ∈ I w i ∇ g i ( x ∗ ) T ( x − x ∗ ) f(x) \geq f(x^*)-\sum\limits_{i\in I}w_i\nabla g_i(x^*)^T(x- x^*) f(x)f(x)iIwigi(x)T(xx)

    同理,由于 g i ( x ) ( i ∈ I ) g_i(x)(i \in I) gi(x)(iI)为凸函数,满足
    g i ( x ) ≥ g i ( x ∗ ) + ∇ g i ( x ∗ ) T ( x − x ∗ ) g_i(x) \geq g_i(x^*)+\nabla g_i(x^*)^T(x- x^*) gi(x)gi(x)+gi(x)T(xx)

    由于 g i ( x ∗ ) = 0 g_i(x^*)=0 gi(x)=0 g i ( x ) ≥ 0 g_i(x)\geq0 gi(x)0,故 ∇ g i ( x ∗ ) T ( x − x ∗ ) ≤ 0 \nabla g_i(x^*)^T(x- x^*)\leq0 gi(x)T(xx)0,因此
    f ( x ) ≥ f ( x ∗ ) f(x) \geq f(x^*) f(x)f(x)
    f ( x ∗ ) f(x^*) f(x)为最小值,问题得证。

    3 对偶问题

    考虑非线性规划问题,令 g ( x ) = ( g 1 ( x ) , g 2 ( x ) , ⋯   , g m ( x ) ) T g(x)=(g_1(x), g_2(x), \cdots, g_m(x))^T g(x)=(g1(x),g2(x),,gm(x))T h ( x ) = ( h 1 ( x ) , h 2 ( x ) , ⋯   , h l ( x ) ) T h(x)=(h_1(x), h_2(x), \cdots, h_l(x))^T h(x)=(h1(x),h2(x),,hl(x))T,则
    min ⁡ x ∈ R n f ( x ) s.t. g ( x ) ≤ 0 h ( x ) = 0 \begin{aligned} \min\limits_{x\in\R^n} &\quad f(x) \\ \text{s.t.} &\quad g(x)\leq 0\\ &\quad h(x) = 0 \end{aligned} xRnmins.t.f(x)g(x)0h(x)=0

    可行域 S = { x   ∣   g ( x ) ≤ 0 ;   h ( x ) = 0 } S=\{{x}\ |\ g(x)\leq 0;\ h(x) = 0\} S={x  g(x)0; h(x)=0},引入广义拉格朗日函数 L ( x , w , υ ) = f ( x ) + w T g ( x ) + υ T h ( x ) L(x, w, \upsilon)=f(x)+w^T g(x)+\upsilon^T h(x) L(x,w,υ)=f(x)+wTg(x)+υTh(x)

    3.1 原始问题的等价问题

    对于上述非线性规划问题,,令
    θ P ( x ) = max ⁡ w , υ L ( x , w , υ ) \theta_P(x) = \max\limits_{w, \upsilon} L(x, w, \upsilon) θP(x)=w,υmaxL(x,w,υ)

    (i) x x x违反约束, x ∉ S x \notin S x/S,此时 θ P ( x ) → + ∞ \theta_P(x) \to +\infty θP(x)+

    g i ( x ∗ ) > 0 g_i(x^*)>0 gi(x)>0,则可令 w i → + ∞ w_i \to +\infty wi+,当 h i ( x ∗ ) ≠ 0 h_i(x^*)\neq 0 hi(x)=0,令 υ i h i ( x ∗ ) → + ∞ \upsilon_ih_i(x ^*) \to +\infty υihi(x)+,而将其他 w j w_j wj υ j \upsilon_j υj置0,则 θ P ( x ) → + ∞ \theta_P(x) \to +\infty θP(x)+

    (ii) x x x满足约束, x ∈ S x \in S xS,此时 θ P ( x ) = f ( x ) \theta_P(x) = f(x) θP(x)=f(x)
    当且仅当 x x x位于约束边界时, θ P ( x ) = f ( x ) \theta_P(x) = f(x) θP(x)=f(x)

    综上所述,有
    max ⁡ w , υ L ( x , w , υ ) = { f ( x ) , x ∈ S + ∞ , x ∉ S \max\limits_{w, \upsilon} L(x, w, \upsilon) = \begin{cases} f(x), \quad x \in S\\ +\infty, \quad x \notin S \end{cases} w,υmaxL(x,w,υ)={f(x),xS+,x/S

    因此,原始问题的等价问题: min ⁡ x max ⁡ w , υ L ( x , w , υ ) \min\limits_{x}\max\limits_{w, \upsilon} L(x, w, \upsilon) xminw,υmaxL(x,w,υ),其中 x ∈ S x \in S xS,即拉格朗日极小极大问题,先求最优 w w w υ \upsilon υ,再求最优 x x x

    3.2 原始问题的对偶问题

    原问题的对偶问题为
    max ⁡ w , υ min ⁡ x L ( x , w , υ ) s.t. w ≥ 0 \begin{aligned} \max\limits_{w, \upsilon} &\quad\min\limits_{x}L(x, w, \upsilon)\\ \text{s.t.} &\quad w \geq 0\\ \end{aligned} w,υmaxs.t.xminL(x,w,υ)w0

    对偶问题为拉格朗日极大极小问题,先求最优 x x x,再求最优 w w w υ \upsilon υ

    3.3 原始问题与对偶问题关系

    x ∈ S x \in S xS时, g ( x ) ≤ 0 g(x)\leq0 g(x)0 h ( x ) = 0 h(x)=0 h(x)=0,且 w ≥ 0 w\geq0 w0,因此
    min ⁡ x L ( x , w , υ ) = min ⁡ x f ( x ) + w T g ( x ) + υ T h ( x ) ≤ f ( x ) \min\limits_{x}L(x, w, \upsilon) =\min_{x}f(x) + w^T g(x)+\upsilon^T h(x) \leq f(x) xminL(x,w,υ)=xminf(x)+wTg(x)+υTh(x)f(x)

    对上述不等式的左边取上界(max)、右边取下界(min),则不等式仍然成立,即
    max ⁡ w , υ min ⁡ x L ( x , w , υ ) ≤ min ⁡ x f ( x ) = min ⁡ x max ⁡ w , υ L ( x , w , υ ) \max\limits_{w,\upsilon}\min\limits_{x}L(x, w, \upsilon) \leq \min\limits_{x}f(x)=\min\limits_{x}\max\limits_{w, \upsilon} L(x, w, \upsilon) w,υmaxxminL(x,w,υ)xminf(x)=xminw,υmaxL(x,w,υ)

    即原问题目标函数的最小值不小于对偶问题目标函数的最大值,弱对偶定理

    原问题的解等价于对偶问题的解成立的条件是什么?(强对偶定理)
    (i) 若 f f f g g g是凸函数, h h h是仿射函数,若存在 x x x,对所有 i i i满足 g i ( x ) < 0 g_i(x)\lt0 gi(x)<0,则存在 x ∗ , w ∗ , υ ∗ x^*, w^*,\upsilon^* x,w,υ,使 x ∗ x^* x是原始问题的解, w ∗ , υ ∗ w^*,\upsilon^* w,υ是对偶问题的解,且目标值相同。

    (ii) 若 f f f g g g是凸函数, h h h是仿射函数,且 g i ( x ) ≤ 0 g_i(x)\leq 0 gi(x)0,则存在 x ∗ x^* x w ∗ , υ ∗ w^*,\upsilon^* w,υ分别是原始问题和对偶问题的解的充分必要条件是 x ∗ , w ∗ , υ ∗ x^*,w^*,\upsilon^* x,w,υ满足KKT条件,即
    { ∇ f ( x ∗ ) + ∑ i = 1 m w i ∇ g i ( x ∗ ) = 0 w i g i ( x ∗ ) = 0 , i = 1 , 2 , ⋯   , m g i ( x ∗ ) ≤ 0 , i = 1 , 2 , ⋯   , m w i ≥ 0 , i = 1 , 2 , ⋯   , m h j ( x ∗ ) = 0 , j = 1 , 2 , ⋯   , l \begin{cases} \nabla f(x^*) + \displaystyle\sum\limits_{i=1}^m w_i\nabla g_i(x^*)= 0 \\ w_ig_i(x^*)=0, \qquad i=1,2,\cdots,m \\ g_i(x^*)\leq 0, \qquad i=1,2,\cdots,m \\ w_i \geq 0,\qquad i=1,2,\cdots,m \\ h_j(x^*)=0,\qquad j=1,2,\cdots,l \end{cases} f(x)+i=1mwigi(x)=0wigi(x)=0,i=1,2,,mgi(x)0,i=1,2,,mwi0,i=1,2,,mhj(x)=0,j=1,2,,l

    参考文献:

    1. 约束优化方法之拉格朗日乘子法与KKT条件:https://www.cnblogs.com/ooon/p/5721119.html
    2. 约束最优化方法之最优性条件:https://blog.csdn.net/u012430664/article/details/78745729
    展开全文
  • 2019独角兽企业重金招聘Python工程师标准>>> ...
  • 此程序里主要是解决无约束一维极值问题的matlab源代码,主要进退法、黄金分割法、斐波那契法等相关算法,经测试好用
  • 在畸形约束极值点附近,约束边界与目标函数等值线接近于相切,可行适用方向区非常狭小,难以寻得真正的约束极值点。为了使优化方法更好地解决各领域的复杂优化问题,研究具有畸形约束极值点问题的优化。针对该类问题...
  • 约束的多维极值问题一般描述如下公式: 其中x为向量,而f(x)为标量函数,多维极值的问题就是要求得全局最小值。但是大多数的算法都存在着搜索范围问题,无法求得全局最小值,只能计算出一些局部最优值。对于...
  • 这里是比较奇怪的,因为这道题目的约束条件是x,但是求的最值是(a+1)b, 这道题目的正常做法就是由不等式关系恒成立,推出a和b必须满足的条件,然后再来求(a+1)b的最值,这样有点模糊。但幸好f(x)的形式比较简单。 ...
  • 2019独角兽企业重金招聘Python工程师标准>>> ...起作用约束和可行下降方向的概念 库恩 - 塔克条件   转载于:https://my.oschina.net/liyangke/blog/2984846
  • [CO] 无约束极值问题的解法

    千次阅读 2015-11-07 20:57:34
    最后修改日期 2015/11/7无约束极值问题可以表述为 minf(X),X∈Rnmin f(X), X \in R^n 对于这类问题的求解一般要用到迭代法。迭代法可分为两大类。一类是要用到函数一阶导数或二阶导数的解析法;另一类是迭代过程中...
  • 学过中学数学的都知道,对于无约束条件的函数求极值,主要利用导数求解法。 例如求解函数f(x,y)=x3-4x2+2xy-y2+1的极值。步骤如下: (1)求出f(x,y)的一阶偏导函数f’x(x,y),f’y(x,y)。 f’x(x,y) = 3x2-8x+2y f...
  • 畸形约束极值点优化问题的经典优化方法对比,李春明,,对于边界与目标函数等值线接近于相切的畸形约束极值点优化问题,对比了随机方向方法、复合形法、内点惩罚函数法、外点惩罚函数法
  • 约束极值条件是最优化理论的重要组成部分,在理论上和实践上都重要意义,约束问题的最优性条件是它的逻辑推广,解约束最优化问题的一种策略是解一系列无约束问题。本文首先介绍Rayleigh商定理,然后利用...
  • this.p={ m:2,b:2,loftPermalink:'',id:'fks_087066084083086074082084095068072084084066087087095066082',blogTitle:'两个约束条件的条件极值',blogAbstract:'本博文推导三元函数在两个约束条件下取得极值的必要...
  • 5 非线性规划 2 约束极值.ppt
  • 第八章 非线性规划 约束极值.pdf
  • 多元函数求极值: https://wenku.baidu.com/view/517514b269dc5022aaea0094.html
  • 约束一维极值问题matlab源码,可直接运行
  • 用matlab求有约束条件函数的极值

    万次阅读 2017-04-22 21:54:07
    用matlab求有约束条件函数的极值机房里的R2010a版本命令:1、fmincon FMINCON finds a constrained minimum of a function of several variables. 2、fmincon用法: X = FMINCON(FUN,X0,A,B,Aeq,Beq,LB,UB,...
  • matlab中如何用遗传算法求极值 matlab遗传算法工具箱。 核心函数: (1)function [pop]=initializega(num,bounds,eevalFN,eevalOps,options)--初始种群的生成函数 【输出参数】 pop--生成的初始种群 【输入...
  • 对于 Ackley 函数,该函数称为 Ackley 函数,很多局部最优的值。
  • 运筹学 $5约束极值

    2020-08-05 23:17:04
    §5 约束极值 C1 最优性条件 1)非起作用约束:当前可行解不在约束边界的约束 如g(X0)>tg(X_0)\gt tg(X0​)>t满足g(X0)≥tg(X_0)\ge tg(X0​)≥t但不在边界上 2)可行方向:∃λ:X0+λD∈R  ⟺  \exist\...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,370
精华内容 4,548
关键字:

有约束极值