非线性优化Ipopt 单精度浮点运算构建
前言
本人使用Ipopt来求解优化MPC控制,对实时性要求较高。为了提高求解效率,尝试构建IPOPT的单精度浮点运算(float)来减少计算量,IPOPT默认是双精度(double)浮点运算。
踩坑记录
以上是官网给出的教程。其中写道在编译时,即./configure
的时候,需要添加选项--with-precesion=float
,但是按此操作系统报错,查看configure源码后发现应该是--with-precesion=single
。这样才能编译成功。
除此之外,ipopt所依赖的其他库比如MUMPS HSL Lapack
在编译的时候都需要以单精度的形式构建才能构建成功。
后言
因为我需要采用CPPAD与IPOPT结合来构建MPC,虽然IPOPT构建了单精度浮点型运算,但是好像CPPAD并不支持float运算,从官网上没有找到构建单精度的教程,所以最初的设想也失败了。如果各位同仁有什么好的方法能够构建单精度型的CPPAD或者有其他的方法提高运算效率,欢迎多多交流。