quadprog
是一个用于解决二次规划(Quadratic Programming,简称 QP)问题的函数或工具。二次规划是数学优化的一种,它涉及在一个线性等式和不等式约束下,最小化一个二次目标函数。
在二次规划中,目标函数具有以下形式:
$f(x) = \frac{1}{2} x^T Q x + c^T x$
其中,$x$ 是决策变量向量,$Q$ 是一个对称正定矩阵,$c$ 是一个常数向量。约束条件可以表示为线性等式 $Ax = b$ 和线性不等式 $Gx \leq h$。
quadprog
等工具通常提供了易于使用的接口,可以方便地求解二次规划问题。根据约束条件的不同,二次规划可以分为以下几种类型:
cvxpy
库)下面是一个简单的示例,展示如何使用 cvxpy
库中的 quadprog
函数求解一个二次规划问题:
import cvxpy as cp
import numpy as np
# 定义变量
x = cp.Variable(2)
# 定义目标函数
Q = np.array([[4, 1], [1, 2]])
c = np.array([1, 1])
objective = cp.Minimize(0.5 * cp.quad_form(x, Q) + c.T @ x)
# 定义约束条件
constraints = [x >= 0, x[0] + x[1] == 1]
# 求解问题
prob = cp.Problem(objective, constraints)
prob.solve()
# 输出结果
print("最优解:", x.value)
print("最优值:", prob.value)
注意:虽然这里使用了 cvxpy
库而不是直接的 quadprog
函数,但 cvxpy
内部使用了高效的二次规划求解器来解决问题。如果你想使用专门的 quadprog
函数,可以考虑使用 scipy.optimize.minimize
函数与适当的自定义目标函数和约束条件。