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

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

相關文章

Moco框架的搭建使用

一、前言   之前一直聽mock,也大致了解mock的作用,但沒有具體去了解過如何用工具或框架實現mock,以及也沒有考慮過落實mock,因為在實際的工作中,很少會考慮用mock。最近在學java,剛好了解到moco框架是用于…

城市基礎設施智慧路燈改造的特點

智慧城市建設穩步有序推進。作為智慧城市的基礎設施,智能照明是智慧城市的重要組成部分,而叁仟智慧路燈是智慧城市理念下的新產品。隨著物聯網和智能控制技術的飛速發展,路燈被賦予了新的任務和角色。除了使道路照明智能化和節能化外&#xf…

安全掃描五項簡介

目錄 安掃五項 1.代碼檢測 2.主機基線 nginx合規檢查 麒麟基線 3.WEB掃描 4.滲透測試 用戶枚舉漏洞 漏洞描述 修復建議 點擊劫持漏洞 漏洞描述 修復建議 XSS漏洞 漏洞描述 修復建議 3.主機漏洞 超高危漏洞 高危漏洞 中危漏洞 低危漏洞 信息漏洞 參考信息…

用電商API接口獲取拼多多的商品詳情數據

pinduoduo.item_get_app_pro-根據ID取商品詳情原數據 公共參數 API請求地址 名稱類型必須描述keyString是調用key(必須以GET方式拼接在URL中)secretString是調用密鑰api_nameString是API接口名稱(包括在請求地址中)[item_searc…

一步一步寫線程之一簡單的開始

一、多線程 多線程不管是在前面的文章分析中還是在網上還是大書籍上,學習C/C多線程編程是無法繞過的,即使使用別人封裝好的框架,包括使用STL的一些庫,如果僅僅是簡單的應用,可能也就過去了。不過,稍微復雜…

VBA_MF系列技術資料1-237

MF系列VBA技術資料 為了讓廣大學員在VBA編程中有切實可行的思路及有效的提高自己的編程技巧,我參考大量的資料,并結合自己的經驗總結了這份MF系列VBA技術綜合資料,而且開放源碼(MF04除外),其中MF01-04屬于定…

[Linux] 用LNMP網站框架搭建論壇

一、nginx在其中工作原理 原理: php-fpm.conf是控制php-fpm守護進程 它是php.ini是一個php解析器 工作過程: 1.當客戶端通過域名請求訪問時,Nginx會找到對應的虛擬主機 2. Nginx將確定請求。 對于靜態請求,Nginx會自行處理…

結構體和位段

結構體: C語言中,我們之前使用的都是C語言中內置的類型,比如整形(int)、字符型(char)、單精度浮點型(float)等。但是我們知道,我們現實世界中,還…

聊聊spring.mvc.servlet.load-on-startup

序 本文主要研究一下spring.mvc.servlet.load-on-startup spring.mvc.servlet.load-on-startup org/springframework/boot/autoconfigure/web/servlet/WebMvcProperties.java ConfigurationProperties(prefix "spring.mvc") public class WebMvcProperties {//.…

json精講

本文介紹json的規范及javascript和java對數據的交換讀取 1. json介紹1.1 json簡介1.2為什么使用 JSON? 2. json規范2.1基礎規范2.2 key值為-字符串、數字、布爾值2.3 key值為對象Object2.4 key值為數組2.5 json本身就是一個數組 3.javascript操作json3.1 javascript…

WPF(Windows Presentation Foundation) 的 Menu控件

WPF(Windows Presentation Foundation)的 Menu 是一種用于創建菜單的控件。菜單通常位于應用程序窗口的頂部,并提供了一組命令或選項,用于導航到不同的功能區域、執行特定的操作或訪問特定的功能。 Menu 控件是 WPF 中的一個容器…

2、關于使用ajax驗證繞過(實例2)

ajax原理我上一篇有寫過,參考:1、關于前端js-ajax繞過-CSDN博客 一、實例環境: 為手機上的某一割韭菜app 二、目的: 實現繞過手機驗證碼,找回密碼 三、工具: bp代理 四、驗證步驟如下: …

ECU安全學習網站和書籍介紹

ECU安全是指關注和保護汽車電子控制單元(ECU)的安全性和防護措施。ECU是現代汽車中的關鍵組件,它負責監控和控制車輛各種系統的運行,如發動機、制動、轉向等。ECU安全的重要性在于防止惡意攻擊者操控或干擾車輛的操作。 ECU安全涉…

hive自定義函數及案例

一.自定義函數 1.Hive自帶了一些函數,比如:max/min等,但是數量有限,自己可以通過自定義UDF來方便的擴展。 2.當Hive提供的內置函數無法滿足你的業務處理需要時,此時就可以考慮使用用戶自定義函數。 3.根據用戶自定義…

GitHub為Rust語言添加了供應鏈安全工具

GitHub的供應鏈安全特性包括咨詢數據庫、Dependabot警報和依賴關系圖現在可以用于Rust Cargo文件。 為了幫助Rust開發人員發現和防止安全漏洞,GitHub已經為快速增長的Rust語言提供了供應鏈安全特性套件。 這些特性包括GitHub Advisory Database,它已經有…

構建外賣系統:使用Django框架

在當今數字化的時代,外賣系統的搭建不再是什么復雜的任務。通過使用Django框架,我們可以迅速建立一個強大、靈活且易于擴展的外賣系統。本文將演示如何使用Django構建一個簡單的外賣系統,并包含一些基本的技術代碼。 步驟一:安裝…

shell的條件測試

shell 的條件測試 概述 條件測試是 shell 編程中非常重要的一個概念,它允許我們根據某個條件是否滿足,來選擇執行相應的任務。 條件測試的語法 shell 中的條件測試語法如下: [ 條件表達式 ]如果條件表達式為真,則返回 0&…

CentOS 7.9--離線安裝python3.9.18+virtualenv-20.25.0

# 想在centos6.x 上安裝新版本的python,但是擔心在用系統的環境被破壞,所以需要安裝python虛擬環境,然后就找到自用的aliyun主機先測試下離線安裝,在用6.X環境是沒有互聯網的,必須需要離線安裝。 1. 下載對應python源…

力扣解題之保姆教程:(1)兩數之和(代碼詳解)

題目描述 給定一個整數數組 nums 和一個整數目標值 target,請你在該數組中找出 和為目標值 target 的那 兩個 整數,并返回它們的數組下標。 假設每種輸入只會對應一個答案。但是,數組中同一個元素在答案里不能重復出現。你可以按任意順序返回…

Django模板

以下是一個簡單的Django模板示例&#xff1a; <!DOCTYPE html> <html><head><title>{{ title }}</title></head><body><h1>{{ heading }}</h1><p>{{ content }}</p></body> </html>一、模板的…