Matlab quadprog指南

334 阅读4分钟

Matlab quadprog

Matlab quadprog简介

下面的文章提供了一个Matlab quadprog的概要。quadprog或二次编程用于最小化或最大化受各种约束的输入目标函数。二次方程序设计在数学中被用来寻找一个向量'x',使定义为minx{1/2 * x^T *Hx + f^T * x}的二次方函数最小化。

Matlab quadprog 1

以下是对二次函数的约束。

  • 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

输入。

Matlab quadprog 2

输出。

输出 1:

“1/2 * x^T *Hx + f^T * x

输出2。

Matlab quadprog 4

正如我们在输出中看到的,我们的目标函数现在在我们定义的约束条件下达到了最小。另外,我们得到的退出标志是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函数来获得目标函数的必要值]

输入。

Matlab quadprog 5

输出。

输出 1:

we will use a 3 x 3 input matrix

输出2。

Matlab quadprog 7

正如我们在输出中看到的,我们的目标函数现在在我们定义的约束条件下达到了最小。另外,我们得到的退出标志是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函数获得目标函数的所需值]

输入。

Matlab quadprog 8

输出。

输出 1:

The problem is non-convex

输出2。

minimize the objective function

在输出中我们可以看到,退出标志是6,这意味着我们没有获得任何目标函数的局部最小值。

总结

我们使用quadprog函数来寻找目标函数的局部最小值,该函数受到一些约束。只有当矩阵 "H "是正定性质的时候,我们才能得到局部最小值。

推荐文章

这是一篇关于Matlab quadprog的指南。这里我们讨论了Matlab quadprog的介绍和例子,以便更好地理解。你也可以看看下面的文章来了解更多----。

  1. 什么是Matlab?
  2. Matlab极限
  3. 绘制Matlab图形
  4. Matlab的绝对值

The postMatlab quadprogappeared first onEDUCBA.