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。
============================================================
举个栗子:
求在约束条件
下的最小值。
这里有两个输入变量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。