2023年华为杯研究生数学建模竞赛A题WLAN组网分析
clc
clear
PHY=13.6;
MAC=30;
DATA=1500;
ACK=32;
SIFS=16;
DIFS=43;
SLOT=9;
ACKTimeout=65;
w0=16;
r=32;
N=2;
wmax=1024;
m=log(wmax/w0)/log(2);
% 定义变量
syms p x;
% 定义方程组
eq1 = −x+(2*(1−p)*(1−2*p))/(w0*(1−(2*p)^(m+1))*(1−p)+(1−2*p)*(1−p^(
r+1))+w0*(2^m)*p^(m+1)*(1−p^(r−m))*(1−2*p))*(1−p^(r+1))/(1−p);
eq2 = 1−(1−x)^(N−1)−p;
% 求解方程组
sol = solve(eq1, eq2, p, x);
% 过滤出实数解
real_sol = [];
for i = 1:numel(sol.p) % 遍历所有解
p_val = double(sol.p(i));
x_val = double(sol.x(i));
if isreal(p_val) && isreal(x_val) % 判断是否为实数解
real_sol = [real_sol; [double(p_val), double(x_val)]]; % 添
加到实数解集合中
end
end
p=real_sol(1)
% 输出实数解
x=real_sol(2)
te=SLOT;
H=MAC*8/455.8+PHY;
EP=DATA*8/455.8;
tc=H+EP+DIFS+ACKTimeout;
ts=H+EP+SIFS+ACK+DIFS;
E=(((1−x)^2)*te+(x^2)*tc+(2*x−2*(x^2))*ts);
s=((2*x−2*(x^2))*12000/455.8)/(((1−x)^2)*te+(x^2)*tc+(2*x−2*(x^2))* ts)*455.8*10^6
16
wenti1fangzhen.m
clc
clear
PHY=13.6;
MAC=30;
DATA=1500*8;
ACK=32;
SIFS=16;
DIFS=43;
SLOT=9;
ACKTimeout=65;
wmin=16;
r=32;
N=2;
wmax=1024;
SPEED=455.8;
te=SLOT;
H=MAC*8/SPEED+PHY;
EP=DATA/SPEED;
tc=H+EP+DIFS+ACKTimeout;%%碰撞
ts=H+EP+SIFS+ACK+DIFS;%%成功
for iii=1:60
t=0;
ss=0;
i=0;
ii=0;
AP1=randi([0, wmin−1]);
AP2=randi([0, wmin−1]);
while(t<10^6)
while(AP1==0||AP2==0)
AP1=randi([0, wmin−1]);
AP2=randi([0, wmin−1]);
end
t=t+9;
AP1=AP1−1;
AP2=AP2−1;
while(AP1==AP2)
ii=ii+1;
t=t+AP1*9+tc;
AP1=randi([0, 2*ii*(wmin−1)]);
AP2=randi([0, 2*ii*(wmin−1)]);
end
ii=0;
while(AP1==0)
t=t+ts;
AP1=randi([0, wmin−1]);
ss=ss+DATA;
end
while(AP2==0)
t=t+ts;
AP2=randi([0, wmin−1]);
ss=ss+DATA;
17
end
i=i+1;
% x(i,1)=AP1;
%x(i,2)=AP2;
% x(i,3)=ss;
% x(i,4)=t;
end
sss(iii)=ss/10^6;
ttt(iii)=iii;
end
% 绘制图形
sss=sss';
ttt=ttt';
clear
PHY=13.6;
MAC=30;
DATA=1500;
ACK=32;
SIFS=16;
DIFS=43;
SLOT=9;
ACKTimeout=65;
w0=16;
r=32;
N=2;
wmax=1024;
SPEED=275.3;
m=log(wmax/w0)/log(2);
% 定义变量
syms p x;
% 定义方程组
eq1 = −x+(2*(1−p)*(1−2*p))/(w0*(1−(2*p)^(m+1))*(1−p)+(1−2*p)*(1−p^(
r+1))+w0*(2^m)*p^(m+1)*(1−p^(r−m))*(1−2*p))*(1−p^(r+1))/(1−p);
eq2 = 1−(1−x)^(N−1)−p;
% 求解方程组
sol = solve(eq1, eq2, p, x);
% 过滤出实数解
real_sol = [];
for i = 1:numel(sol.p) % 遍历所有解
p_val = double(sol.p(i));
x_val = double(sol.x(i));
if isreal(p_val) && isreal(x_val) % 判断是否为实数解
real_sol = [real_sol; [double(p_val), double(x_val)]]; % 添
加到实数解集合中
end
end
18
p=real_sol(1)
% 输出实数解
x=real_sol(2)
te=SLOT;
H=MAC*8/SPEED+PHY;
EP=DATA*8/SPEED;
tc=H+EP+DIFS+ACKTimeout;
ts=H+EP+SIFS+ACK+DIFS;
s=((2*x)*12000/SPEED)/(((1−x)^2)*te+(x^2)*tc+(2*x−2*(x^2))*ts)* SPEED*10^6
wenti2fangzhen.m
clc
clear
PHY=13.6;
MAC=30;
DATA=1500*8;
ACK=32;
SIFS=16;
DIFS=43;
SLOT=9;
ACKTimeout=65;
wmin=16;
r=32;
N=2;
wmax=1024;
SPEED=275.3;
te=SLOT;
H=MAC*8/SPEED+PHY;
EP=DATA/SPEED;
tc=H+EP+DIFS+ACKTimeout;%%碰撞
ts=H+EP+SIFS+ACK+DIFS;%%成功
for iii=1:60
t=0;
ss=0;
AP1=randi([0, wmin−1]);
AP2=randi([0, wmin−1]);
i=0;
ii=0;
while(t<10^6)
while(AP1==0||AP2==0)
AP1=randi([0, wmin−1]);
AP2=randi([0, wmin−1]);
end
t=t+9;
AP1=AP1−1;
AP2=AP2−1;
while(AP1==AP2)
ii=ii+1;
t=t+AP1*9+ts;
19
ss=ss+DATA*2;
AP1=randi([0, 2*ii*(wmin−1)]);
AP2=randi([0, 2*ii*(wmin−1)]);
end
ii=0;
while(AP1==0)
t=t+ts;
AP1=randi([0, wmin−1]);
ss=ss+DATA;
end
while(AP2==0)
t=t+ts;
AP2=randi([0, wmin−1]);
ss=ss+DATA;
end
i=i+1;
x(i,1)=AP1;
x(i,2)=AP2;
x(i,3)=ss;
x(i,4)=t;
end
sss(iii)=ss/10^6;
ttt(iii)=iii;
end
% 绘制图形
sss=sss';
ttt=ttt';
更多信息
关注下方名片