You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
elseif sum(is_there_a_man) == n_min_pots || sum(is_there_a_wall) == n_min_pots %pokud se nelze pohnout z duvodu preplnenosti nebo sten do vrstvy s nejnizsim potencialem
47
+
sec_min_pot = min(neighborhood(:,5))+1;
48
+
%nalezeni radku s druhou minimální hodnotou potencialu
else %aktualizace prazdne bunky je zalozena na tom, ze se tam prednostne tlaci spis lidi s vetsim potencialem a az potom ti na stejne urovni
75
+
if isnan(neighborhood(5,5)) %5. radek pole neighborhood odpovida bodu, ktery prave aktualizujeme, 5. sloupec pokud ma hodnotu NAN znamena, ze je tam zed/sloup
elseif sum(is_there_a_man) == 0 %pokud ani z druheho nejvyssiho potencialu neni mozne sejit niz
123
+
thrd_max_pot = max(neighborhood(:,5))-2;
124
+
if thrd_max_pot >= neighborhood(5,5) %vezmu jeste treti mozny potencial, nesmi ale byt nizsi nez ten, ktery prislusi prazdne bunce, kterou se snazim aktualizovat
125
+
%nalezeni radku s treti nejvyssi hodnotou potencialu
% lze vytvorit nekolik ruznych sad pocatecnich parametru, treba fce
9
+
% 'params1.m', 'params2.m' atd)
10
+
11
+
params = parameters(4);
12
+
P =params.P;
13
+
Q =params.Q;
14
+
loc_of_exit =params.exit;
15
+
mtx_loc_of_pillars =params.pillars;
16
+
num_of_peds =params.pedestrians;
17
+
18
+
%[num_of_peds, P, Q, mtx_loc_of_pillars, loc_of_exit, animation_show] = params();
19
+
%[num_of_peds, P, Q, mtx_loc_of_pillars, loc_of_exit, animation_show] = params_big_room_full(); % pozor: Dijkstra bezi cca 4min na tak velke mape
20
+
%[num_of_peds, P, Q, mtx_loc_of_pillars, loc_of_exit, animation_show] = params_big_room_empty(); % pozor: Dijkstra bezi cca 4min na tak velke mape
21
+
22
+
animation_show =true;
23
+
%%Nastaveni mapy, rozmisteni sloupu a sten
24
+
walls = double(isnan(get_map (P, Q, loc_of_exit, mtx_loc_of_pillars))); % AG: melo by to vratit mapu, kde na vsech "nevkrocitelnych" polich je 1, a na volnych 0
25
+
% nevim, kde presne se to pouzije, ale jestli je potreba, tak tu je.
26
+
27
+
%%-------------------------- simulace FFM
28
+
n_simulations =30; % počet simulácií
29
+
iterations = ones(n_simulations, 1); % počet krokov do úplnej evakuácie miestnosti
30
+
rho = []; % prázdne pole pre ukladanie hustôt
31
+
32
+
rng(1) % pevný seed
33
+
34
+
for i =1:n_simulations
35
+
%%Vypocet potencialu na mape (fce 'get_grad_field.m' od AG)
36
+
tStart =tic;
37
+
levels = get_grad_field(P, Q, loc_of_exit, mtx_loc_of_pillars); % Dijkstra runs inside
38
+
tEnd = toc(tStart)
39
+
'log: get_grad_field.m successfully done'
40
+
41
+
%%Umisteni chodcu do mistnosti (fce 'get_pedestrians.m' od SM)
42
+
position_people = get_pedestrians(P, Q, mtx_loc_of_pillars, num_of_peds);
43
+
'log: get_pedestrians.m successfully done'
44
+
45
+
%%Pomocna matice pro vykresleni polohy exitu zelenou barvou
46
+
exit_matrix =0*position_people; %stejne rozmery jako matice position people
47
+
exit_matrix(loc_of_exit(1),loc_of_exit(2)) =1;
48
+
49
+
while (sum(sum(position_people)) ~=0)
50
+
[row_num,col_num] = size(position_people);
51
+
%budu se snazit generovat cisla pouze z te zaplnene casti, abych to
52
+
%urychlila
53
+
first_nonempty_col =1;
54
+
while sum(position_people(:,first_nonempty_col)) ==0&& (first_nonempty_col+1) <= (col_num-1)
55
+
first_nonempty_col =first_nonempty_col+1;
56
+
end
57
+
58
+
%ind_row a ind_col budou indexy bunky, kterou prave aktualizuju, nesmi
0 commit comments