README

#experiment — 实验管理层

MoonDES 层级4:批量仿真、参数遍历、快照回滚、结果统计。

#API 概览

符号说明
ExpConfig实验配置
ExpResult实验结果
Snapshot仿真快照
new_config(until=, seed=)创建实验配置
run_experiment(config)运行单次实验
batch_run(configs)批量运行
param_sweep(base=, param_name=, values=)参数遍历
snapshot(env)保存快照
rollback(env, snap)断点回滚

#示例

///|
test {
let cfg = new_config(until=10.0, seed=42)
inspect(cfg.until, content="10")
let result = run_experiment(cfg)
inspect(result.final_time, content="10")
}

///|
test {
let env = @core.new_env(until=10.0)
ignore(env.schedule(time=5.0, callback=fn() { () }))
let snap = snapshot(env)
inspect(snap.time, content="0")
inspect(snap.event_count, content="1")
}

#
ExpConfig

pub(all) struct ExpConfig {
until : Double
seed : Int
params : Map[String, Double]
} derive(ToJson,
Debug
)

仿真实验配置

#
ExpConfig::from_json_string

fn ExpConfig::from_json_string(s : String) -> ExpConfig raise

从 JSON 字符串反序列化 ExpConfig

#
ExpConfig::set_param

fn ExpConfig::set_param(self : ExpConfig, key : String, value~ : Double) -> Unit

向配置添加参数

#
ExpConfig::to_json_string

fn ExpConfig::to_json_string(self : ExpConfig) -> String

将 ExpConfig 序列化为 JSON 字符串

#
ExpResult

pub(all) struct ExpResult {
config : ExpConfig
final_time : Double
event_count : Int
metrics : Map[String, Double]
} derive(ToJson,
Debug
)

仿真实验结果

#
ExpResult::from_json_string

fn ExpResult::from_json_string(s : String) -> ExpResult raise

从 JSON 字符串反序列化 ExpResult

#
ExpResult::to_json_string

fn ExpResult::to_json_string(self : ExpResult) -> String

将 ExpResult 序列化为 JSON 字符串

#
Snapshot

pub(all) struct Snapshot {
time : Double
event_count : Int
env_snapshot :
EnvSnapshot

} derive(ToJson,
Debug
)

仿真快照

捕获仿真环境状态,可用于断点回滚。

#
Snapshot::from_json_string

fn Snapshot::from_json_string(s : String) -> Snapshot raise

从 JSON 字符串反序列化 Snapshot

#
Snapshot::to_json_string

fn Snapshot::to_json_string(self : Snapshot) -> String

将 Snapshot 序列化为 JSON 字符串

#
batch_run

fn batch_run(configs : Array[ExpConfig]) -> Array[ExpResult]

批量运行多个实验配置

#
new_config

fn new_config(until~ : Double, seed? : Int) -> ExpConfig

创建实验配置

#
param_sweep

fn param_sweep(base~ : ExpConfig, param_name~ : String, values~ : Array[Double]) -> Array[ExpConfig]

参数遍历:生成一组参数变化的配置

#
rollback

断点回滚:从快照恢复环境状态

恢复仿真时钟、环境状态、ID 计数器。 注意:事件队列与回调不恢复,回滚后需重新调度后续事件。

#
run_experiment

fn run_experiment(config : ExpConfig) -> ExpResult

运行单次仿真实验

创建仿真环境并运行至终止时间,返回实验结果。 event_count 为仿真过程中注册的事件总数。

#
snapshot

保存仿真快照

捕获当前仿真时间、事件数与环境内部状态,可用于 rollback

Source Files