我有一个正在进行的项目,其中Modelica中的物理建模与FMU一样被提取。这些功能模型单元与PyFMI一起使用以实现模拟。为此,我还编写了一些Python模块。我想要做的是展示模拟结果的一些例子,而不暴露我的模型(.fmu文件)和我的模块。用户将能够更改模型中的参数并进行相应的模拟。总而言之,我希望它只是一个带有输入参数和输出图的黑盒子。
我一直在尝试使用Jupyter笔记本(我对任何其他解决方案持开放态度)。我将我的Python模块解压缩为.pyd文件以隐藏代码,现在我将它们导入到笔记本中。到目前为止,对我来说似乎是合理的但我不知道如何隐藏.fmu文件。我会在Python工作区中导入模型,然后尽可能保存整个工作区。
总结一下,
1)我的代码是否安全为.pyd文件?
2)是否可以在Python中保存工作区?或者你有我的.fmu文件的另一个解决方案吗?
3)除了Jupyter之外,其他一些工具能否更适合这个目的?毕竟我希望通过网络为任何人提供它,并按照自己的意愿进行尝试。但模型本身不允许分发。答案 0 :(得分:1)
嗯,这取决于你的申请。我最近推出了一个名为modelica.university的网站,展示了涉及Modelica和FMI的应用程序。底层平台是专有的,但该网站是公开的。所以,如果你有兴趣在那里托管你的模型,我愿意讨论它。关键点在于它确实解决了您的问题,因为模型本身无法通过网络访问,只能通过输入和输出访问。
答案 1 :(得分:1)
好吧,如果你需要发送FMU,你可以编译它不包含其中的源代码或modelica源。或者,您可以通过在某个服务器上运行FMU并仅公开一些API来访问它来隐藏FMU。
我在大学的研究项目中做过类似的工作。 试验实现将FMU暴露给.NET后端,它为REST api提供了操作模型输入,控制模拟和获取模型变量的能力。 纯HTML5和Javascript中的UI只能通过HTTP访问REST API,而且显示模型变量和模拟控制的能力有限。
演示模拟器例如是在: Simulator of Haemodynamics
在模拟器中,可以在“模拟编辑器”选项卡中编辑屏幕。顺便说一句,它可能是在Jupyter项目从IPython发展的同一年写的。底层平台是opensource,支持FMU 1.0。所以值得考虑的是Jupyter笔记本可以成为适当后端的客户。