Как я мог установить начальную и конечную точки случайным образом в сетке, которая генерирует случайные препятствия? - PullRequest
0 голосов
/ 10 октября 2019

Я построил grid, который генерирует random obstacles для алгоритма поиска пути, но с fixed starting and ending points, как показано в моем фрагменте ниже:

import random
import numpy as np

#grid format
# 0 = navigable space
# 1 = occupied space

x = [[random.uniform(0,1) for i in range(50)]for j in range(50)]
grid = np.array([[0 for i in range(len(x[0]))]for j in range(len(x))])

for i in range(len(x)):
    for j in range(len(x[0])):
        if x[i][j] <= 0.7:
            grid[i][j] = 0
        else:
            grid[i][j] = 1


init = [5,5]       #Start location 
goal = [45,45]     #Our goal 

# clear starting and end point of potential obstacles
def clear_grid(grid, x, y):
    if x != 0 and y != 0:
        grid[x-1:x+2,y-1:y+2]=0
    elif x == 0 and y != 0:
        grid[x:x+2,y-1:y+2]=0
    elif x != 0 and y == 0:
        grid[x-1:x+2,y:y+2]=0
    elif x ==0 and y == 0:
        grid[x:x+2,y:y+2]=0

clear_grid(grid, init[0], init[1])
clear_grid(grid, goal[0], goal[1])

Мне нужно генерировать также starting and ending points randomly каждый разЯ запускаю код, а не исправляю их. Как я мог это сделать? Любая помощь, пожалуйста?

1 Ответ

1 голос
/ 10 октября 2019

Заменить,

init = [5,5]       #Start location 
goal = [45,45]     #Our goal 

на,

init = np.random.randint(0, high = 49, size = 2)
goal = np.random.randint(0, high = 49, size = 2)

Предполагая, что ваша сетка идет от 0-49 на каждой оси. Лично я бы добавил переменные размера сетки, i_length & j_length

РЕДАКТИРОВАТЬ # 1

i_length = 50
j_length = 50
x = [[random.uniform(0,1) for i in range(i_length)]for j in range(j_length)]
grid = np.array([[0 for i in range(i_length)]for j in range(j_length)])
...