A new approach to nonlinear programming (NLP) is described, which differs from traditional SQP and Interior Point algorithms. At each iteration, the method solves for the Newton step of an equality-constrained QP that linearises the equation constraints but omits the bounds and inequalities. In contrast, SQP methods normally solve a full QP to determine the active set. In the new method, inequalities must be expressed as bounds, if need be through the introduction of slack variables. A procedure, which we call "Variable Chopping" and have applied successfully to nonlinear algebraic equation (NLAE) systems, is used to limit the step in individual variables so that they satisfy the bounds.

To imitate the effect of rigidly constraining variables at active bounds, a
parameter *p _{j}* is added to the Hessian diagonal
(

with

Downhill progress in the objective is promoted by further regularisation of the whole Hessian when negative curvature of the Lagrangian is detected in the Newton step. Regularisation is also required if the Hessian is singular, which often occurs at an initial guess. The regularisation is relaxed when curvature estimates permit. This regularisation allows us also to solve LPs. The code allows steps to be taken away from non-minimum points, in a null space direction that has negative curvature. Future work will include more accurate analysis of negative eigenvalues of the reduced Hessian at such points.

Variable chopping generally alters the step direction, so there is no guarantee of residual norm reduction even at small fractions of the Newton step. A tolerant policy towards the residual norm is thus adopted. Termination is ensured by a watchdog approach: if a new, best value of the norm is not obtained after a set number of iterations, the solution returns to the best point so far and proceeds with a reduced step size, controlled by a trust region. Progressive reduction of the watch iterations parameter, eventually to 1, at each such "backtrack" ensures that the solution will either converge to a stationary point or stall (with converged step and unconverged residuals). The code contains options for various types of restart after a stall, under user guidance.

Development and testing has so far focused on two problems, a small but nonconvex calculus problem, and a heat exchanger (HX) network containing up to 12 exchangers. Interesting solutions include those in which some exchangers may be absent, requiring a highly nonconvex approximation of the cost function for each exchanger as we attempt to solve what is really a MINLP. The 12-HX problem has 188 variables and up to 9 degrees of freedom. These examples will be presented and performance discussed.

*Current*
*2016*
*2015*
*2014*
*2013*
*2012*
*2011*
*2010*
*2009*
*2008*
*2007*
*2006*
*2005*
*2004*
*2003*
*2002*
*2001*
*2000*
*1999*
*1998*
*1997*
*1996*