Zahery Mahsa, Maes Hermine H, Neale Michael C
Department of Computer Science,Virginia Commonwealth University,Richmond,Virginia,USA.
Department of Psychiatry,Virginia Commonwealth University,Richmond,Virginia,USA.
Twin Res Hum Genet. 2017 Aug;20(4):290-297. doi: 10.1017/thg.2017.28. Epub 2017 May 24.
We introduce the optimizer CSOLNP, which is a C++ implementation of the R package RSOLNP (Ghalanos & Theussl, 2012, Rsolnp: General non-linear optimization using augmented Lagrange multiplier method. R package version, 1) alongside some improvements. CSOLNP solves non-linearly constrained optimization problems using a Sequential Quadratic Programming (SQP) algorithm. CSOLNP, NPSOL (a very popular implementation of SQP method in FORTRAN (Gill et al., 1986, User's guide for NPSOL (version 4.0): A Fortran package for nonlinear programming (No. SOL-86-2). Stanford, CA: Stanford University Systems Optimization Laboratory), and SLSQP (another SQP implementation available as part of the NLOPT collection (Johnson, 2014, The NLopt nonlinear-optimization package. Retrieved from http://ab-initio.mit.edu/nlopt)) are three optimizers available in OpenMx package. These optimizers are compared in terms of runtimes, final objective values, and memory consumption. A Monte Carlo analysis of the performance of the optimizers was performed on ordinal and continuous models with five variables and one or two factors. While the relative difference between the objective values is less than 0.5%, CSOLNP is in general faster than NPSOL and SLSQP for ordinal analysis. As for continuous data, none of the optimizers performs consistently faster than the others. In terms of memory usage, we used Valgrind's heap profiler tool, called Massif, on one-factor threshold models. CSOLNP and NPSOL consume the same amount of memory, while SLSQP uses 71 MB more memory than the other two optimizers.
我们介绍了优化器CSOLNP,它是R包RSOLNP(Ghalanos和Theussl,2012年,Rsolnp:使用增广拉格朗日乘数法的一般非线性优化。R包版本,1)的C++实现,并做了一些改进。CSOLNP使用序列二次规划(SQP)算法来解决非线性约束优化问题。CSOLNP、NPSOL(FORTRAN中非常流行的SQP方法实现(Gill等人,1986年,NPSOL用户指南(版本4.0):用于非线性规划的Fortran包(编号SOL-86-2)。加利福尼亚州斯坦福:斯坦福大学系统优化实验室))以及SLSQP(作为NLOPT集合的一部分提供的另一种SQP实现(Johnson,2014年,NLopt非线性优化包。取自http://ab-initio.mit.edu/nlopt))是OpenMx包中可用的三种优化器。对这些优化器在运行时间、最终目标值和内存消耗方面进行了比较。对具有五个变量和一两个因子的有序和连续模型进行了优化器性能的蒙特卡罗分析。虽然目标值之间的相对差异小于0.5%,但在有序分析中,CSOLNP通常比NPSOL和SLSQP更快。对于连续数据,没有一个优化器始终比其他优化器运行得更快。在内存使用方面,我们在单因子阈值模型上使用了Valgrind的堆剖析工具Massif。CSOLNP和NPSOL消耗的内存量相同,而SLSQP比其他两个优化器多使用71MB的内存。