是否可以使用 Android NDK 将像 IPOPT 这样的C++求解器集成到 Android 应用程序中?

Is it possible to integrate a C++ Solver like IPOPT in an Android App using Android NDK?

本文关键字:Android 集成 应用程序 C++ NDK 可以使 将像 IPOPT 是否      更新时间:2023-10-16

我正在开发一款Android应用程序,该应用程序将用作电动汽车的辅助系统。

出于优化目的,我必须使用非线性约束求解非线性优化问题。我想集成一个强大的开源求解器,比如IPOPT来做到这一点。

我尝试按照这些说明在我的Galaxy Note 4上安装求解器

http://www.coin-or.org/Ipopt/documentation/node14.html

并使用IPOPTsJava接口

http://www.coin-or.org/Ipopt/documentation/node16.html

没有成功。

有没有办法使用Android NDK或交叉编译方法集成IPOPT?

或者有没有替代方法可以做到这一点?

我将感谢任何帮助,使我更接近我的目标。

这里最困难的部分是由于IPOPT使用了大量的Fortran代码,特别是在其依赖项中,如BLAS和Lapack。事实上,由于困难,你很少会发现有人甚至试图为Android编译这些。尽管如此,我还是做到了,并且最近发布了您正在寻找的内容。

这是一个使用IPOPT的简单Android项目:https://github.com/jeti/android_ipopt_example

它使用通过此存储库提供的IPOPT库:https://github.com/jeti/android_ipopt

反过来,它是使用独立的Android工具链创建的,Fortran可以通过此存储库获得:https://github.com/jeti/android_fortran

我决定使用这个求解器:

http://www.joptimizer.com

使用NDK工具链构建IPOPT造成了太多的努力。也许这将是另一个项目的意见。