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

二次规划    

  • 二次规划是非线性规划中的一类特殊规划问题,这类规划问题的约束条件和线性规划一样都是线性的,目标函数是自变量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输出信息含义,同线性规划。