我将用C实现的机器学习算法与在OpenModelica中运行的Modelica模型集成在一起。

机器学习算法处于闭环状态,将与目标状态的偏差作为输入,并提供控制信号作为输出。

我设置了一个采样周期,以便仅每X毫秒调用一次C算法。 但是,我看到针对同一时钟值多次调用了该算法。

这使我怀疑,为了求解模型,OpenModelica需要在每次仿真迭代中多次调用它。

这会影响算法的学习方式,因为它会保持有关其经验的状态。

为什么每个时钟周期,OpenModelica都会调用我的算法几次? 我该如何解决这个问题,以免导致学习同时被多个调用弄糊涂?

#1楼 票数:3

有两种方法:

  1. 使用不回溯的Euler求解器(默认dassl可以)

  2. 使用带有您设置/检查的静态变量的外部C函数

  ask by ncasas translate from so

未解决问题?本站智能推荐:

2回复

外部函数:调用使用外部库的 C 脚本

我正在尝试调用在我的 Modelica 模型中使用 GLPK(GNU 线性编程工具包)的外部 C 代码。 C 代码工作得很好,已经在独立模式下对其进行了测试,其中所有输入都是自提供的。 当我尝试将它与我的 Modelica 模型链接时,它开始给我链接器类型错误,类似于以下内容: 我注意到要在独
1回复

在modelica中集成函数

我想在Modelica中执行除时间之外的变量函数的集成,但我不知道该怎么做。 例如,如何评估x dx与上限5和下限2的积分?
1回复

错误:C 代码编译失败 - Modelica

当我在 Modelica 中编译我的代码时,出现以下错误: 命令编译失败,出现以下错误:用户错误:错误:com.modelon.oct.modelica.api.InternalAPIException 中的 java 异常,消息:编译生成的 C 代码失败 我在下面添加代码。 你知道这个
3回复

替换 Modelica 中已弃用的函数基数(c)

在文档中指出, cardinality()函数已被弃用,不应再使用。 但是,它仍然在诸如 ThermoSysPro 之类的库中使用。 例如 其中C是FluidInlet或FluidOutlet 谁能举一个简单的例子来说明如何替换它?
1回复

Modelica中的when语句中的离散状态机变量方程过多

我有一个人为设计的Modelica模型,其中有一个由多个when语句操纵的状态机变量: 在OpenModelica OMC下进行编译时,出现以下错误: 这有点有意义,因为我的单个state变量确实有两个方程式。 但是,这些方程式仅适用于离散时间点,对吗? 我是否需要确保特
1回复

混合Modelica

我想知道是否有可能使用几种单一气体(使用Modelica库)创建混合物。 如果是,是否有任何文件解释此过程? 非常感谢您的回答
3回复

modelica:计算连续变量随时间的最小值/最大值

如上所述:我希望计算连续变量随时间的最小值(和/或最大值)。 这是一个最小的例子来演示: u是任意连续变量(出于演示目的,简单的正弦波)。 u_min / u_max是随时间变化的最小值/最大值。 显然,预期结果是u_min=-1和u_max=1 。 不幸的是,模拟以“Mat
1回复

跟进问题:Modelica 仿真和方程初始化的总时间计算

我正在写这个与此相关的问题。 在他的回复中,Marco 给了我一个很好的答案,但不幸的是,我是 OpenModelica 的新手,所以我需要一些进一步的帮助。 我实际上使用的是 OpenModelica 而不是 Dymola,所以不幸的是,我必须构建为我执行此操作的函数,而且我对 OpenMode