2

我有一个正在进行的项目,其中 Modelica 中的物理建模是 FMU 提取的。这些功能模型单元与 PyFMI 一起使用来实现模拟。为此,我还编写了一些 Python 模块。我想要做的是在不暴露我的模型(.fmu 文件)和我的模块的情况下展示一些模拟结果的例子。用户将能够更改模型中的参数并进行相应的仿真。总而言之,我希望它是一个只有输入参数和输出图的黑匣子。

我一直在尝试使用 Jupyter notebook 这样做(我对任何其他解决方案持开放态度)。我将 Python 模块提取为 .pyd 文件以隐藏代码,现在我将它们导入笔记本。到目前为止,这对我来说似乎是合理的。但我不知道如何隐藏 .fmu 文件。如果可能,我会将模型导入 Python 工作区,然后保存整个工作区。

总结一下,

1) 我的代码作为 .pyd 文件是否安全?

2) 是否可以在 Python 中保存工作区?或者您对我的 .fmu 文件有其他解决方案吗?

3) 是否有其他工具比 Jupyter 更适合此目的?毕竟,我希望任何人都可以通过网络访问它,并按照他们的意愿进行尝试。但是模型本身是不允许分发的。

4

2 回答 2

1

好吧,这取决于您的应用程序。我最近启动了一个名为modelica.university的网站,展示了涉及 Modelica 和 FMI 的应用程序。底层平台是专有的,但站点是公开的。所以如果你有兴趣在那里托管你的模型,我愿意讨论它。关键是它确实解决了您的问题,因为模型本身无法通过网络访问,只能通过输入和输出访问。

于 2017-06-27T11:53:53.440 回答
1

好吧,如果您需要发送 FMU,您可以将其编译为不包含源代码或模型源。或者,您可以通过在某些服务器上运行 FMU 并仅公开一些 API 来访问它来隐藏 FMU。

我过去在大学的研究项目中做过一些类似的工作。试点实现将 FMU 暴露给 .NET 后端,该后端提供 REST api 来操作模型输入、控制仿真和获取模型变量。纯 HTML5 和 Javascript 的 UI 只能通过 HTTP 访问 REST API,显示模型变量和控制模拟的能力有限。

演示模拟器例如位于: 血液动力学模拟器

在模拟器中,可以在“模拟编辑器”选项卡中编辑屏幕。顺便说一句,它可能是在 Jupyter 项目从 IPython 演变而来的同一年编写的。底层平台开源,支持FMU 1.0。所以值得考虑的是 Jupyter 笔记本可以是适当后端的客户端。

于 2017-06-29T08:24:08.890 回答