【发布时间】:2016-03-28 15:19:45
【问题描述】:
我对 Modelica(Dymola 环境)比较陌生,我感到非常绝望/沮丧,因为我无法解决像 Modelica 中的随机数生成这样简单的问题,希望您能帮助我。
简单函数 random 产生一个介于 0 和 1 之间的随机数,输入种子 seedIn[3] 并为下一个时间步或事件产生输出种子 seedOut[3]。通话
(z,seedOut) = random(seedIn);
工作得很好。
问题是我无法在 Modelica 中找到一种方法来通过使用 seedOut[3] 作为下一个 seedIn[3] 随着时间的推移计算此分配,这非常令人沮丧。
我的简单程序如下所示:
*model Randomgenerator
Real z;
Integer seedIn[3]( start={1,23,131},fixed=true), seedOut[3];
equation
(z,seedOut) = random(seedIn);
algorithm
seedIn := seedOut;
end Randomgenerator;*
我已经尝试了几乎所有关于算法分配、初始条件和方程的可能性,但它们都不起作用。我只是想在下一个时间步骤中使用seedOut。一个问题似乎是进入算法部分时,既没有使用初始条件,也没有使用方程部分的值。
【问题讨论】:
-
可能你需要一个带有 reinit(seedIn, seedOut); 的 when 方程或语句;
-
您可能还对DLR Noise 和DLR Advanced Noise 库感兴趣。或在impact.github.io上搜索
Noise
标签: algorithm variables random modelica