Our current lab uses SNOPT as an optimizer for aerodynamic shape optimization. I am currently working on building an approximate Hessian for the sake of improving the convergence speed and limits. Unfortunately, SNOPT only allows me to define an initial Hessian.

Is there a FORTRAN package that would allow me to input the Hessian at every design iteration?


1 Answer 1


You are looking for a Newton's method, as opposed to Quasi-Newton used by SNOPT. You can consider using KNITRO, which can handle any optimization problem type that SNOPT can, but has a greater number of algorithmic options.

Among the algorithmic options in KNITRO is Sequential Quadratic Programming (SQP). SQP is used by SNOPT, but only in conjunction with Quasi-Newton. KNITRO can run any of its algorithmic options (SQP and others) with Newton's method, which makes use of user provided Hessian of the Lagrangian, or with Quasi-Newton. If you wish to use Newton's method and have nonlinear constraints, you will need to not only evaluate the Hessian of the objective function, but also the Hessians of the nonlinear constraints. For Quasi-Newton, KNITRO provides choice of BFGS or SR1, with SR1 working better than BFGS for some non-convex problems, whereas SNOPT only provides BFGS.

KNITRO also provides interior point algorithm choices which may or may not be better in your problem than SQP.Also of note, KNITRO"s SQP uses trust regions, whereas SNOPT uses line searches. This "allows" use of SR1 as an option in KNITRO, but not in SNOPT.

There is no native FORTRAN interface to KNITRO, but you can call it by use of C wrappers. See https://www.artelys.com/tools/knitro_doc/2_userGuide/otherProgInterfaces.html .

An open source alternative which is less flexible and may be less robust than KNITRO is IPOPT, which can also be called from FORTRAN via C wrapper http://www.coin-or.org/Ipopt/documentation/node25.html . It only offers interior point options, with no SQP option. But it does offer choice of Newton (user-provided Hessian) or Quasi-Newton.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.