智能優化算法應用:基于郊狼算法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/107813319
郊狼算法是尋找最小值。于是適應度函數定義為未覆蓋率最小,即覆蓋率最大。如下:
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/214335.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/214335.shtml
英文地址,請注明出處:http://en.pswp.cn/news/214335.shtml

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

相關文章

Mybatis增刪改查基礎

MyBatis可根據查詢的結果類型、查詢條件的不同進行統一處理。 1 查詢數據 1.1 根據查詢數據條數來分析不同的情況 1.1.1 查詢單條數據 可以通過實體類、list集合、map等處理查詢結果。 通過實體類查詢單條數據 User queryUserById(Param("id") Integer id);<…

C、C++、C#的區別概述

C、C、C#的區別概述 https://link.zhihu.com/?targethttps%3A//csharp-station.com/understanding-the-differences-between-c-c-and-c/文章翻譯源于此鏈接 01、C語言 ? Dennis Ritchie在1972年創造了C語言并在1978年公布。Ritchie設計C的初衷是用于開發新版本的Unix。在那之…

express框架使用

一、express介紹 express 是一個基于 Node.js 平臺的極簡、靈活的 WEB 應用開發框架&#xff0c;簡單來說&#xff0c;express 是一個封裝好的工具包&#xff0c;封裝了很多功能&#xff0c;便于我們開發 WEB 應用&#xff08;HTTP 服務&#xff09; 二、express 使用 2.1 e…

【組合數學】遞推關系

目錄 1. 遞推關系建立2. 常系數齊次遞推關系的求解3. 常系數非齊次遞推關系的求解4. 迭代法 1. 遞推關系建立 給定一個數的序列 f ( 0 ) , f ( 1 ) , . . . , f ( n ) , . . . , f (0), f(1), ..., f(n ),... , f(0),f(1),...,f(n),..., 若存在整數 n 0 n_0 n0? &#xff…

datav-實現輪播表,使用updateRows方法-無縫銜接加載數據

前言 最近在做大屏需求的時候&#xff0c;遇到一個輪播數據的需求&#xff0c;查看datav文檔發現確實有這個組件 但這個組件只提供了一次加載輪播的例子&#xff0c;雖然提供了輪播加載數據updateRows方法 但是文檔并沒有觸發事件&#xff0c;比如輪播完數據觸發事件&#xf…

ESL電子標簽的真相:電子墨水屏沒墨水?

一說到電子墨水屏 你大概率會想到Kindle 如果你問是不是墨水做的 那這篇文章你就得好好看看了 在我們日常與客戶的溝通中 為數不多卻出乎意料地有好幾個以下對話↓ 在此辟謠 電子墨水屏里確實 沒 有 墨 水 那它是什么樣的原理&#xff1f;為什么越來越多顯示設備采用&…

Abp vNext在Docker部署并導出鏡像

Docker介紹 Docker 是一個開源的應用容器引擎&#xff0c;讓開發者可以打包他們的應用以及依賴包到一個可移植的鏡像中&#xff0c;然后發布到任何流行的 Linux或Windows操作系統的機器上&#xff0c;也可以實現虛擬化。容器是完全使用沙箱機制&#xff0c;相互之間不會有任何…

深度剖析中國居民消費價格指數CPI數據可視化案例-Python可視化技術實現(附完整源碼)【數據可視化項目案例-16】

?????? 你的技術旅程將在這里啟航! ???? 本專欄包括所有的可視化技術學習,感興趣可以到本專欄頁面,查閱可視化寶典可快速了解本專欄。訂閱專欄用戶可以在每篇文章底部下載對應案例源碼以供大家深入的學習研究。 ?? 每一個案例都會提供完整代碼和詳細的講解,不論…

Win11在Virtualbox上安裝ubuntu操作系統

注&#xff1a;原創筆記&#xff0c;以下圖片水印為本人 相關工具展示 第四個&#xff1a;ubuntu的vmdk文件&#xff0c;用于配置虛擬機 第5/6個&#xff1a;virtualbox安裝包 一、安裝 VirtualBox 由于win11版本問題&#xff0c;如果裝不了 virtualBox需要在官網安裝最新版…

新零售模式:跨境電商如何實現線上線下融合?

隨著數字時代的發展&#xff0c;新零售模式逐漸嶄露頭角&#xff0c;成為跨境電商發展的重要趨勢。線上線下融合不僅拓寬了銷售渠道&#xff0c;更提供了更豐富、更便捷的購物體驗。 本文將深入探討新零售模式在跨境電商中的應用&#xff0c;以及如何實現線上線下融合&#xf…

前后端請求之nginx配置

問題&#xff1a; 前端發送的請求&#xff0c;是如何請求到后端服務器的&#xff1f; 如&#xff0c;前端請求地址&#xff1a;http://loclhost/api/employee/login&#xff1a; 后端相應請求地址&#xff1a;http://loclhost:8080/admin/employee/login 回答&#xff1a; …

使用MfgTool燒寫前需準備的文件

一. 簡介 本文我們就來學習&#xff0c;如何將我們編譯的 uboot&#xff0c;zImage&#xff08;內核鏡像&#xff09;&#xff0c;xxx.dtb設備樹文件&#xff0c;還有制作的根文件系統&#xff0c;這四個文件燒寫到開發板中&#xff0c;最后 開發板能正常啟動。 本文這里使用…

【日志技術】附Logback入門教程

文章目錄 日志概論日志的體系Logback快速入門日志配置文件配置日志級別 日志概論 什么是日志&#xff1f;其實可以通過下面幾個問題來了解的。 系統系統能記住某些數據被誰操作&#xff0c;比如被誰刪除了&#xff1f;想分析用戶瀏覽系統的具體情況&#xff0c;比如挖掘用戶的…

一個簡單的Python自動化測試 logging 日志模塊,為何會難住一個工作6年的測試?

寫Python程序的時候&#xff0c; 我們經常需要寫日志&#xff0c; 以便調試程序&#xff0c;發現問題&#xff0c;以及查看程序的運行狀態。 Python自帶了logging模塊&#xff0c;可以將日志保存到.txt文件中&#xff0c; 也可以輸入到界面上。 我們希望日志有一定的格式, 比…

【性能優化】性能優化實戰

一、背景 在做code review的時候&#xff0c;經常會發現&#xff0c;因為開發習慣問題&#xff0c;很多研發人員喜歡在for循環中查詢數據庫。今天用一個真實例子&#xff0c;記錄一次查詢性能優化的例子 二、示例 代碼如下: classmethod fn_performance() def get_task_ins…

Linux常用調試工具gdb

程序編譯后&#xff0c;調試是十分重要的環節&#xff0c;如何更好更快的定位程序中的問題&#xff0c; 是加快程序開發進度的重要因素。Gdb 調試器是一款 GNU 開發組織并發布的 UNIX/Linux 下的程序調試工 具。GDB調試 編譯要點 對代碼進行編譯&#xff0c;注意一定要加上選項…

【C語言】【數據結構】自定義類型:結構體

引言 這是一篇對結構體的詳細介紹&#xff0c;這篇文章對結構體聲明、結構體的自引用、結構體的初始化、結構體的內存分布和對齊規則、庫函數offsetof、以及進行內存對齊的原因、如何修改默認對齊數、結構體傳參進行介紹和說明。 ? 豬巴戒&#xff1a;個人主頁? 所屬專欄&am…

Ubuntu——永久掛載/卸載硬盤

Ubuntu——永久掛載/卸載硬盤 一、掛載1. 查詢硬盤2. 格式化硬盤3. 掛載硬盤4. 開機自動掛載5. 查看掛載是否成功 二、取消掛載參考資料&#xff1a; 一、掛載 1. 查詢硬盤 sudo fdisk -l2. 格式化硬盤 # 格式化硬盤(/dev/sda)的文件系統&#xff0c;這里格式化為 ext4 系統…

面試經典150題(3-4)

leetcode 150道題 計劃花兩個月時候刷完&#xff0c;今天&#xff08;第二天&#xff09;完成了兩道(3-4)150&#xff1a; (26. 刪除有序數組中的重復項) 題目描述&#xff1a; 給你一個 非嚴格遞增排列 的數組 nums &#xff0c;請你 原地 刪除重復出現的元素&#xff0c;使…

C#生成Token字符串

Token字符串來保證數據安全性&#xff0c;如身份驗證、跨域訪問等。但是由于Token字符串的長度比較長&#xff0c;可能會占用過多的空間和帶寬資源&#xff0c;因此我們需要生成短的Token字符串 方法一&#xff1a;使用Base64編碼 Base64編碼是一種常用的編碼方式&#xff0c…