#actor-model #telescope #definition #optical #dynamic #channel

gmt_dos-actors

巨型麦哲伦望远镜动态光学模拟actor模型

25个稳定版本 (8个主要版本)

11.0.0 2024年5月3日
10.2.1 2024年3月13日
10.1.4 2024年2月1日
10.1.1 2023年12月6日
3.0.1 2022年9月20日

#19模拟

Download history 14/week @ 2024-04-14 21/week @ 2024-04-21 218/week @ 2024-04-28 46/week @ 2024-05-05 27/week @ 2024-05-12 69/week @ 2024-05-19 41/week @ 2024-05-26 46/week @ 2024-06-02 47/week @ 2024-06-09 57/week @ 2024-06-16 45/week @ 2024-06-23 12/week @ 2024-06-30 9/week @ 2024-07-07 64/week @ 2024-07-14 68/week @ 2024-07-21 84/week @ 2024-07-28

225 每月下载量
用于 18 个crate (12直接使用)

MIT 协议

245KB
3.5K SLoC

gmt_dos-actors

Crates.io Documentation

gmt_dos-actors 是巨型麦哲伦望远镜集成建模中actor模型的应用实现。

特性

  • 异步actor模型
  • 基于Channel的actor间数据交换
  • 编译时channel验证
  • actor与actor客户端之间基于trait的形式化接口定义
  • 脚本 以减少模板代码冗余

lib.rs:

GMT 动态光学模拟actor

GMT DOS Actor是GMT DOS集成模型的基本构建块。每个Actor有3个属性

  1. 输入对象
  2. 输出对象
  3. 客户端

输入/输出

输入对象是一组输入,输出对象是一组输出。actor至少需要1个输入或1个输出。一对输入/输出通过一个channel连接,其中输入是接收者,输出是发送者。相同的输出可以连接到多个输入。channel用于同步actor。

每个Actor在无限循环中执行相同任务,包括3个操作

  1. 接收输入(如果有)
  2. 更新客户端状态
  3. 发送输出(如果有)

循环在以下错误发生时退出: ActorError::NoDataActorError::DropSendActorError::DropRecv

采样率

一个Actor的所有输入都以相同的速率NI收集,所有输出都以相同的速率NO分发,但是输入和输出速率可能不同。输入速率NI继承自收集数据输出的输出速率NO,即(下一个actor)::NI=(当前actor)::NO

速率NINO定义为模拟采样频率[Hz]和actor输入或输出采样频率[Hz]的比率,它必须是一个大于等于1的整数。如果NI>NO,则输出以NI/NO个样本的简单采样保持进行上采样。如果NO>NI,则输出以NO/NI的因子进行下采样。

对于1000Hz的模拟采样频率,以下表格给出了输入/输出采样频率和速率的示例

输入 [Hz] 输出 [Hz] NI NO 上采样 下采样
1000 1000 1 1 - 1
1000 100 1 10 - 10
100 1000 10 1 10 -
500 100 2 10 - 5
100 500 10 2 5 -

客户端

客户端必须分配给一个Actor,并且客户端必须实现以下一些特质

  • Write(如果actor有一些输出),
  • Read(如果actor有一些输入),
  • Update,此特质必须始终实现(但默认空实现是可以接受的)

模型

一个集成模型按以下方式构建

  1. 选择并实例化客户端

  2. 将客户端分配给Actor

  3. 将输出添加到Actor,并将它们连接到其他Actor的输入

  4. 构建一个Model

  5. 检查、运行并等待Model完成

依赖项

~5–7.5MB
~126K SLoC