Page 152 - 《软件学报》2024年第6期
P. 152
2728 软件学报 2024 年第 35 卷第 6 期
串行思维. 在图 3(a) 中, 计算域为 StartNode (发起点) 的全局参数 FireSource, 和计算域为 All (所有节点) 的全局参
数 Alarm, 是火灾报警信号对应的场变量在发起点和所有节点上的数据投影. 图 3(a) 第 5 行的全局参数表达式直
接将 FireSource 的值赋值给 Alarm, 实现了火灾报警信号从发起点扩散到人员疏散系统中的所有节点.
Information of building basic unit
Domain Node
+ Name: string
+ Name: string + ID: int + MeasuringUnit: string
+ DomainType: string 1 1···n + Name: string 1 1···n + BitsLength: int
+ Condition: string + NodeType: string + Value: string
+ ToPology: string + NeighborConnection: string + Read()
+ Write()
1
1
Field-oriented variable
Parameter
Expression 1 1···n
+ Name: string + Name: string
+ ParameterName: string + DataType: string Project + DataType: string
+ Operator: string + ComputationalScope: string + NodeTypeSet: string
+ Value: string + DomainName: string
+ Data: string
Swarm parallel statement
Global parameter expression Local parameter expression
+ NodeTypeSet: string
+ GlobalParameterName: string + LocalParameterName: string * 1 + DomainName: string
+ Operator: string + Operator: string + Condition: string
+ SubStatement: string
图 2 SwarmL 关键语言元素类图
域边界
发起节点
参与节点
未参与节点
(a) 全局扩散 (b) 全局求和 (c) 邻域数据校核
1 VPN EvacuationSystem {NodeType: ROOM;} // 定义人员疏散功能系统对应的域
2 VAR FireAlarm {NodeType: ROOM; VPN: EvacuationSystem; DataType: bool;} // 定义火灾报警信号对应的场变量
(a) 3 bool FireSource (Refer to: FireAlarm @global: StartNode); // 定义表示火灾报警信号的全局参数, 计算域为发起点
4 bool Alarm (Refer to: FireAlarm @global: All); // 定义表示火灾报警信号的全局参数, 计算域为所有节点
5 Alarm = FireSource; // 将火灾报警信号从发起点扩散到域中所有节点
1 VPN VAVsystem {NodeType: [ROOM, AHU];} // 定义变风量空调系统对应的域
2 VAR AirVolume {NodeType: ROOM; VPN: VAVsystem; DataType: float;} // 定义房间需求风量对应的场变量
(b) 3 float AirVolume_Sum (Refer to: AirVolume @global: StartNode); // 定义表示房间需求风量之和的全局参数
4 float AirVolume_All (Refer to: AirVolume @global: All); // 定义表示每个房间需求风量的全局参数
5 AirVolume_Sum = +AirVolume_All; // 发起点求取所有房间需求风量之和
1 VAR damperOpen_Correction {NodeType: ROOM; VPN: VAVsystem; Datatype: float;} // 定义房间风阀开度变化量的校核值对应的场变量
2 Swarm (Nodetype: [ROOM]; VPN: [VAVsystem]) // 定义Swarm语句实现邻域并行计算
(c) 3 { float dOpen_Cor_0(Refer to: damperOpen_Correction @local: Me); // 定义表示风阀开度校核值的局部参数, 计算域为本节点
4 float dOpen_Cor_U(Refer to: damperOpen_Correction @local: Upstream); // 定义表示风阀开度校核值的局部参数, 计算域为上游节点
5 dOpen_Cor_0 = max(dOpen_Cor_U)*delta_0; } // 邻域风阀风阀开度校核运算
图 3 基于 SwarmL 的典型群体智能控制逻辑描述