我们有一个相当大(可能有 1000 个方程)的微分代数方程模型,它是用 ACSLX 编写的,ACSLX 是一种类似于 Modelica 的过时建模环境。该模型代表了生物系统随时间的演变,具有几个强迫函数,例如大气温度,这些函数通常在每日或次日时间步长上提供。ACSLX 将模型(包括 DAE 求解器)转换为 C,然后编译成 DLL。我们在一个有点复杂的 GUI 中运行这个 DLL,通常以包含约 100 年模拟年的批处理模式运行。我们在 Windows 中。
出于面向未来的原因,我们需要将此模型转换为新的语言/环境,并且正在讨论最佳选择。
- 它应该是免费的(以避免与 Matlab 之类的东西相关的费用和许可痛苦)。
- 它应该得到很好的支持并且比较流行
- 模型代码应该能够被生物科学家轻松阅读
- 如果它能够在 RStudio 或 Spyder 等开发环境中运行将是有利的
- 它应该可以从我们的 GUI 中调用(例如作为 DLL)
- 它应该很快
- 它应该有助于模型校准、灵敏度分析等。
我们目前在各种其他项目中使用 C++、Fortran、Javascript、R、SmallTalk。其他选项似乎是 Modelica、Python、C、Java、C#。目前尚不清楚我们是否需要像 ODEPACK 这样强大的 DE 求解器,或者我们是否可以编写自己的简单时间步进器,因为强制函数往往会否定高效 ODE 求解器的好处。
我们有一个类似的模型,它用 Fortran 90 编写并编译为我们从 RStudio 运行/校准的 DLL。虽然很难获得 Fortran 专业知识并且调试起来有点困难,但这种方法效果很好。Spyder/Python 将允许双方用一种语言完成,包括调试,尽管性能损失可能是一个问题。尽管 Cython 或 Dask 可能会有所帮助。Modelica 似乎是另一种选择,尽管支持似乎不完整,而且运行起来可能很慢。
我们非常感谢 SO 社区的任何建议/想法/经验。
谢谢您的帮助。