刚开始阅读MANET的随机路点移动性。我发现很多工作都实现了这个模型。因此,我假设Matlab代码将可用,我可以调查以更好地理解它。不幸的是,我找不到。
任何机构都可以在随机路线上建议任何好的教程或代码吗?帮助赞赏。
更新:
随机路点(RWP)模型是用于移动性的常用合成模型,例如,在Ad Hoc网络中。它是一个基本模型,用简单的术语描述了独立节点的运动模式。
简而言之,在RWP模型中:
每个节点沿着Z字形线从一个航点移动到下一个航点 航点均匀地分布在给定的凸区域上,例如,单位磁盘。 在每条腿的开始处,从速度分布中抽取随机速度 (在基本情况下,速度是常数1) 可选地,节点在继续下一站之前到达每个航路点时可能具有所谓的“思考时间”,其中持续时间是独立的且相同分布的随机变量
![1。随机路点模型的常见问题] [1]
Zig-zag轨迹:RWP模型是基本的,很容易争论不自然的路径。然后,任何实际的协议或机制都应该是健壮的,并且提供具有各种移动模式的合理性能,包括类似于RWP模型的移动。 速度分布:使用随机航路点模型进行模拟研究的最常见问题是速度分布的选择较差[4],例如均匀分布U(0,Vmax)。这种速度分布(似乎在NS-2模拟中很常见!)导致在静止状态下每个节点停止移动的情况。为了避免这种情况,速度分布应该是这样的 1 / E [1 / V]> 0 请注意,节点在单个支路上花费的平均时间与1 / E [1 / V]成正比。 2.边界上的随机航点(RWPB)
在(标准)RWP模型中,航点均匀分布在给定的域上。或者,航点可以均匀地分布在域的边界上,并且该模型被称为“边界上的随机航路点”(RWPB)模型。由RWPB模型产生的空间节点密度与RWP模型完全不同,即概率质量从区域的中心移动到边界。特别是,如果边界包含直线段,则随机支路位于线段上的概率为正(导致边界上每个线段上的1维pdf)。
[1]:http://i.stack.imgur.com/VKobC.gif [来源:http://www.netlab.tkk.fi/~esa/java/rwp/rwp-model.shtml]
这是我找到一个好的来源。如何在MATLAB中实现此模型?
更新
随机网络拓扑:
maxx=1000;
maxy=1000;
maxn=100;
%node generation
node = rand(maxn,2);
node(:,1) = node(:,1)*maxx;
node(:,2) = node(:,2)*maxy;
maxd=2;
noded = rand(maxd,2);
noded(:,1) = noded(:,1)*maxx;
noded(:,2) = noded(:,2)*maxy;
maxs=4;
nodes = rand(maxs,2);
nodes(:,1) = nodes(:,1)*maxx;
nodes(:,2) = nodes(:,2)*maxy;
% make background white, run only once
colordef none, whitebg
figure(1);
axis equal
hold on
box on;
plot(node(:, 1), node(:, 2), 'k.', 'MarkerSize', 25);
hold on
% plot(noded(:, 1), noded(:, 2), 'r.', 'MarkerSize', 25);
hold on
% plot(nodes(:, 1), nodes(:, 2), 'b.', 'MarkerSize', 25);
hold on
title('Network topology');
xlabel('X');
ylabel('Y');
grid on
Xminor grid on
axis([0, maxx, 0, maxy]);
set(gca, 'XTick', [0; maxx]);
set(gca, 'YTick', [maxy]);
结果:
随机方式流动:
clear;
hold on;
X = 1500;
Y = 500;
MINSPEED = 0;
MAXSPEED = 20;
PAUSETIME = 2;
TIME = 900;
N = 10;
AMOSTRAS = 30;
nodes = zeros(N,6);
nodes_speed = zeros(N,TIME);
nodes_speed_mean = zeros (AMOSTRAS,TIME);
for a=1:AMOSTRAS
for i=1:N
j=1;
x = rand*X;
y = rand*Y;
waypointX = rand*X;
waypointY = rand*Y;
speed = MINSPEED+(MAXSPEED - MINSPEED)*rand;
time = 1;
node = [x y speed waypointX waypointY time];
nodes(j,:) =node;
while time <= TIME
node = nodes(j,:);
x = node(1);
y = node(2);
speed = node(3);
waypointX = node(4);
waypointY = node(5);
dist = sqrt((x-waypointX)^2+(y-waypointY)^2);
new_waypointX = rand*X;
new_waypointY = rand*Y;
new_speed = MINSPEED+(MAXSPEED - MINSPEED)*rand;
time = time + dist/speed + PAUSETIME;
node = [waypointX waypointY new_speed new_waypointX new_waypointY time];
j=j+1;
nodes(j,:) =node;
end
for k=1:j-1
node_ant = nodes(k,:);
speed = node_ant(3);
time_ant = node_ant(6);
node_next = nodes(k+1,:);
time_next = node_next(6);
if time_next >TIME
time_next = TIME;
end
times = ceil(time_ant):floor(time_next);
if ~isempty(times)
nodes_speed(i,times) = speed ;
end
end
end
nodes_speed_mean(a,:) = mean(nodes_speed);
end
plot (mean(nodes_speed_mean),'r');
grid on
![替代文字] [3]
我生成了第一个代码中静态的网络拓扑。在第二个代码中,我生成了RWP移动性。现在,我的问题是,我可以这样做:
生成网络随机打印它。接下来,移动模型应用于网络。我将再次绘制网络并看到节点已移动。 Lat我将spedd绘制为(图2。)。
感谢您的帮助。
答案 0 :(得分:1)
因此,在每个步骤中,您需要生成3个随机数:
表示演员的时间 留在当前位置。
表示的x坐标 演员的下一步。
(您可以用速度向量替换x坐标和y坐标,但仍需要2个随机数。)
现在你要做的就是弄清楚从哪个分布中抽取随机数以适合你的模型。一个非常天真的Matlab方法是执行:
rand(10,3)-0.5
代表你的一个演员的起点和前9个步骤。除了仔细选择您的发行版外,您还需要扩展所采取的步骤。