|
|
老哥,你这问题我问了一圈搞模拟的兄弟,自个儿也折腾过一阵子,能理解你的感受。官方文档很多时候都这样,只给基礎的,玩深一点就得靠自己踩坑。
先说结论:Optimizer 和 Time-based Analysis 这两个功能,纯靠官方文档里暴露的那几个基础 HTTP Server 接口(比如 /api/values 这种级别的),基本搞不定。官方那几行注释,我就没见过能把这类高级调度逻辑讲清楚的。
不过不代表没法整。我搞过类似的二次开发,给你几个常见的实操路子,你参考一下:
第一步,你得确认一下你这HTTP Server的版本。Symmetry不同版本甚至不同小版本,暴露的API边界都不一样。有些老版本压根儿就没把高级功能的API开到外面。
针对Optimizer(优化器)的调用,比较常见的操作是:外部程序(比如你写的C#、Python代码)去修改模型里的决策变量(比如反应温度、进料流量)和环境变量(约束条件),然后通过HTTP接口发指令给优化器去计算。但问题是,官方API通常只给了启动计算和取结果的接口,没把“设置优化算法(比如梯度法、遗传算法)、设定收敛判据”这种核心管理功能暴露出来。所以常见变通办法是:在Symmetry内部建好优化任务,设好所有参数,外部系统只负责调“运行”这个动作,以及后续读取结果。这么做虽然省事,但灵活度确实不够。
至于Time-based Analysis(时序分析),这玩意儿更依赖内部的时间步进和事件触发逻辑。我见过有人通过外部程序按时间序列循环发指令,模拟成时序分析的样子,但做得特别糙,效率低,而且容易把模型跑崩。一个稍微靠谱点的办法是:看Symmetry有没有提供基于COM组件(组件对象模型)或者Windows服务级别的API(应用编程接口),这种通常权限范围更广,能直接操作软件内部的调度器,不过对编程能力要求也高。
还有一个不费劲但有效的方法:去symmetry的技术论坛或者它们官方的开发者社区翻一翻。很多时候,这种高级功能的调用方法并不是写在正式文档里,而是以“技术笔记”或者“示例代码”的形式挂在另一个角落,或者需要你发帖问才有人告诉你。有些第三方用户甚至自己封装了一套脚本库,比官方的还好用。
建议你贴一下你的Symmetry具体版本号,还有你现在代码里调用Optimizer时遇到的具体错误号或者现象(比如是报404找不到资源,还是返回空数据,或者参数根本不识别?)。光说“调用不了”不太好判断是接口不存在、参数不对、还是权限不够。大家伙帮你一起看看。 |
|