新的语法结构,采用了大括号
simple Mobility
{ parameters:
double
MinSpeed;
double
MaxSpeed; @display(
"
i=block/broadcast
"
); gates: output
out
; }
simple BottomLayer
{ @display(
"
i=block/table
"
); gates: input fromMobility; input fromPosition; output toPosition; }
simple Position
{ @display(
"
i=block/cogwheel
"
); gates: input fromBottom; output toBottom; }
module MobileHost
{ @display(
"
i=device/laptop
"
); submodules: bottomLayer: BottomLayer
{ @display(
"
p=133,43
"
); }
mobility: Mobility
{ @display(
"
p=236,43
"
); }
position: Position
{ @display(
"
p=133,126
"
); }
connections: mobility.
out
-->
bottomLayer.fromMobility; position.toBottom
-->
bottomLayer.fromPosition; bottomLayer.toPosition
-->
position.fromBottom; }
新的like语法
moduleinterface Mobility // 被like的模块不再是simple,变为moduleinterface
{ parameters:
double
minSpeed; // 最小速度
double
maxSpeed;
//
最大速度
double
movKind;
//
节点运动到边界时的处理方式
double
XRange;
//
节点布置区域的宽度
double
YRange;
//
节点布置区域的长度
double
pauseTime;
//
到达一个目标后的等待时间
double
moveInterval;
//
两步之间的时间
@display(
"
i=block/cogwheel,blue
"
); gates: output
out
; }
simple bottomLayer
{ parameters:
double
seed_r;
//
锚节点的通信半径
double
node_r;
//
待定位节点的通信半径
double
isSeed;
//
是否是锚节点
@display(
"
i=block/table,blue
"
); gates: input fromMobility; input fromPosition; output toPosition; }
moduleinterface Positioning
{ parameters:
double
isSeed; // 是否是锚节点
double
announceInterval;
//
锚节点广播自身位置的时间间隔
double
updateInterval;
//
待定位节点两次定位间的时间间隔
double
seed_r;
//
锚节点的通信半径
double
node_r;
//
待定位节点的通信半径
double
max_v;
//
最大速度
double
delta;
//
抽样点可能的误差
@display(
"
i=block/circle,blue
"
); gates: input fromBottom; output toBottom; }
module MobileHost
{ parameters:
int
isSeed; // 是否是锚节点
int
numHost;
//
总的结点数
double
x;
//
真实位置的x坐标
double
y;
//
真实位置的y坐标
double
Xbound;
//
布置区域的宽度
double
Ybound;
//
布置区域的长度
double
seed_r;
//
锚节点的通信半径
double
node_r;
//
待定位节点的通信半径
string
mobilityModel;
//
移动模型
string
posAlgorithm;
//
定位算法
submodules: mobility:
<
mobilityModel
>
like Mobility
{ // 新的like语法,增加尖括号 XRange
=
Xbound; // 增加大括号,parameters变为可选 YRange
=
Ybound; @display(
"
p=96,77
"
); }
bottomlayer: bottomLayer
{ isSeed
=
isSeed; seed_r
=
seed_r; node_r
=
node_r; @display(
"
p=279,77
"
); }
position:
<
posAlgorithm
>
like Positioning
{ isSeed
=
isSeed; seed_r
=
seed_r; node_r
=
node_r; max_v
=
INPUT; delta
=
INPUT; announceInterval
=
INPUT; updateInterval
=
INPUT; @display(
"
p=279,170
"
); }
connections: mobility.
out
-->
bottomlayer.fromMobility; position.toBottom
-->
bottomlayer.fromPosition; bottomlayer.toPosition
-->
position.fromBottom; }
新的子模块数组定义方式 module MobileSensorNet { parameters: int numHost; double anchorFraction; double playgroundSizeX; double playgroundSizeY; @display("i=block/network2"); submodules: seed[numHost * anchorFraction]: MobileHost { //新的子模块数组定义方式 isSeed = 1; numHost = numHost; Xbound = playgroundSizeX; Ybound = playgroundSizeY; x = intuniform(0,playgroundSizeX); y = intuniform(0,playgroundSizeY); } node[numHost - numHost * anchorFraction]: MobileHost { isSeed = 0; numHost = numHost; Xbound = playgroundSizeX; Ybound = playgroundSizeY; x = intuniform(0,playgroundSizeX); y = intuniform(0,playgroundSizeY); } } 总之,越来越像C++了
|
|
常用链接
留言簿(9)
随笔分类
随笔档案
文章档案
最新评论
阅读排行榜
|
|