智能優化算法應用:基于蝙蝠算法3D無線傳感器網絡(WSN)覆蓋優化 - 附代碼

智能優化算法應用:基于蝙蝠算法3D無線傳感器網絡(WSN)覆蓋優化 - 附代碼

文章目錄

  • 智能優化算法應用:基于蝙蝠算法3D無線傳感器網絡(WSN)覆蓋優化 - 附代碼
    • 1.無線傳感網絡節點模型
    • 2.覆蓋數學模型及分析
    • 3.蝙蝠算法
    • 4.實驗參數設定
    • 5.算法結果
    • 6.參考文獻
    • 7.MATLAB代碼

摘要:本文主要介紹如何用蝙蝠算法進行3D無線傳感器網(WSN)覆蓋優化。

1.無線傳感網絡節點模型

本文主要基于0/1模型,進行尋優。在二維平面上傳感器節點的感知范圍是一個以節點為圓心,半徑為 R n R_n Rn?的圓形區域,該圓形區域通常被稱為該節點的“感知圓盤”, R n R_n Rn?稱為傳感器節點的感知半徑,感知半徑與節點內置傳感器件的物理特性有關,假設節點 n n n的位置坐標為 ( x n , y n , z n ) (x_n,y_n,z_n) (xn?,yn?,zn?)在0-1感知模型中,對于平面上任意一點 p ( x p , y p , z p ) p(x_p,y_p,z_p) p(xp?,yp?,zp?),則節點 n n n監測到區域內點 p p p的事件發生概率為:
P r ( n , p ) = { 1 , d ( n , p ) ≤ R n 0 , e s l e (1) P_r(n,p)=\begin{cases}1, \,d(n,p)\leq R_n\\ 0,\, esle \end{cases}\tag{1} Pr?(n,p)={1,d(n,p)Rn?0,esle?(1)
其中 d ( n , p ) = ( x n ? x p ) 2 + ( y n ? y p ) 2 + ( z n ? z p ) 2 d(n,p)=\sqrt{(x_n-x_p)^2+(y_n-y_p)^2 + (z_n-z_p)^2} d(n,p)=(xn??xp?)2+(yn??yp?)2+(zn??zp?)2 ?為點和之間的歐式距離。

2.覆蓋數學模型及分析

現假定目標監測區域為二維平面,在區域 A r e a Area Area上投放同型結構傳感器節點的數目為N,每個節點的位置坐標值假設已被初始化賦值,且節點的感知半徑r。傳感器節點集則表示為:
N o d e { x 1 , . . . , x N } (2) Node\{x_1,...,x_N\} \tag{2} Node{x1?,...,xN?}(2)
其中 n o d e i = { x i , y i , z i , r } node_i=\{x_i,y_i,z_i,r\} nodei?={xi?,yi?,zi?,r},表示以節點 ( x i , y i , z i ) (x_i,y_i,z_i) (xi?,yi?,zi?)為圓心,r為監測半徑的球,假定監測區域 A r e a Area Area被數字化離散為 m ? n ? l m*n*l m?n?l個空間點,空間點的坐標為 ( x , y , z ) (x,y,z) (x,y,z),目標點與傳感器節點間的距離為:
d ( n o d e i , p ) = ( x i ? x ) 2 + ( y i ? y ) 2 + ( z i ? z ) 2 (3) d(node_i,p)=\sqrt{(x_i-x)^2+(y_i-y)^2 + (z_i-z)^2}\tag{3} d(nodei?,p)=(xi??x)2+(yi??y)2+(zi??z)2 ?(3)
目標區域內點被傳感器節點所覆蓋的事件定義為 c i c_i ci?。則該事件發生的概率 P c i P{c_i} Pci?即為點 ( x , y , z ) (x,y,z) (x,y,z)被傳感器節點 n o d e i node_i nodei?所覆蓋的概率:
P c o v ( x , y , z , n o d e i ) = { 1 , i f d ( n o d e i , p ) ≤ r 0 , e s l e (4) P_{cov}(x,y,z,node_i)=\begin{cases}1, if\,d(node_i,p)\leq r\\ 0,\, esle \end{cases}\tag{4} Pcov?(x,y,z,nodei?)={1,ifd(nodei?,p)r0,esle?(4)
我們將所有的傳感器節點在目標監測環境中的區域覆蓋率 C o v e r R a t i o CoverRatio CoverRatio定義為傳感器節點集的覆蓋面積與監測區域的面積之比,如公式所示:
C o v e r R a t i o = ∑ P c o v m ? n ? l (5) CoverRatio = \frac{\sum P_{cov}}{m*n*l}\tag{5} CoverRatio=m?n?lPcov??(5)
那我們的最終目標就是找到一組節點使得覆蓋率最大。

3.蝙蝠算法

蝙蝠算法原理請參考:https://blog.csdn.net/u011835903/article/details/107937903
蝙蝠算法是尋找最小值。于是適應度函數定義為未覆蓋率最小,即覆蓋率最大。如下:
f u n = a r g m i n ( 1 ? C o v e r R a t i o ) = a r g m i n ( 1 ? ∑ P c o v m ? n ? l ) (6) fun = argmin(1 - CoverRatio) = argmin(1-\frac{\sum P_{cov}}{m*n*l}) \tag{6} fun=argmin(1?CoverRatio)=argmin(1?m?n?lPcov??)(6)

4.實驗參數設定

無線傳感器覆蓋參數設定如下:

%% 設定WNS覆蓋參數,
%% 默認輸入參數都是整數,如果想定義小數,請自行乘以系數變為整數再做轉換。
%% 比如范圍1*1,R=0.03可以轉換為100*100,R=3;
%區域范圍為AreaX*AreaY*AreaZ
AreaX = 100;
AreaY = 100;
AreaZ = 100;
N = 20 ;%覆蓋節點數
R = 15;%通信半徑

蝙蝠算法參數如下:

%% 設定蝙蝠優化參數
pop=30; % 種群數量
Max_iteration=30; %設定最大迭代次數
lb = ones(1,3*N);
ub = [AreaX.*ones(1,N),AreaY.*ones(1,N),AreaZ.*ones(1,N)];
dim = 3*N;%維度為3N,N個坐標點

5.算法結果

在這里插入圖片描述
在這里插入圖片描述

從結果來看,覆蓋率在優化過程中不斷上升。表明蝙蝠算法對覆蓋優化起到了優化的作用。

6.參考文獻

[1] 史朝亞. 基于PSO算法無線傳感器網絡覆蓋優化的研究[D]. 南京理工大學.

7.MATLAB代碼

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/215697.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/215697.shtml
英文地址,請注明出處:http://en.pswp.cn/news/215697.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

酷開科技多維度賦能營銷,實力斬獲三項大獎

在數智化新階段、廣告新生態、傳播新業態的背景下,“第30屆中國國際廣告節廣告主盛典暨網易傳媒態度營銷峰會”于11月18日在廈門國際會展中心盛大舉行。來自全國的品牌方、戰略決策者、媒體平臺和品牌服務機構等匯聚一堂。在50000+現場觀眾和數千萬線上觀…

openssl的x509命令工具

X509命令是一個多用途的證書工具。它可以顯示證書信息、轉換證書格式、簽名證書請求以及改變證書的信任設置等。 用法: openssl x509 [-inform DER|PEM|NET] [-outform DER|PEM|NET] [-keyform DER|PEM] [-CAform DER|PEM] [-CAkeyform DER|PEM] [-in filename…

vue elementui點擊按鈕新增輸入框(點多少次就新增多少個輸入框,無限新增)

效果如圖&#xff1a; 核心代碼&#xff1a; <div v-for"(item,index) in arrayData" :key"item.id">//上面這個是關鍵代碼&#xff0c;所有思路靠這個打通<el-inputtype"input" //除了輸入框&#xff0c;還有textarea等placeholder&…

SequentialChain

以下是使用SequentialChain創建Java代碼的單元測試代碼的示例&#xff1a; import sequentialchain.SequentialChain; import static org.junit.Assert.assertEquals; import org.junit.Test;public class SequentialChainTest {Testpublic void testAdd() {SequentialChain&l…

k8s詳細教程(一)

—————————————————————————————————————————————— 博主介紹&#xff1a;Java領域優質創作者,博客之星城市賽道TOP20、專注于前端流行技術框架、Java后端技術領域、項目實戰運維以及GIS地理信息領域。 &#x1f345;文末獲取源碼…

《Spring Cloud Alibaba 從入門到實戰》分布式消息(事件)驅動

分布式消息&#xff08;事件&#xff09;驅動 1、簡介 事件驅動架構(Event-driven 架構&#xff0c;簡稱 EDA)是軟件設計領域內的一套程序設計模型。 這套模型的意義是所有的操作通過事件的發送/接收來完成。 傳統軟件設計 舉個例子&#xff0c;比如一個訂單的創建在傳統軟…

「差生文具多系列」推薦兩個好看的 Redis 客戶端

&#x1f4e2;?聲明&#xff1a; &#x1f344; 大家好&#xff0c;我是風箏 &#x1f30d; 作者主頁&#xff1a;【古時的風箏CSDN主頁】。 ?? 本文目的為個人學習記錄及知識分享。如果有什么不正確、不嚴謹的地方請及時指正&#xff0c;不勝感激。 直達博主&#xff1a;「…

ModuleNotFoundError: No module named ‘huggingface_hub.snapshot_download‘

ModuleNotFoundError: No module named ‘huggingface_hub.snapshot_download’ 的解決方法 根據提示顯示XXX模塊不存在&#xff0c;一般會直接安裝XXX模塊&#xff0c;但是這個不需要顯式安裝huggingface-hub。 只需要升級sentence-transformers即可。 pip install -U sente…

Innosetup 安裝包 在安裝前判斷是否有其他安裝程序正在安裝...

方法有&#xff1a; 1.使用系統服務WinMgmts 系統信息通過 "winmgmts:\\.\root\CIMV2" 遍歷進程列表。 var FSWbemLocator: Variant; FWMIService : Variant; FWbemObjectSet: Variant; begin Result : false; FSWbemLocator : CreateOleObject(WBEMScripti…

Fabric使用自己的鏈碼進行測試-go語言

書接前文 Fabric鏈碼部署-go語言 通過上面這篇文章&#xff0c;你可以部署好自己的鏈碼 &#xff08;后面很多命令是否需要修改&#xff0c;都是根據上面這篇文章來的&#xff0c;如果零基礎的話建議先看上面這篇&#xff09; 就進行下一步 在測試網絡上運行自己的鏈碼 目…

PDF文件的限制編輯,如何設置?

想要給PDF文件設置一個密碼防止他人對文件進行編輯&#xff0c;那么我們可以對PDF文件設置限制編輯&#xff0c;設置方法很簡單&#xff0c;我們在PDF編輯器中點擊文件 – 屬性 – 安全&#xff0c;在權限下拉框中選中【密碼保護】 然后在密碼保護界面中&#xff0c;我們勾選【…

系列十、SpringBoot + MyBatis + Redis實現分布式緩存(基于注解方式)

一、概述 上篇文章 系列九、SpringBoot MyBatis Redis實現分布式緩存 介紹了基于xml方式實現分布式緩存的效果&#xff0c;當前大家使用的技術棧基本是springboot各種框架的組合&#xff0c;而springboot顯著的一個特點就是去xml配置&#xff0c;那么在無xml配置的情形下&…

CStdioFile

CStdioFile 文件創建、數據寫入、寫入路徑 void StdReferenceDWG::RefDrawCrvt(StdOneReference& ref) {char* old_locale _strdup(setlocale(LC_CTYPE, NULL));setlocale(LC_CTYPE, "chs");//設定CString strPath StdTool::GetCurPath() _T("襯圖\\Re…

界面控件DevExpress中文教程 - 如何用Office File API組件填充PDF表單

DevExpress Office File API是一個專為C#, VB.NET 和 ASP.NET等開發人員提供的非可視化.NET庫。有了這個庫&#xff0c;不用安裝Microsoft Office&#xff0c;就可以完全自動處理Excel、Word等文檔。開發人員使用一個非常易于操作的API就可以生成XLS, XLSx, DOC, DOCx, RTF, CS…

基于SpringBoot的就業信息管理系統設計與實現(源碼+數據庫+文檔)

摘 要 在新冠肺炎疫情的影響下&#xff0c;大學生的就業問題已經變成了一個引起人們普遍重視的社會焦點問題。在這次疫情的沖擊之下&#xff0c;大學生的就業市場的供求雙方都受到了不同程度的影響&#xff0c;大學生的就業情況并不十分樂觀。目前&#xff0c;各種招聘平臺上…

Netty高性能的原因

Netty 之所以具有高性能&#xff0c;主要得益于以下幾個方面的設計和實現&#xff1a; 異步非阻塞&#xff1a; Netty采用基于事件驅動的異步非阻塞模型&#xff0c;即 Reactor 模式。這意味著它能夠處理大量并發連接而不會因為I/O操作而阻塞線程。不會因為每個連接都需要一個單…

云原生之使用Docker部署Mariadb數據庫

目錄 一、什么是云原生 二、Docker介紹 三、Mariadb數據庫介紹 四、如何使用Docker部署Mariadb數據庫 一、什么是云原生 云原生是一種綜合性的技術和方法論&#xff0c;旨在對應用程序進行全生命周期的管理&#xff0c;包括開發、部署、運行和擴展。它倡導將應用程序設計為…

moviepy基本參數用法大全

閱讀本文檔的前置說明&#xff1a; 本文檔用于講解Python的moviepy庫的自帶函數的用法&#xff0c;主要目的是講一下每個函數的每個參數的含義&#xff0c;無需一開始就全部掌握&#xff0c;粗略看一下就行&#xff0c;可以在后面自己開發過程&#xff0c;遇到不會用的函數再回…

大模型應用_AutoGPT

1 功能 整體功能&#xff0c;想解決什么問題 單獨使用 ChatGPT 時&#xff0c;只提供基本的聊天&#xff0c;無法實現具體的功能&#xff0c;如果想提供某種功能&#xff0c;則需要結合程序實現。AutoGPT目標是建立和使用 AI Agent&#xff0c;設定一個或多個目標&#xff0c;…

數據庫——字段拆分與合并

一、GP或PostgreSQL 1.字段拆分成行 unnest(string_to_array(test, ,)) 例如某一字段值為"a,b,c,d"&#xff0c;使用string_to_array將其拆分為數組&#xff0c;然后使用unnest將數組平鋪成一張表 SELECT unnest(string_to_array(555,666,777, ,)) 2.字段拆分成列…