二次规划的MATLAB解法:quadprog函数

声明

转载自新浪博客:漂流瓶jz的博客,版权归原作者。

综述

二次规划为非线性规划的一种,若某非线性规划的目标函数为自变量\(x\)的二次函数,约束条件又全是线性的,就称这种规划为二次规划。

问题描述

Matlab中二次规划的数学模型可表述如下:\[\min \frac{1}{2}x^{T}H{}x + f^{T} x,\\ s.t. \begin{cases} A x \leq B \\ A_{eq} \cdot x = B_{eq} \end{cases} \]这里H是实对称矩阵,\(f , b\)是列向量,\(A\)是相应维数的矩阵。

quadprog()用法

Matlab中求解二次规划的函数为quadprog,其的用法如下:

\(H,f\)是把目标函数化成标准形式后得到的实对称矩阵,和列向量。显然\(H\)应当是原函数的海森矩阵。

它的返回值是向量\(x\),\(X_0\)是\(x\)的初始值;\(A, B, A_{eq}, B_{eq}\)定义了线性约束\(A * X \leq B, A_{eq} * X = B_{eq}\),如果没有线性约束,则\(A = [], B = [], A_{eq} = [], B_{eq} = []\);\(LB\)和\(UB\)是变量\(x\)的的下界和上界。如果上界和下界没有约束,则\(LB = [], UB = []\),options定义了优化参数,为简单起见,可以使用MATLAB的缺省参数设置。

fval是目标函数值。lambda是Lagrange乘子,它体现哪一个约束有效。output输出优化信息。

示例

问题

求解二次规划\[ \begin{cases} \min f(x) = 2x_1^2 – 4x_1 x_2 + 4x_2^2 – 6x_1 – 3x_2 \\ x_1 + x_2 \leq 3 \\ 4x_1 + x_2 \leq 9 \\ x_1,x_2 \geq 0 \end{cases} \]

求解

编写以下程序:

求得\[x = \begin{bmatrix} 1.9500 \\ 1.0500 \end{bmatrix}, \min f(x) = -11.0250\]

hosiet

一个学生。May be neither too young nor simple, but sometimes can be naive.

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据