【问题标题】:Is it possible to integrate a C++ Solver like IPOPT in an Android App using Android NDK?是否可以在使用 Android NDK 的 Android 应用程序中集成像 IPOPT 这样的 C++ Solver?
【发布时间】:2015-03-19 04:12:45
【问题描述】:

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

出于优化目的,我必须解决具有非线性约束的非线性优化问题。我想集成一个功能强大的开源求解器,例如 IPOPT。

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

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

并使用 IPOPTs Java 接口

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

没有成功。

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

或者是否有其他方法可以做到这一点?

我会感谢任何让我更接近目标的帮助。

【问题讨论】:

  • 这可能是可能的,除非有一个在 Android 上不可用的关键标头。您必须使用 NDK 工具链构建它,生成兼容的 .so 或 .a 文件。
  • 感谢 SteveM。我正在努力做到这一点。认为在我第一次使用 Android NDK 的过程中会出现更具体的问题。
  • 部分困难在于IPOPT 对大量Fortran 代码的依赖,特别是对于BLAS 和Lapack 的编译。无论如何,正如我的回答中提到的那样,我解决了这个问题。

标签: java android c++ optimization android-ndk


【解决方案1】:

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

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

它使用了通过这个 repo 提供的 IPOPT 库: https://github.com/jeti/android_ipopt

这些又是使用带有 Fortran 的独立 Android 工具链创建的,可通过此 repo 获得: https://github.com/jeti/android_fortran

【讨论】:

    【解决方案2】:

    我决定使用这个求解器:

    http://www.joptimizer.com

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

    【讨论】:

      猜你喜欢
      • 2013-01-13
      • 1970-01-01
      • 1970-01-01
      • 2015-02-03
      • 2012-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多