首页 > 编程语言 >m基于虚拟力优化算法的二维室内红外传感器部署策略matlab仿真

m基于虚拟力优化算法的二维室内红外传感器部署策略matlab仿真

时间:2023-07-18 23:56:28浏览次数:37  
标签:仿真 dim 红外 二维 虚拟 算法 matlab 传感器 优化

1.算法仿真效果

matlab2022a仿真结果如下:

 

 

 

 

2.算法涉及理论知识概要

        红外传感器在室内环境监测、安防、智能控制等领域中得到了广泛应用。在室内部署红外传感器时,其位置的选择对于传感器的性能和信号质量有着至关重要的影响。因此,如何确定红外传感器的最佳部署位置成为了一个热门的研究课题。本文将介绍一种基于虚拟力优化算法的二维室内红外传感器部署策略,并重点介绍虚拟力算法在该策略中的应用。

 

一、研究背景

 

       红外传感器是一种广泛应用于室内环境监测、安防、智能控制等领域的传感器。在实际应用中,红外传感器的位置选择对于传感器的性能和信号质量有着至关重要的影响。因此,如何确定红外传感器的最佳部署位置成为了一个热门的研究课题。

 

       传统的红外传感器部署方法主要是基于经验和试错的方式进行的。这种方法存在着许多问题,如需要大量的时间和人力成本、无法保证部署的最优性、无法考虑到不同环境、不同传感器的影响等。因此,如何利用现代优化算法对红外传感器的部署位置进行优化是当前研究的热点之一。

 

二、虚拟力优化算法

 

       虚拟力优化算法是一种基于物理模型的优化算法。它通过模拟物理力学的作用,从而对待优化问题的解进行优化。其基本思想是将待优化问题的解表示为一组点的位置,然后引入一些虚拟力(如斥力、引力等),从而对点的位置进行优化。

 

虚拟力优化算法包括以下几个步骤:

 

初始化点的位置:随机生成一组初始点的位置。

 

计算虚拟力:根据问题的特点,计算每个点的斥力和引力。

 

更新点的位置:根据虚拟力的作用,更新每个点的位置。

 

终止条件:达到预定的终止条件后,输出最优解。

 

三、基于虚拟力优化的二维室内红外传感器部署策略

 

       为了解决红外传感器部署的优化问题,一种基于虚拟力优化算法的二维室内红外传感器部署策略。该策略的主要流程如下:

 

       建立室内二维模型:首先,需要建立室内的二维模型,包括房间的大小、布局、墙壁、家具等信息。可以使用二维建模软件进行建模,也可以使用激光扫描仪进行实时扫描。

 

       确定传感器数量和类型:根据实际需求,确定需要部署的红外传感器数量和类型。

 

      初始化点的位置:将室内空间划分为若干个区域,并随机生成一组初始点的位置,每个点对应一个传感器的部署位置。

 

计算虚拟力:根据问题的特点,计算每个点的斥力和引力。具体来说,可以采用以下几个虚拟力:

 

(1)斥力:用于避免传感器之间的重叠。斥力大小与传感器之间的距离成反比,距离越近,斥力越大。

 

(2)引力:用于吸引传感器到目标区域。引力大小与传感器与目标区域的距离成反比,距离越近,引力越大。

 

(3)墙壁斥力:用于避免传感器与墙壁的碰撞。墙壁斥力大小与传感器与墙壁的距离成反比,距离越近,斥力越大。

 

更新点的位置:根据虚拟力的作用,更新每个点的位置。具体来说,根据每个点所受到的虚拟力的大小和方向,计算每个点的加速度,然后根据加速度更新每个点的速度和位置。

 

重复步骤4和5,直到达到预定的终止条件。

 

输出最优解:当达到终止条件后,输出传感器的最佳部署位置.

 

f1覆盖率

 

       覆盖的计算,采用的是平面扫描法,对于两种传感器,一个圆形,一个正方形,那么对于每次优化得到的坐标,我们对整个平面区域进行扫描,计算每一个点是否处于某个或者多个传感器,如果满足这个条件,那么这个点计入到覆盖区域里面,然后扫描完所有点之后,统计一共多少个点呗扫描进去了,即覆盖率。对应代码为:

 

f2安装难易度

 

        安装难易度,这个部分没有专门的论文介绍,我们这里定义是传感器和额障碍物的距离作为安装难易度的判断依据。

 

f3,优化后传感器数量

 

        传感器数量,即每次优化后的数量,处于最大的预设值数量,如果这个值越小,那么越优。

 

3.MATLAB核心程序

 

%下面这个for是优化适应度值的初始化计算
for i=1:Num
    XYZ1=[x(i,1:(dim-2)/2);x(i,1+(dim-2)/2:(dim-2))];
    NUM1          = 10;
    NUM2          = 10;
    [p(i),X1,Y1,f1,f2] = func_obj1(XYZ1,NUM1,NUM2);
    y(i,:)= x(i,:);
end
%全局最优
pg = x(1,:);             
%下面这个for是优化适应度值的初始化计算 
for i=2:Num
    XYZ1=[x(i,1:(dim-2)/2);x(i,1+(dim-2)/2:dim-2)];
    NUM1          = 10;
    NUM2          = 10;
    [pa(i),X1,Y1,f1,f2] = func_obj1(XYZ1,NUM1,NUM2);
    [pb(i),X1,Y1,f1,f2] = func_obj1(XYZ1,NUM1,NUM2);
    if pa(i) < pb(i)
       pg=x(i,:);
    end
end
 
for t=1:MAXGEN%开始优化
    t
    for i=1:Num
        Fx(i,:) = w*Fx(i,:)+rand*(pg(1:(dim-2)/2)        -x(i,1:(dim-2)/2));%水平力
        Fy(i,:) = w*Fy(i,:)+rand*(pg(1+(dim-2)/2:(dim-2))-x(i,1+(dim-2)/2:(dim-2)));%垂直力
        Fxy     = sqrt(Fx(i,:).^2+Fy(i,:).^2);
        
        Fxn(i,:) = w*Fxn(i,:)+rand*(pg(dim-1)-x(i,dim-1));%水平力
        Fyn(i,:) = w*Fyn(i,:)+rand*(pg(dim)  -x(i,dim));%垂直力
        Fxyn    = sqrt(Fxn(i,:).^2+Fyn(i,:).^2);        
        %更新变量
        x(i,1:(dim-2)/2)         = x(i,1:(dim-2)/2)+Fx(i,:)./Fxy*max_sensor;
        x(i,1+(dim-2)/2:(dim-2)) = x(i,1+(dim-2)/2:(dim-2))+Fy(i,:)./Fxy*max_sensor;
        x(i,dim-1) = x(i,dim-1)+Fxn(i,:)./Fxyn*max_sensor;
        x(i,dim)   = x(i,dim)  +Fyn(i,:)./Fxyn*max_sensor;        
        
        
        XYZ1=[x(i,1:(dim-2)/2);x(i,1+(dim-2)/2:(dim-2))];
        NUM1        = floor(x(i,dim-1));
        NUM2        = floor(x(i,dim));
        if NUM1>=N1
           NUM1=N1;
        end
        if NUM2>=N2
           NUM2=N2;
        end

 

  

 

标签:仿真,dim,红外,二维,虚拟,算法,matlab,传感器,优化
From: https://www.cnblogs.com/51matlab/p/17564464.html

相关文章

  • 经纬恒润ModelBase为智能驾驶仿真全面护航
        近期,工信部发文表示,支持L3及以上级别的自动驾驶的商业化应用。早在2016年,兰德智库就指出,一套自动驾驶系统至少需要测试110亿英里,才能达到量产应用条件。这漫长的测试里程,如果仅通过实车路试,将耗费巨大资源。因此,可以任意创造场景的仿真测试平台,成为当前自动驾驶仿真测......
  • 代码随想录算法训练营第三十三天| 01背包问题 二维 01背包问题 一维 416. 分割等和
    01背包问题二维 要求:有一个背包,他只能装4KG,分别有三个物品:115;320;430——》需要物品价值最大 dp[i][j]含义:在放物品I的时候在J背包容量下的物品最大值递推公式: 1,不放当前物品:dp[i-1][j]2,放当前物品:(dp[i-1][j])->不应该是在当前容量下,i-1的最大价值,应该是:dp[i-......
  • CST电磁仿真软件要怎么学?
    CST电磁仿真软件是一种在电磁领域广泛应用的专业仿真工具,它可协助工程师模拟和分析多种电磁现象。然而,要学习CST电磁仿真软件需有一定的基础知识和实践经验。本文将介绍几种学习CST电磁仿真软件的方法和步骤,以帮助新手快速学会。  1.学习基础知识:在学习CST之前,需要掌握一些......
  • 万年历matlab算法,万年历算法(万年历算法和分析)[通俗易懂]
    万年历matlab算法,万年历算法(万年历算法和分析)[通俗易懂]发布于 2022-07-2213:47:314460举报大家好,又见面了,我是你们的朋友全栈君。年历的计算方法:关键是求出当年1月1日是星期几。书上给出了当年份Y>。用蔡勒(Zeller)公式即w=y+[y/4]+[c/4]-2c+[26......
  • 遇到了一个需要java生成二维码,支持扫码枪扫描的需求
    1,需求是生产二维码,加入到正文和表单中2,首先能生成二维码,其次就是把二维码插入到表单和正文了,插入到表单设计到一些前端知识暂不分享3,把二维码插入正文,正文是用的word文档,后续分享如何操作 生成二维码的样式应该是pdf417这种码,而不是qrcode普通的二维码#需要引入依赖jar包......
  • 小程序二维码配置+前端生成带参二维码+数据加密解密+地址逆解析
    这是一个关于用户回访调查的小程序,技术栈vue3+uniapp。遇到的知识点如下:1.微信公众平台认证的小程序账号只对应一个小程序,一个邮箱只能绑定一个小程序,如果企业之前有认证过微信公众号的,可以复用微信公众号的资料认证小程序,这样就不需要另外收认证费。(复用公众号资料认证小程序流......
  • abc086d <二维前缀和 同余>
    题目D-Checker思路坐标对2k取余,通过二维前缀和计算满足条件的个数;也可对k取余,参考;代码Code//https://atcoder.jp/contests/abc086/tasks/arc089_b//二维前缀和同余#include<iostream>#include<algorithm>#include<vector>#include<cstring>usi......
  • Leetcode240.搜索二维矩阵II
    classSolution{public:boolsearchMatrix(vector<vector<int>>&matrix,inttarget){if(matrix.empty()||matrix[0].empty())returnfalse;intn=matrix.size(),m=matrix[0].size();intx=0,y=m-1;while(x&......
  • 【Matlab函数】提取inp文件中的节点、单元数据并保留集合信息
    功能提取hypermesh2020(其他版本也可以)中的节点、单元信息,并保留elemset信息。返回的是一个结构体输入输出参数输入:inp文件路径,如:'example.inp'、"inp\ex.inp"输出:一个结构体,包含节点信息、单元信息、单元集合信息、部件名字。Struct--Name--Nodes--Ele......
  • 河北永宁花苑小区主入口水景雕塑 不锈钢仿真孔雀雕塑 实景案例
    河北永宁花苑小区主入口水景雕塑不锈钢仿真孔雀雕塑实景案例......