目录

1.程序功能描述

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

3.核心程序

4.本算法原理

5.完整程序


1.程序功能描述

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

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

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

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

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

MATLAB2022A版本运行

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

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

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

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

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

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)软件。

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

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

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

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

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

·当人员在正常区域:

疏散人员的视野范围是个参数值,初值设为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的速度不变。不在烟气中后,速度恢复以前。

5.完整程序

VVV

04-25 19:02