4.7 离散事件仿真
MicroCity有一个内置的仿真时间计数和事件调度机制。它提供了几个嵌入的Lua函数来方便创建离散事件仿真,这对于动态系统分析非常有用。本章的示例代码可以在项目选项卡的“simulation_samples”文件夹中的ScriptEditor找到。
随机数生成
CreateRandEng (seed, "uniform_01")
使用种子创建一个二进制分布的随机数生成引擎,并返回该对象。
CreateRandEng (seed, "uniform_real" [, min = 0, max = 1])
使用种子创建一个服从均匀分布的实数随机数生成引擎,并返回该对象。
CreateRandEng (seed, "uniform_int" [, min = 0, max = 1])
使用种子创建一个服从均匀分布的整数随机数生成引擎,并返回该对象。
CreateRandEng (seed, "triangle" [, a = 0, b = 1, c = 2])
使用种子创建一个服从三角分布的随机数生成引擎,并返回该对象。
CreateRandEng (seed, "bernoulli" [, p = 0])
使用种子创建一个服从伯努利分布的随机数生成引擎,并返回该对象。
CreateRandEng (seed, "cauchy" [, median = 0, sigma = 1])
使用种子创建一个服从柯西分布的随机数生成引擎,并返回该对象。
CreateRandEng (seed, "exponential" [, lambda = 1])
使用种子创建一个服从指数分布的随机数生成引擎,并返回该对象。
CreateRandEng (seed, "geometric" [, p = 0])
使用种子创建一个服从几何分布的随机数生成引擎,并返回该对象。
CreateRandEng (seed, "normal" [, mean = 0, sigma = 1])
使用种子创建一个服从正态分布的随机数生成引擎,并返回该对象。
CreateRandEng (seed, "lognormal" [, mean = 0, sigma = 1])
使用种子创建一个服从对数正态分布的随机数生成引擎,并返回该对象。
GetNextRandom (Engine)
从随机数生成引擎中获取一个随机数。
仿真控制
CreateEvent (time, Funcion [, arg1, arg2, ...])
从Lua Function或Lua Coroutine创建一个将来的事件,并返回一个Coroutine对象。
ExecAllEvents ()
最后调用这个函数。它会将所有事件作为Lua Coroutines执行。
Delay ([relativeTime = 0])
在Lua Coroutine中调用这个函数,让它先暂停一段指定的相对时间,然后再恢复执行。如果没有设置参数relativeTime,当前的Coroutine将暂停而不会自动恢复。
Resume ([time, ] Coroutine [, arg1, arg2, ...])
立即或在指定的时间恢复一个已暂停的协程。
GetSimTime ()
返回当前的仿真时间。
这篇文章使用ChatGPT翻译自其他语言,如果有问题请在反馈页面提交反馈。