MoonDES - 通用离散事件仿真引擎,基于 MoonBit 构建
通用离散事件仿真引擎,基于国产 MoonBit 编译型语言构建。
moon add moondes/moondes///|
test {
inspect(version(), content="0.1.0")
}///|
test {
let env = new_env(until=10.0)
let log : Array[String] = []
ignore(env.schedule(time=2.0, callback=fn() { log.push("event@2.0") }))
ignore(env.schedule(time=1.0, callback=fn() { log.push("event@1.0") }))
env.run()
assert_eq(log[0], "event@1.0")
assert_eq(log[1], "event@2.0")
}moon run examples/hello_des # 最简事件调度
moon run examples/mm1_queue # M/M/1 排队系统
moon run examples/resource_sharing # 实验管理与插件MoonDES/
├── core/ # 层级1:仿真内核(SimulationEnv / EventQueue / Event)
├── process/ # 层级2:协程进程调度(Process / timeout / wait_event)
├── resource/ # 层级3:资源管理(Exclusive / Capacity / Preemptive)
├── experiment/ # 层级4:实验管理(ExpConfig / ExpResult / Snapshot)
├── plugin/ # 层级5:插件接口(PluginManager / PluginCallbacks)
├── examples/ # 可执行示例
│ ├── hello_des/
│ ├── mm1_queue/
│ └── resource_sharing/
└── docs/ # 项目文档core (无依赖) ← process / resource / experiment / plugin| 便捷入口 | 说明 |
|---|---|
| new_env(until=) | 创建仿真环境 |
| process(env, behavior=) | 创建仿真进程 |
| new_exclusive(name=) | 创建独占式资源 |
| new_config(until=, seed=) | 创建实验配置 |
| new_plugin_manager() | 创建插件管理器 |
| version() | 引擎版本号 |
moon check # 类型检查
moon test --target native # 运行测试
moon info # 生成 API 接口文件fn version() -> Stringtest {
let env = @core.new_env(until=10.0)
let log : Array[String] = []
ignore(env.schedule(time=2.0, callback=fn() { log.push("hello") }))
env.run()
assert_eq(log.length(), 1)
}MoonDES - 通用离散事件仿真引擎,基于 MoonBit 构建