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

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

文章目錄

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

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

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

本文主要基于0/1模型,進行尋優。在二維平面上傳感器節點的感知范圍是一個以節點為圓心,半徑為 R n R_n Rn?的圓形區域,該圓形區域通常被稱為該節點的“感知圓盤”, R n R_n Rn?稱為傳感器節點的感知半徑,感知半徑與節點內置傳感器件的物理特性有關,假設節點 n n n的位置坐標為 ( x n , y n ) (x_n,y_n) (xn?,yn?)在0-1感知模型中,對于平面上任意一點 p ( x p , y p ) p(x_p,y_p) p(xp?,yp?),則節點 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 d(n,p)=\sqrt{(x_n-x_p)^2+(y_n-y_p)^2} d(n,p)=(xn??xp?)2+(yn??yp?)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 , r } node_i=\{x_i,y_i,r\} nodei?={xi?,yi?,r},表示以節點 ( x i , y i ) (x_i,y_i) (xi?,yi?)為圓心,r為監測半徑的圓,假定監測區域 A r e a Area Area被數字化離散為 m ? n m*n m?n個像素點,像素點的坐標為 ( x , y ) (x,y) (x,y),目標像素點與傳感器節點間的距離為:
d ( n o d e i , p ) = ( x i ? x ) 2 + ( y i ? y ) 2 (3) d(node_i,p)=\sqrt{(x_i-x)^2+(y_i-y)^2}\tag{3} d(nodei?,p)=(xi??x)2+(yi??y)2 ?(3)
目標區域內像素點被傳感器節點所覆蓋的事件定義為 c i c_i ci?。則該事件發生的概率 P c i P{c_i} Pci?即為像素點 ( x , y ) (x,y) (x,y)被傳感器節點 n o d e i node_i nodei?所覆蓋的概率:
P c o v ( x , y , 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,node_i)=\begin{cases}1, if\,d(node_i,p)\leq r\\ 0,\, esle \end{cases}\tag{4} Pcov?(x,y,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 (5) CoverRatio = \frac{\sum P_{cov}}{m*n}\tag{5} CoverRatio=m?nPcov??(5)
那我們的最終目標就是找到一組節點使得覆蓋率最大。

3.孔雀算法

孔雀算法原理請參考:https://blog.csdn.net/u011835903/article/details/127779440
該算法是尋找最小值。于是適應度函數定義為未覆蓋率最小,即覆蓋率最大。如下:
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 ) (6) fun = argmin(1 - CoverRatio) = argmin(1-\frac{\sum P_{cov}}{m*n}) \tag{6} fun=argmin(1?CoverRatio)=argmin(1?m?nPcov??)(6)

4.實驗參數設定

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

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

孔雀算法參數如下:

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

5.算法結果

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

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

6.參考文獻

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

7.MATLAB代碼

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

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

相關文章

[足式機器人]Part2 Dr. CAN學習筆記-數學基礎Ch0-2 特征值與特征向量

本文僅供學習使用 本文參考: B站:DR_CAN Dr. CAN學習筆記-數學基礎Ch0-2 特征值與特征向量 1. 定義1.1 線性變換1.2 求解特征值,特征向量1.3 應用:對角化矩陣——解耦Decouple 2. Summary 1. 定義 A v ? λ v ? A\vec{v}\lambd…

【網絡奇緣】- 計算機網絡|深入學習物理層|網絡安全

? 🌈個人主頁: Aileen_0v0🔥系列專欄: 一見傾心,再見傾城 --- 計算機網絡~💫個人格言:"沒有羅馬,那就自己創造羅馬~" 回顧鏈接:http://t.csdnimg.cn/ZvPOS 這篇文章是關于深入學習原理參考模型-物理層的相關知識點&…

Linux權限命令詳解

Linux權限命令詳解 文章目錄 Linux權限命令詳解一、什么是權限?二、權限的本質三、Linux中的用戶四、linux中文件的權限4.1 文件訪問者的分類(人)4.2 文件類型和訪問權限(事物屬性) 五、快速掌握修改權限的做法【第一種…

Spark-Streaming+Kafka+mysql實戰示例

文章目錄 前言一、簡介1. Spark-Streaming簡介2. Kafka簡介二、實戰演練1. MySQL數據庫部分2. 導入依賴3. 編寫實體類代碼4. 編寫kafka主題管理代碼5. 編寫kafka生產者代碼6. 編寫Spark-Streaming代碼總結前言 本文將介紹一個使用Spark Streaming和Kafka進行實時數據處理的示例…

實戰1-python爬取安全客新聞

一般步驟:確定網站--搭建關系--發送請求--接受響應--篩選數據--保存本地 1.拿到網站首先要查看我們要爬取的目錄是否被允許 一般網站都會議/robots.txt目錄,告訴你哪些地址可爬,哪些不可爬,以安全客為例子 2. 首先測試在不登錄的…

Docker Network(網絡)——8

目錄: Docker 為什么需要網絡管理Docker 網絡架構簡介 CNMLibnetwork驅動常見網絡類型 bridge 網絡host 網絡container 網絡none 網絡overlay 網絡docker 網絡管理命令 docker network createdocker network inspectdocker network connectdocker network disconne…

class072 最長遞增子序列問題與擴展【算法】

class072 最長遞增子序列問題與擴展【算法】 code1 300. 最長遞增子序列 // 最長遞增子序列和最長不下降子序列 // 給定一個整數數組nums // 找到其中最長嚴格遞增子序列長度、最長不下降子序列長度 // 測試鏈接 : https://leetcode.cn/problems/longest-increasing-subsequen…

830. 單調棧

?????? ??????830. 單調棧 - AcWing題庫 給定一個長度為 N 的整數數列,輸出每個數左邊第一個比它小的數,如果不存在則輸出 ?1?1。 輸入格式 第一行包含整數 N,表示數列長度。 第二行包含 N個整數,表示整數數列…

你知道MySQL中 group by 怎么優化嗎

更好的閱讀體驗,請點擊 YinKai s Blog。 ? 在 MySQL 中 group by 用于按照一個或多個列對結果集進行分組。在討論 group by 怎么優化之前,我們先來看看 group by 的執行流程,這樣我們才能對癥下藥。 group by 執行流程 ? 我們先用下面的 …

Ubuntu 18.04使用Qemu和GDB搭建運行內核的環境

安裝busybox 參考博客: 使用GDBQEMU調試Linux內核環境搭建 一文教你如何使用GDBQemu調試Linux內核 ubuntu22.04搭建qemu環境測試內核 交叉編譯busybox 編譯busybox出現Library m is needed, can’t exclude it (yet)的解釋 S3C2440 制作最新busybox文件系統 https:…

block-recurrent-transformer-pytorch 學習筆記

目錄 有依賴項1: 沒有依賴項,沒有使用例子 沒有依賴項2: 有依賴項1: GitHub - dashstander/block-recurrent-transformer: Pytorch implementation of "Block Recurrent Transformers" (Hutchins & Schlag et a…

gd32和stm32的區別

gd32和stm32的區別 現在的市場上有很多種不同類型的微控制器,其中比較常見的有兩種,即gd32和stm32。兩種微控制器都是中國和歐洲的兩個公司分別推出的,但是它們之間有很多區別,本文將會深入探討這些區別。 1.起源和歷史 gd32是…

2024年網絡安全競賽-Web安全應用

Web安全應用 (一)拓撲圖 任務環境說明: 1.獲取PHP的版本號作為Flag值提交;(例如:5.2.14) 2.獲取MySQL數據庫的版本號作為Flag值提交;(例如:5.0.22) 3.獲取系統的內核版本號作為Flag值提交;(例如:2.6.18) 4.獲取網站后臺管理員admin用戶的密碼作為Flag值提交…

udp多播組播

import socket ,struct,time# 組播地址和端口號 MCAST_GRP 239.0.0.1 MCAST_PORT 8888 # 創建UDP socket對象 sock socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP) # 綁定socket對象到本地端口號 # sock.bind((MCAST_GRP, MCAST_PORT)) …

【4】PyQt輸入框

1. 單行文本輸入框 QLineEdit控件可以輸入單行文本 from PyQt5.QtWidgets import QApplication, QWidget, QLineEdit, QVBoxLayout from PyQt5.QtCore import * from PyQt5.QtGui import QIcon import sysdef init_widget(w: QWidget):# 修改窗口標題w.setWindowTitle(單行輸…

前端面試——CSS面經(持續更新)

1. CSS選擇器及其優先級 !important > 行內樣式 > id選擇器 > 類/偽類/屬性選擇器 > 標簽/偽元素選擇器 > 子/后臺選擇器 > *通配符 2. 重排和重繪是什么?瀏覽器的渲染機制是什么? 重排(回流):當增加或刪除dom節點&…

【面試經典150 | 二叉樹】從中序與后序遍歷序列構造二叉樹

文章目錄 寫在前面Tag題目來源題目解讀解題思路方法一:遞歸 寫在最后 寫在前面 本專欄專注于分析與講解【面試經典150】算法,兩到三天更新一篇文章,歡迎催更…… 專欄內容以分析題目為主,并附帶一些對于本題涉及到的數據結構等內容…

Android : Room 數據庫的基本用法 —簡單應用

1.Room介紹: Android Room 是 Android 官方提供的一個持久性庫,用于在 Android 應用程序中管理數據庫。它提供了一個簡單的 API 層,使得使用 SQLite 數據庫變得更加容易和方便。 以下是 Android Room 的主要特點: 對象關系映射…

9.MySQL 索引

目錄 ???????概述 概念: 單列索引 普通索引 創建索引 查看索引 刪除索引 唯一索引 創建唯一索引 刪除唯一索引 主鍵索引 組合索引 創建索引 全文索引 概述 使用全文索引 空間索引 內部原理 相關算法: hash算法 二叉樹算法 …