基于无线传感器网络的MCKP-MMF算法matlab仿真

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
实时计算 Flink 版,5000CU*H 3个月
简介: MCKP-MMF算法是一种启发式流量估计方法,用于寻找无线传感器网络的局部最优解。它从最小配置开始,逐步优化部分解,调整访问点的状态。算法处理访问点的动态影响半径,根据带宽需求调整,以避免拥塞。在MATLAB 2022a中进行了仿真,显示了访问点半径请求变化和代价函数随时间的演变。算法分两阶段:慢启动阶段识别瓶颈并重设半径,随后进入周期性调整阶段,追求最大最小公平性。

1.程序功能描述
基于流量估计,MCKP-MMF算法便可以找到本地MCKP-MMF的近似解。其基本思想与MMKP-MMF相似,但是相比之下,MCKP-MMF采取了更为简单的策略从而使之成为一种启发式算法并且运行更快。算法从最小配置开始,并将所有访问点初始化为活动状态。此后,算法在执行的每一轮中发现一个较好的部分解,并将相关的访问点置为停止状态,直至所有访问点都成为停止状态,算法终止。

1.png

某个访问点可能先后收到来自多个拥塞节点的重新设置影响半径的要求,此时为了满足带宽消耗最大的节点的带宽限制,访问点需要将其新影响半径设置为其中最小的一个。一种简单的方法是每次收到这样的请求之后,将其中包含的新影响半径与访问点当前影响半径比较,如果新影响半径较小则修改当前影响半径为新影响半径,否则访问点保持当前影响半径。这样作的一个副作用是访问点的影响半径将随时间增长而变小。从另一方面,节点由于仅通过本地信息为与之相关的访问点确定影响半径,可能无法得到访问点真正的最优影响半径。为了消除这个副作用并帮助访问点跳出本地最优状态从而更接近全局最优配置,每个访问点需要周期性的增加其影响半径。

2.测试软件版本以及运行结果展示
MATLAB2022a版本运行

2.jpeg
3.jpeg
4.jpeg
5.jpeg
6.jpeg

3.核心程序
```while(times <Stimes)
figure(2);
plot(Xn,Yn,'b.');
hold on;
plot(Xm,Ym,'r.');
hold on;

 times
 times    = times + 1;
 SATVs    = SATV*ones(1,N);

Tpk = zeros(M,1); %代价函数
NEXT_ptr = 0;
NEXT_Set = ones(1,M);

while(NEXT_ptr<= M)
%所有活动访问点半径均被增加且所得为合适解
%计算代价函数
for j = 1:M
for i1 = 1:N
d = sqrt( (Xn(i1) - Xm(j))^2 + (Yn(i1) - Ym(j))^2 );
%判断是否在一定范围之内
if d <= Rs(j)
%进行资源分配
Tpk(j) = Tpk(j) + Requst(j,i1);
else
Tpk(j) = Tpk(j);
end
end
end

     [A,I]             = sort(Tpk);

     if A > 0
        %选择最小的一个

Tpk_min = A(1);
Tpk_ind = I(1);
NEXT_Set(Tpk_ind) = 0;
if feasible(A,rij) == 1
%没有被违反
Rs(Tpk_ind) = Rs(Tpk_ind) + Step;
if (NEXT_Set(Tpk_ind)) == 0
NEXT_ptr = NEXT_ptr;
else
NEXT_ptr = NEXT_ptr + 1;
end
else
%违反了,则直接退出进入下一个循环
NEXT_ptr = M+1;
end
else
%如果流量为0,则说明没有发生任何请求,其实半径自动递增
Tpk_min = A(1);
Tpk_ind = I(1);
Rs(Tpk_ind) = Rs(Tpk_ind) + Step;
end
end

 %多个拥塞节点的重新设置影响半径
 for j = 1:M
     %表示该访问点处于第1阶段
     if FLag(j) == 0
        %计算每个节点到访问点的距离
        for i1 = 1:N
            d = sqrt( (Xn(i1) - Xm(j))^2 + (Yn(i1) - Ym(j))^2 );
            %判断是否在一定范围之内
            if d <= Rs(j)
               %进行资源分配
               SATVs(1,i1) = SATVs(1,i1) - Requst(j,i1);
            else
               SATVs(1,i1) = SATVs(1,i1); 
            end    
            %每次请求完之后,判断是否拥堵
            if SATVs(1,i1) <= 0%表示拥堵

saturated_state{j,i1} = [1,Rs',Xm(j),Ym(j),Xn(i1),Yn(i1)];
FLag(j) = 1;
else
saturated_state{j,i1} = [0,zeros(1,M),0,0,0,0];
FLag(j) = FLag(j);
end
end
end
%**
end
%绘制仿真结果
figure(3);
subplot(421);
plot(R(1,:),'b','linewidth',2);
xlabel('TIMES');
ylabel('Radius');
grid on;
title('资源点1半径请求变化');
subplot(422);
plot(R(2,:),'b','linewidth',2);
xlabel('TIMES');
ylabel('Radius');
grid on;
title('资源点2半径请求变化');
subplot(423);
plot(R(3,:),'b','linewidth',2);
xlabel('TIMES');
ylabel('Radius');
grid on;
title('资源点3半径请求变化');
subplot(424);
plot(R(4,:),'b','linewidth',2);
xlabel('TIMES');
ylabel('Radius');
grid on;
title('资源点4半径请求变化');
subplot(425);
plot(R(5,:),'b','linewidth',2);
xlabel('TIMES');
ylabel('Radius');
grid on;
title('资源点5半径请求变化');
subplot(426);
plot(R(6,:),'b','linewidth',2);
xlabel('TIMES');
ylabel('Radius');
grid on;
title('资源点6半径请求变化');
subplot(427);
plot(R(7,:),'b','linewidth',2);
xlabel('TIMES');
ylabel('Radius');
grid on;
title('资源点7半径请求变化');
subplot(428);
plot(R(8,:),'b','linewidth',2);
xlabel('TIMES');
ylabel('Radius');
grid on;
title('资源点8半径请求变化');
%绘制仿真结果
figure(4);
subplot(421);
plot(TPK(1,10:end),'b','linewidth',2);
xlabel('TIMES');
ylabel('代价函数');
grid on;
title('资源点1代价函数');
subplot(422);
plot(TPK(2,10:end),'b','linewidth',2);
xlabel('TIMES');
ylabel('代价函数');
grid on;
title('资源点2代价函数');
subplot(423);
plot(TPK(3,10:end),'b','linewidth',2);
xlabel('TIMES');
ylabel('代价函数');
grid on;
title('资源点3代价函数');
subplot(424);
plot(TPK(4,10:end),'b','linewidth',2);
xlabel('TIMES');
ylabel('代价函数');
grid on;
title('资源点4代价函数');
subplot(425);
plot(TPK(5,10:end),'b','linewidth',2);
xlabel('TIMES');
ylabel('代价函数');
grid on;
title('资源点5代价函数');
subplot(426);
plot(TPK(6,10:end),'b','linewidth',2);
xlabel('TIMES');
ylabel('代价函数');
grid on;
title('资源点6代价函数');
subplot(427);
plot(TPK(7,10:end),'b','linewidth',2);
xlabel('TIMES');
ylabel('代价函数');
grid on;
title('资源点7代价函数');
subplot(428);
plot(TPK(8,10:end),'b','linewidth',2);
xlabel('TIMES');
ylabel('代价函数');
grid on;
title('资源点8代价函数');
12_008m

```

4.本算法原理
算法的执行可以分为两个阶段。第一阶段是通常所谓的慢启动阶段,在该阶段,各个sink开始于最小半径的请求,然后以某种速度增加其请求半径,直到算法发现一个潜在的瓶颈节点,此时相关sink将收到消息。算法中initRadius过程负责确定每次增加请求半径。某个sink收到一个消息之后重新设置其请求半径为某一较小值以试图缓解拥塞。 resetRadius过程负责在收到消息之后计算新的请求半径。该sink随后进入算法的第二阶段。进入第二阶段的sink将周期性的试图增加其请求半径,以取得最优 max-min公平请求半径。此步骤由increaseRadius过程处理。这样增加的结果是,不久之后该sink再次收到消息并缩小请求半径,而后再次周期性增加。

    所有sink同时发出请求,并将初始半径设置为最小值。然后所有sink以同步方式增加请求半径直到网络中某一传感器节点上的数据流量饱和(该节点被称为瓶颈节点)。当某个传感器节点流量饱和时,覆盖该节点的所有sink停止增加其请求半径,但是其它sink继续增加其请求半径。当没有sink可以继续增加其请求半径时,算法结束。我们说此算法的解为最优解是因为该算法的解满足max-min公平性的同时被全局或局部最大化。
相关文章
|
13天前
|
算法 数据安全/隐私保护 索引
OFDM系统PAPR算法的MATLAB仿真,对比SLM,PTS以及CAF,对比不同傅里叶变换长度
本项目展示了在MATLAB 2022a环境下,通过选择映射(SLM)与相位截断星座图(PTS)技术有效降低OFDM系统中PAPR的算法实现。包括无水印的算法运行效果预览、核心程序及详尽的中文注释,附带操作步骤视频,适合研究与教学使用。
|
1天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于贝叶斯优化CNN-GRU网络的数据分类识别算法matlab仿真
本项目展示了使用MATLAB2022a实现的贝叶斯优化、CNN和GRU算法优化效果。优化前后对比显著,完整代码附带中文注释及操作视频。贝叶斯优化适用于黑盒函数,CNN用于时间序列特征提取,GRU改进了RNN的长序列处理能力。
|
21天前
|
算法 数据挖掘 数据安全/隐私保护
基于FCM模糊聚类算法的图像分割matlab仿真
本项目展示了基于模糊C均值(FCM)算法的图像分割技术。算法运行效果良好,无水印。使用MATLAB 2022a开发,提供完整代码及中文注释,附带操作步骤视频。FCM算法通过隶属度矩阵和聚类中心矩阵实现图像分割,适用于灰度和彩色图像,广泛应用于医学影像、遥感图像等领域。
|
16天前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
垃圾识别分类系统。本系统采用Python作为主要编程语言,通过收集了5种常见的垃圾数据集('塑料', '玻璃', '纸张', '纸板', '金属'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对图像数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。然后使用Django搭建Web网页端可视化操作界面,实现用户在网页端上传一张垃圾图片识别其名称。
61 0
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
|
22天前
|
机器学习/深度学习 算法 芯片
基于GSP工具箱的NILM算法matlab仿真
基于GSP工具箱的NILM算法Matlab仿真,利用图信号处理技术解析家庭或建筑内各电器的独立功耗。GSPBox通过图的节点、边和权重矩阵表示电气系统,实现对未知数据的有效分类。系统使用MATLAB2022a版本,通过滤波或分解技术从全局能耗信号中提取子设备的功耗信息。
|
1天前
|
算法
基于大爆炸优化算法的PID控制器参数寻优matlab仿真
本研究基于大爆炸优化算法对PID控制器参数进行寻优,并通过Matlab仿真对比优化前后PID控制效果。使用MATLAB2022a实现核心程序,展示了算法迭代过程及最优PID参数的求解。大爆炸优化算法通过模拟宇宙大爆炸和大收缩过程,在搜索空间中迭代寻找全局最优解,特别适用于PID参数优化,提升控制系统性能。
|
8天前
|
安全 网络安全 数据安全/隐私保护
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
在数字化时代,网络安全和信息安全已成为我们生活中不可或缺的一部分。本文将介绍网络安全漏洞、加密技术和安全意识等方面的知识,并提供一些实用的技巧和建议,帮助读者更好地保护自己的网络安全和信息安全。
|
1天前
|
存储 安全 网络安全
云计算与网络安全:云服务、网络安全、信息安全等技术领域的融合与挑战
随着云计算技术的飞速发展,越来越多的企业和个人开始使用云服务。然而,云计算的广泛应用也带来了一系列网络安全问题。本文将从云服务、网络安全、信息安全等方面探讨云计算与网络安全的关系,分析当前面临的挑战,并提出相应的解决方案。
14 3
|
7天前
|
安全 算法 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
在当今数字化时代,网络安全和信息安全已经成为了全球关注的焦点。随着技术的发展,网络攻击手段日益狡猾,而防范措施也必须不断更新以应对新的挑战。本文将深入探讨网络安全的常见漏洞,介绍加密技术的基本概念和应用,并强调培养良好安全意识的重要性。通过这些知识的分享,旨在提升公众对网络安全的认识,共同构建更加安全的网络环境。
|
6天前
|
存储 安全 网络安全
云计算与网络安全:探索云服务、网络安全和信息安全的交汇点
在数字化时代,云计算已成为企业和个人存储、处理数据的关键技术。然而,随着云服务的普及,网络安全问题也日益凸显。本文将深入探讨云计算与网络安全的关系,分析云服务中的安全挑战,并提出相应的解决方案。同时,我们还将介绍一些实用的代码示例,帮助读者更好地理解和应对网络安全问题。