Matlab quadprog简介
下面的文章提供了一个Matlab quadprog的概要。quadprog或二次编程用于最小化或最大化受各种约束的输入目标函数。二次方程序设计在数学中被用来寻找一个向量'x',使定义为minx{1/2 * x^T *Hx + f^T * x}的二次方函数最小化。
或
以下是对二次函数的约束。
- Ax ≤ b (不等式约束)
- Ax = b (平等约束)
- LowerBound ≤ x ≤ UpperBound (边界约束)
在现实世界中,二次编程被用来解决各种问题,包括发电、投资组合管理、设计优化等。
quadprog函数的语法
下面给出的是提到的语法。
x = quadprog (H, f, A, b)
解释。
- x = quadprog (H, f, A, b)用于最小化二次函数1/2 * x^T * Hx + f^T * x,受制于A*x ≤ b。
请注意,如果我们需要我们的问题给出一个有限值的最小值,那么输入矩阵'H'必须是一个正定的二次编程。
Matlab quadprog的例子
下面是Matlab quadprog的例子。
例子 #1
这个例子将使用quadprog函数来最小化目标函数 "1/2 * x^T *Hx + f^T * x"。在这个例子中,我们将使用一个3 x 3的输入矩阵。
以下是需要遵循的步骤。
- 为输入目标函数初始化一个2 x 2的输入矩阵'H'。
- 初始化输入目标函数的向量'f'。
- 声明所需的约束条件。
- 使用quadprog函数来最小化目标函数。
代码。
H = [1 3; -1 2] [为输入的目标函数初始化矩阵'H' ] 。
f = [-1; 3] [初始化输入目标函数的向量'f' ] 。
A = [1 0; -1 -2; 0 1];
b = [2; 2; 3];
[声明约束条件] [FinalPoint, FunctionVal, ExitFlag, Op, L] = quadprog(H, f, A, b);
[使用quadprog函数来获得目标函数的必要值]
FinalPoint, FunctionVal, ExitFlag
输入。
输出。
输出 1:
输出2。
正如我们在输出中看到的,我们的目标函数现在在我们定义的约束条件下达到了最小。另外,我们得到的退出标志是1,这意味着我们已经得到了目标函数的局部最小值。
例子#2
这个例子将使用quadprog函数来最小化目标函数 "1/2 * x^T *Hx + f^T * x"。在这个例子中,我们将使用一个3 x 3的输入矩阵。
以下是需要遵循的步骤。
- 为输入目标函数初始化一个3 x 3的输入矩阵'H'。
- 初始化输入目标函数的向量'f'。
- 声明所需的约束条件。
- 使用quadprog函数来最小化目标函数。
代码。
H = [1 1 0; 1 1 1; 1 0 1] [初始化输入目标函数的矩阵'H' ] 。
f = [-1; 1; 1] [初始化输入目标函数的向量'f' ] 。
A = [1 1 2; 1 -2 1; 1 2 1];
b = [1; -1; 1];
[声明约束条件] [FinalPoint, FunctionVal, ExitFlag, Op, L] = quadprog(H, f, A, b);
[使用quadprog函数来获得目标函数的必要值]
输入。
输出。
输出 1:
输出2。
正如我们在输出中看到的,我们的目标函数现在在我们定义的约束条件下达到了最小。另外,我们得到的退出标志是1,这意味着我们已经得到了目标函数的局部最小值。
在上面的两个例子中,输入矩阵'H'是凸的,即正定的,所以我们得到了一个局部最小值。如果我们的矩阵不是凸的,我们就不会得到局部最小值。
例子 #3
这个例子将使用quadprog函数来最小化目标函数 "1/2 * x^T *Hx + f^T * x"。在这个例子中,我们将使用一个3 x 3的输入矩阵。
以下是需要遵循的步骤。
- 为输入的目标函数初始化一个3 x 3的输入矩阵'H',使该矩阵不是正定的。
- 初始化输入目标函数的向量'f'。
- 声明所需的约束条件。
- 使用quadprog函数来最小化目标函数。
代码。
H = [1 2 0; 3 1 2; -1 0 1] [为输入的目标函数初始化矩阵'H' ] 。
f = [-1; 1; 1] [初始化输入目标函数的向量'f' ] 。
A = [1 1 2; 1 -2 1; 1 2 1];
b = [1; -1; 1];
[声明约束条件] [FinalPoint, FunctionVal, ExitFlag, Op, L] = quadprog(H, f, A, b);
[使用quadprog函数获得目标函数的所需值]
输入。
输出。
输出 1:
输出2。
在输出中我们可以看到,退出标志是6,这意味着我们没有获得任何目标函数的局部最小值。
总结
我们使用quadprog函数来寻找目标函数的局部最小值,该函数受到一些约束。只有当矩阵 "H "是正定性质的时候,我们才能得到局部最小值。
推荐文章
这是一篇关于Matlab quadprog的指南。这里我们讨论了Matlab quadprog的介绍和例子,以便更好地理解。你也可以看看下面的文章来了解更多----。
The postMatlab quadprogappeared first onEDUCBA.