pedestiran updated

This commit is contained in:
Sandro Zimmermann 2025-12-18 10:23:01 +01:00
parent 37471e04b2
commit 14b94f9016

View File

@ -15,7 +15,7 @@ CELL_OBS = -1 # cell state: obstacle
EXIT_X = GRIDSIZE_X+1 # x-coordinate of exit EXIT_X = GRIDSIZE_X+1 # x-coordinate of exit
EXIT_Y = int(GRIDSIZE_Y/2) # y-coordinate of exit EXIT_Y = int(GRIDSIZE_Y/2) # y-coordinate of exit
VIS_PAUSE = 0.2 # time [s] between two visual updates VIS_PAUSE = 2 # time [s] between two visual updates
VIS_STEPS = 1 # stride [steps] between two visual updates VIS_STEPS = 1 # stride [steps] between two visual updates
# count pedestrians left in domain # count pedestrians left in domain
@ -46,6 +46,7 @@ def comp_density(grid):
# state transition t -> t + dt # state transition t -> t + dt
def update(old, new): def update(old, new):
#print(count_peds(old)) #print(count_peds(old))
for x in range(1, GRIDSIZE_X+1): for x in range(1, GRIDSIZE_X+1):
for y in range(1, GRIDSIZE_Y+1): for y in range(1, GRIDSIZE_Y+1):
@ -56,8 +57,6 @@ def update(old, new):
delta_x = EXIT_X - x delta_x = EXIT_X - x
delta_y = EXIT_Y - y delta_y = EXIT_Y - y
if delta_x != 0 and delta_y != 0:
#terrain = dict(N = {}, NE = {}, E = {}, SE = {}, S = {}, SW = {}, W = {}, NW = {}) #terrain = dict(N = {}, NE = {}, E = {}, SE = {}, S = {}, SW = {}, W = {}, NW = {})
terrain = dict(N = {}, E = {}, S = {}, W = {}) terrain = dict(N = {}, E = {}, S = {}, W = {})
@ -76,22 +75,31 @@ def update(old, new):
min = np.inf min = np.inf
jump_to = None jump_to = None
'''for key in terrain: for key in terrain:
if terrain[key]["cell"] == CELL_EMP: if terrain[key]["cell"] == CELL_EMP:
if terrain[key]["vector"] < min: if terrain[key]["vector"] < min:
min = terrain[key]["vector"] min = terrain[key]["vector"]
jump_to = terrain[key]''' jump_to = terrain[key]
for key in terrain: '''for key in terrain:
if terrain[key]["vector"] < min: if terrain[key]["vector"] < min:
min = terrain[key]["vector"] min = terrain[key]["vector"]
jump_to = terrain[key] jump_to = terrain[key]'''
print(jump_to) print(jump_to)
if jump_to != None:
if jump_to != None and jump_to["cell"] == CELL_EMP:
new[jump_to["x"], jump_to["y"]] = CELL_PED new[jump_to["x"], jump_to["y"]] = CELL_PED
old[x,y] = CELL_PED old[x,y] = CELL_OBS
else: else:
new[x,y] = old[x,y] new[x,y] = old[x,y]
else:
'''old[x,y] = CELL_OBS
print(delta_x)
print(delta_y)
print("")
print(x)
print(y)
print(old[x,y])
print(new[x,y])
print("")'''
def set_terrain(grid, x, y): def set_terrain(grid, x, y):
cell = grid[x,y] cell = grid[x,y]
@ -128,9 +136,9 @@ plt.pause(VIS_PAUSE)
while count_peds(old) > 0 and time < MAX_TIME: while count_peds(old) > 0 and time < MAX_TIME:
new[1:GRIDSIZE_X+1,1:GRIDSIZE_Y+1] = CELL_EMP new[1:GRIDSIZE_X+1,1:GRIDSIZE_Y+1] = CELL_EMP
update(old, new) update(old, new)
new[EXIT_X,EXIT_Y-1] = CELL_EMP # clear exit new[EXIT_X,EXIT_Y-1] = CELL_OBS # clear exit
new[EXIT_X,EXIT_Y] = CELL_EMP # clear exit new[EXIT_X,EXIT_Y] = CELL_EMP # clear exit
new[EXIT_X,EXIT_Y+1] = CELL_EMP # clear exit new[EXIT_X,EXIT_Y+1] = CELL_OBS # clear exit
old = new.copy() old = new.copy()
numpeds = count_peds(old) numpeds = count_peds(old)
dens.append(comp_density(old)) dens.append(comp_density(old))