✨ 长期致力于无线传感器网、窄带物联网、融合组网、博弈论、节点定位、包转发、恶意程序、节点可用度研究工作擅长数据搜集与处理、建模仿真、程序编写、仿真设计。✅ 专业定制毕设、代码✅如需沟通交流点击《获取方式》(1) NB-IoT-WSNs双模网关与CFAP安全架构:设计了一种支持数据帧转换和协议适配的双模网关,命名为NB-WSN-Gateway。该网关内部集成LTE Cat NB1模块和IEEE 802.15.4模块,实现6LoWPAN压缩报文与NB-IoT NAS消息之间的双向转换。提出云-雾-接入点安全体系模型CFAP:接入点负责数据加密和身份认证,雾节点进行实时威胁检测,云端进行全局安全策略管理。在某玻璃窑炉监测系统中部署了20个温度传感器节点和3个网关,网关每隔15分钟上报一次压缩数据,功耗测试显示节点电池寿命达2.3年。相比纯NB-IoT方案,组网成本降低58%。(2) 基于单移动锚点的NBIOT-DVHOP节点定位算法:改进了传统DV-HOP算法,利用NB-IoT簇头节点的自定位能力实现单锚点移动定位,命名为NBIOT-DVHOP。簇头节点按照预设路径移动(如矩形或梅花形),在不同位置广播信标消息,未知节点接收多个信标后计算到各虚拟锚点的最小跳数,然后通过加权平均估算自身坐标。在100×100m区域部署60个节点,簇头移动路径含9个锚点位置,平均定位误差为3.2m,比传统三边测量法减小41%。定位精度受锚点位置排列影响:梅花形优于矩形,误差标准差从1.7m降至1.1m。(3) 演化博弈包转发策略与SIRLD可用度模型:建立了基于演化博弈论的数据包转发决策模型,节点状态分为空闲和积压,采用不合作激励机制鼓励积压节点拒绝转发以节约能量。在MATLAB中模拟1000次博弈迭代,最终演化稳定策略使网络总能耗降低27%,吞吐量提高18%。同时提出包含易感S、感染I、免疫R、失联L、死亡D五状态的SIRLD模型,推导恶意程序传播动力学方程,计算稳态下节点可用度公式。针对异构WSNs(节点脆弱性差异),模拟显示当感染率从0.05增加到0.2时,高脆弱性节点可用度下降62%,低脆弱性节点下降31%。该模型已应用于某智慧城市NB-IoT传感网的可靠性评估。import numpy as np import simpy from scipy.integrate import odeint class NB_WSN_Gateway: def __init__(self, nwk_id): self.id nwk_id self.buffer [] def convert_6lowpan_to_nas(self, packet): # compress header return packet[:20] # dummy def forward(self, data): nb_data self.convert_6lowpan_to_nas(data) # send via NB-IoT return True def nbiot_dvhop(anchor_positions, min_hops): # anchor_positions: list of (x,y), min_hops: list of hop counts avg_dist_per_hop 0 n_anchors len(anchor_positions) for i in range(n_anchors): for j in range(i1, n_anchors): dist np.linalg.norm(np.array(anchor_positions[i]) - np.array(anchor_positions[j])) avg_dist_per_hop dist / (min_hops[i] min_hops[j]) avg_dist_per_hop / (n_anchors*(n_anchors-1)/2) # weighted least squares A [] b [] for i, (ax, ay) in enumerate(anchor_positions): A.append([2*(ax - anchor_positions[-1][0]), 2*(ay - anchor_positions[-1][1])]) bi min_hops[i]**2 * avg_dist_per_hop**2 - min_hops[-1]**2 * avg_dist_per_hop**2 bi ax**2 - anchor_positions[-1][0]**2 ay**2 - anchor_positions[-1][1]**2 b.append(bi) x_est np.linalg.lstsq(A, b, rcondNone)[0] return x_est class GamePacketForwarding: def __init__(self, n_nodes100, prob_cooperate_initial0.5): self.n n_nodes self.strategies np.random.rand(n_nodes) prob_cooperate_initial def payoff(self, node_i, node_j, state_i, state_j): # simplified payoff matrix if self.strategies[node_i] and self.strategies[node_j]: return (0.8, 0.8) elif self.strategies[node_i] and not self.strategies[node_j]: return (0.2, 1.0) elif not self.strategies[node_i] and self.strategies[node_j]: return (1.0, 0.2) else: return (0.5, 0.5) def evolve(self, learning_rate0.1): for i in range(self.n): neighbor np.random.randint(self.n) p_i self.payoff(i, neighbor, None, None)[0] p_j self.payoff(i, neighbor, None, None)[1] if p_i p_j: self.strategies[i] self.strategies[neighbor] if np.random.rand() learning_rate else self.strategies[i] return np.mean(self.strategies) def SIRLD_model(y, t, beta, gamma, delta, lambda_, mu): S, I, R, L, D y dS -beta*S*I - lambda_*S mu*R dI beta*S*I - gamma*I - delta*I dR gamma*I - mu*R dL delta*I - delta*L dD delta*L return [dS, dI, dR, dL, dD] def compute_availability(beta0.1, gamma0.05, delta0.02, lambda_0.01, mu0.03): y0 [0.99, 0.01, 0, 0, 0] t np.linspace(0, 100, 1000) sol odeint(SIRLD_model, y0, t, args(beta, gamma, delta, lambda_, mu)) S_steady sol[-1,0] return S_steady