知识库 > 数学方法 > 优化方法

二次规划    

  •     二次规划是非线性规划中的一类特殊规划问题,这类规划问题的约束条件和线性规划一样都是线性的,目标函数是自变量X的二次函数。二次规划是非线性规划中比较简单的一类,较二次规划容易求解。在很多方面都有应用,如投资组合、约束最小二乘问题的求解、序列二次规划在非线性优化问题中应用等。
           
        

        定义: Prog_Q(H:array,f:array,A:array,B:array,Aeq:array,Beq:array,Lb:array, Ub:array, x0:array, options):array;
        说明:二次规划问题求解(采用作用集方法)
        参数:
        H : 二次型,正定二次型二维数字数组,不可缺省
        f : 线性目标,一维数字数组,不可缺省
        a : 线性约束,二维数字数组,不可缺省
        b : 线性约束,一维数字数组,不可缺省
        Aeq : 线性约束,二维数字数组,缺省为空
        Beq : 线性约束,一维数字数组,缺省为空
        Lb : 下界约束,一维数字数组,缺省为空
        Ub : 上界约束,一维数字数组,缺省为空
        x0 : 初始值,一维数组
        options : 选项设置,数据表类型,详细见下表
        

        二次规划option字段介绍
    字段含义缺省取值
    'maxiter'最大迭代次数400
    'tolcon'约束容忍误差1.0e-6
    'tolfun'目标最小误差1.0e-6
    'tolx'变量最小变化1.0e-6

        例:二次规划求解
         
        变成二次规划类型:
        
        
        

        H := 2*eye(2);
        f := array(-8,-10);
        a := array((3,2));
        b := array(6);
        aeq := array();
        beq := array();
        lb := array(0,0);
        return Prog_Q(H,f,A,B,aeq,beq,lb);
        

        运行得到:array("X":(0.3077,2.5385),"Fval":-21.3077,"Error_M":1,"Iter":2)。二次规划的解分别是::0.308,:2.538,目标值是:-21.308.,Error_M输出信息含义,同线性规划。