The Sequential Quadratic Programming (SQP) Algorithm
Given a solution estimate xk, and a small step d, an arbitrary numerical optimization problem can be approximated as follow:
f(xk+d)=f(xk)+[▽f(xk)] T*d + 1/2*(dT)[▽2f(xk)]*d+....
h(xk+d)=h(xk)+[▽h(xk)]T*d + 1/2*(dT)[▽2h(xk)]*d+.... = 0
g(xk+d)=g(xk)+[▽g(xk)]T*d + 1/2*(dT)[▽2g(xk)]*d+.... >= 0
where x=[x1,x2,…xk]T, d=[d1,d2,…dk]T
Form the linearly-constrained/quadratic minimization problem:
Minimize: f(xk)+[▽f(xk)]T*d + 1/2*(dT)[▽2f(xk)]*d
Subject to:
h(xk)+[▽h(xk)]T*d = 0;
g(xk)+[▽g(xk)]T*d >=0;
In the SQP loop, the approximate QP should be a convex Quadratic Programming, in which the matrix Q = ▽2f(xk) should be positive semidefinite, Q ≥ 0. Actually, the Q is the Hessian matrix of the function f(x) at the point xk.
1