quadprog()函数

X= quadprog(H,f,A,b)试图解决二次规划问题。

首先要搞明白什么是二次规划问题。

         二次规划的一般形式可以表示为:

        

         其中X为n维的输入变量,H为n×n维的对称矩阵,f为n维向量。

         此二次规划问题的限制条件为:

                A*X<=b

         A是m×n维向量,b是m维向量。二次规划的要求就是在该限制条件下找到一个n维的向量X,使得f(X)的值最小。

    根据不同的参数特性,可以得到不同的结论。

            如果Q是半正定矩阵,那么f(X)是一个凸函数。

            如果Q是正定矩阵,那么全局最小值就是唯一的。

            如果Q=0,二次规划问题就变成线性规划问题。

            如果至少有一个向量X满足约束而且f(X)在可行域有下届,二次规划问题就有一个全局最小值X。

============================================================

举个栗子:

         求在约束条件

                                    quadprog()函数_第1张图片

    下的最小值。

         这里有两个输入变量x1和x2,故n=2,我们可以将f(X)用以下矩阵表示:

        

         约束条件可以用以下矩阵表示:

         在matlab中调用quadprog()函数求解:

            H = [1 -1; -1 2];

            f = [-2; -6];

            A = [1 1; -1 2; 2 1];

            b = [2; 2; 3];

            lb = [0; 0];

            [x,fval,exitflag,output,lambda] =quadprog(H,f,A,b,[],[],lb);

         即可求得最小值fval=-8.2222。


你可能感兴趣的:(matlab中函数)