首页 > 其他分享 >超市火灾烟雾蔓延及人员疏散的matlab模拟仿真,带GUI界面

超市火灾烟雾蔓延及人员疏散的matlab模拟仿真,带GUI界面

时间:2024-12-08 23:55:43浏览次数:4  
标签:仿真 str2num string People GUI get handles matlab Infor

1.程序功能描述
出口在人员的视野范围内时,该元胞选择朝向引导点的方向运动。出口不在人员的视野范围内时,作随机运动,8个方向的运动概率相等。引导点可设在过道中间等地方,出口都是引导点。

1. 当多个元胞同时竞争同一个格点时,每个元胞以50%等概率进入,没有进入的保持静止.

2.运动人员以5%概率静止,即下一时间步不动.

3.开始疏散时所有人员是以正态分布的概率开始运动,而不是同时运动.

2.测试软件版本以及运行结果展示
MATLAB2022A版本运行

 

3.核心程序

Times     = str2num(get(handles.edit1,'string'));
TStep     = str2num(get(handles.edit2,'string'));
 
YW_X      = str2num(get(handles.edit3,'string'));
YW_Y      = str2num(get(handles.edit4,'string'));
Vyw       = str2num(get(handles.edit5,'string'));
Fac       = str2num(get(handles.edit6,'string'));
 
N1        = str2num(get(handles.edit7,'string'));
N2        = str2num(get(handles.edit8,'string'));
N3        = str2num(get(handles.edit9,'string'));
 
V1        = str2num(get(handles.edit10,'string'));
V2        = str2num(get(handles.edit11,'string'));
V3        = str2num(get(handles.edit12,'string'));
 
SCOPE     = str2num(get(handles.edit13,'string'));
movetime  = str2num(get(handles.edit14,'string'));
dmovetime = str2num(get(handles.edit14,'string'));
 
[gnd,Exit_Position] = func_Small_market();
%     ϰ       ϰ       
obstacles           = gnd(:,:,1);%1  ʾͨ    0  ʾ ϰ   
[row,col,KK]        = size(gnd);
Ewidth              = [40,50];    %    2     ڵĿ  
%   ォ     ٶ     Ϊÿ   ƶ  ķ   Ϊ׼
Vv1                 = lcm(V1,V2);
VMAX                = lcm(Vv1,V3);
%     ٶ   ÿ     ٸ ʱ 䲽 ƶ һ    
L1                  = VMAX/V1;
L2                  = VMAX/V2;
L3                  = VMAX/V3;
 
 
%%
%******************************************************************************************************
%ģ   ʼ  
%     ʼ  
Positions            = zeros(row,col);
Positions(YW_X,YW_Y) = 1;
[I1,I2]              = find(Positions==1);
%  Ա  ʼ  
%  Ա  ʼ  
Num_People           = N1 + N2 + N3;
Infor_People         = zeros(Num_People,5); %    X      Y      X      Y        
Map_People           = zeros(row,col);
x                    = [];
y                    = [];
i                    = 0;
while(i <= Num_People)
   r   = randi([1,row]);
   c   = randi([1,col]);
   II1 = find(x == r);
   II2 = find(y == c);
   if Map_People(r,c)==0 & obstacles(r,c)==1 & (isempty(II1) == 1 & isempty(II2) == 1)
       i = i + 1;
       if i <= N1
       Map_People(r,c) = 1;
       Infor_People(i,1:2)     = [c,r];
       Infor_People(i,3:4)     = [func_rand_fangx()];%             
       Infor_People(i,5)       = 1;% ˵ı  
       x(end+1)         = c;
       y(end+1)         = r;
       end
       if i <= N1+N2 & i > N1
       Map_People(r,c) = 1;
       Infor_People(i,1:2)     = [c,r];
       Infor_People(i,3:4)     = [func_rand_fangx()];%             
       Infor_People(i,5)       = 2;% ˵ı  
       x(end+1)         = c;
       y(end+1)         = r;
       end       
       if i <= N1+N2+N3 & i > N1+N2
       Map_People(r,c) = 1;
       Infor_People(i,1:2)     = [c,r];
       Infor_People(i,3:4)     = [func_rand_fangx()];%             
       Infor_People(i,5)       = 3;% ˵ı  
       x(end+1)          = c;
       y(end+1)          = r;
       end        
    end 
end
%******************************************************************************************************
ind1 = 0;
ind2 = 0;
ind3 = 0;
for i = 1:Num_People
    if Infor_People(i,5) == 1
       ind1 = ind1 + 1;
%        plot(Infor_People(i,1),Infor_People(i,2),'ko');
       Infor_People_Saved1(ind1,:) = Infor_People(i,1:2);
       Ind_People_Saved1(ind1)     = Infor_People(i,5);
    end
    
    if Infor_People(i,5) == 2
       ind2 = ind2 + 1;
%        plot(Infor_People(i,1),Infor_People(i,2),'k^');
       Infor_People_Saved2(ind2,:) = Infor_People(i,1:2);
       Ind_People_Saved2(ind2)     = Infor_People(i,5);       
    end
    
    if Infor_People(i,5) == 3
       ind3 = ind3 + 1;
%        plot(Infor_People(i,1),Infor_People(i,2),'ks');
       Infor_People_Saved3(ind3,:) = Infor_People(i,1:2);
       Ind_People_Saved3(ind3)     = Infor_People(i,5);       
    end   
%     hold on;
end
%*******
16_019m

  

4.本算法原理
在超市这类大型商业建筑中,火灾发生后,烟雾会在短时间内迅速扩散。烟雾的传播主要受到热量释放、空气流动(包括自然对流、强制通风)、建筑布局(如走廊、隔断、开口)以及材料燃烧特性的影响。烟雾不仅阻碍视线,而且含有有毒有害物质,对被困人员构成生命威胁。烟雾蔓延可以通过火灾动力学模型(如热层流方程、组分传输方程)进行模拟分析,如使用FDS(Fire Dynamics Simulator)软件。

基本烟雾扩散模型都是基于流体方程建模的:

 

并考虑室内风速为0,我们可以将模型做如下的修改,那么模型可以简化为如下的公式:

 

关于人员疏散部分的要求,主要分为两个部分进行讨论:

·当人员在正常区域:

疏散人员的视野范围是个参数值,初值设为10个单位,并且参数值可改。

出口在人员的视野范围内时,该元胞选择朝向引导点的方向运动。出口不在人员的视野范围内时,作随机运动,8个方向的运动概率相等。引导点可设在过道中间等地方,出口都是引导点。

当多个元胞同时竞争同一个格点时,每个元胞以50%等概率进入,没有进入的保持静止。

运动人员以5%概率静止,即下一时间步不动。

每个时间步为1/12s,可设置3种移动速度的人员,分别设置为3种颜色,速度分别为2m/s,1.5m/s,1m/s,即每3、4、6个时间步运动一次。

开始疏散时所有人员是以正态分布的概率开始运动,而不是同时运动。

·当人员在烟雾区域:

人员以80%概率躲避烟气(即20%概率进入烟气中)

进入烟气后,前360个时间步(30s)朝引导点运动,但速度减小,2m/s的减小为1.5m/s,1.5m/s的减小为1.0m/s,1.0m/s的速度不变。不在烟气中后,速度恢复以前。

 

标签:仿真,str2num,string,People,GUI,get,handles,matlab,Infor
From: https://www.cnblogs.com/softcodes/p/18594008

相关文章

  • 基于Multisim四路抢答器电路的设计(含仿真和报告)
    【全套资料.zip】四路抢答器电路设计Multisim仿真设计数字电子技术文章目录功能一、Multisim仿真源文件资料下载【Multisim仿真+报告+讲解视频.zip】功能1.主持人按键控制复位。2.抢答器按钮:四个按键,每个按键对应—个参赛选手。3.LED灯:四个LED灯,每个灯对应一......
  • 基于Multisim三极管放大器增益放大倍数测量电路的设计(含仿真和报告)
    【全套资料.zip】三极管放大器增益放大倍数测量电路设计Multisim仿真设计数字电子技术文章目录功能一、Multisim仿真源文件资料下载【Multisim仿真+报告+讲解视频.zip】功能三极管放大器增益放大倍数测量电路,数码管显示放大倍数。提示:以下仿真可以完美运行,全套......
  • CoaXPress Over Fiber Bridge Host IP Core 仿真
     CoaXPressOverFiber BridgeHost低速链接用于传输CXP的low_speed_uplink数据LS传输数据组织这里把N路拼成1路,默认支持1-4路就可以,下面的描述是4-1的场景。COF把CXP的K码和数据都当成数据来传输,要对数据重新打包。LSIDLE传输示例Lowspeeduplink链路为例说明......
  • Advent of Code 2022 solution [Mathematica/Scala/MATLAB/Julia/JavaScript]
    目录简介试题地址Day1Part1andPart2Day2Part1andPart2Day3Part1andPart2Day4Part1andPart2Day5Part1andPart2Day6Part1andPart2Day7Part1andPart2Day8Part1andPart2Day9Part1andPart2Day10Part1andPart2Day11Part1andPart......
  • Java基础之GUI:探索图形化界面编程的魅力
    一、引言Java的图形用户界面(GUI)编程为开发者提供了丰富的工具和组件,使得创建直观、交互性强的应用程序变得更加容易。本文将深入介绍Java基础中的GUI,包括其概念、组件、布局管理器以及事件处理等方面的知识。Java的图形用户界面(GUI)是一种通过图形化的方式与用户进行交......
  • 基于Matlab三点雨流计数法的载荷时间历程分析与循环疲劳评估
    随着工程领域中机械设备和结构系统的复杂性不断增加,疲劳分析成为评估其可靠性与使用寿命的关键环节。载荷时间历程数据在疲劳分析中扮演着重要角色,而雨流计数法作为经典的循环计数方法,能够有效地从载荷时间历程中提取疲劳载荷循环信息。本研究基于Matlab平台,提出了一种改进的三......
  • 基于Matlab的饮料瓶颜色与形状识别系统的研究与实现
    系统通过图像处理技术对饮料瓶进行颜色和形状的自动识别。首先,系统对输入的图像进行预处理,包括图像的灰度化和二值化处理。接着,系统通过颜色识别算法(recgnizeColor.m)提取瓶子的颜色特征,并通过形状识别算法(recgnizeShape.m)分析瓶子的形状特征。系统最终能够准确地识别出饮料瓶的......
  • Day43--GUI编程简介
    Day43--GUI编程简介GUI是GraphicalUserInterface的缩写,即图形用户界面。它是指采用图形方式显示的计算机操作用户界面,使用户可以通过视觉元素如窗口、图标、菜单等直观地与计算机进行交互,而无需记忆和输入复杂的命令行指令。GUI的定义和组成定义:GUI是一种人与计算机通信的界......
  • 轴承寿命预测 | 基于BP神经网络的轴承寿命预测附matlab完整代码
    轴承寿命预测|基于BP神经网络的轴承寿命预测附matlab完整代码数据划分:将数据集划分为训练集、验证集和测试集,通常采用时间序列数据的方式进行划分。构建模型:设计BP模型结构,确保模型能够有效学习时间序列数据的特征。模型训练:使用训练集对BP模型进行训练,优化模型参数以......
  • 大功率台式机CPU一体式混合冷却散热器结构热设计仿真分析案例实操与理论计算
     ......