【问题标题】:How could I set the staring and ending points randomly in a grid that generates random obstacles?如何在生成随机障碍物的网格中随机设置起始点和结束点?
【发布时间】:2019-10-10 07:20:36
【问题描述】:

我构建了一个grid,它为寻路算法生成random obstacles,但使用fixed starting and ending points,如下面的sn-p所示:

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,而不是修复它们。我怎么能做到?请问有什么帮助吗?

【问题讨论】:

    标签: python-3.x numpy random


    【解决方案1】:

    替换,

    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)])
    

    【讨论】:

    • 是的,它很好用,但是在您允许之后,0、49 和 2 是什么意思?我怎么能做到这个 i_length 和 j_length?
    • 0 to 49ij 方向上的网格长度,2 是您要求np.random.randint() 返回的整数个数,请参阅docs here。另见编辑回答
    • 是的,考虑到您已经编写的代码,使用 print("init: ", init, " goal: ", goal) 非常基本的东西
    • 非常感谢亲爱的。 :) 原谅我,从大量阅读中我觉得我的大脑无法正常工作。
    猜你喜欢
    • 2020-03-22
    • 1970-01-01
    • 1970-01-01
    • 2015-05-08
    • 1970-01-01
    • 1970-01-01
    • 2023-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多