yandexdataschool / satellite-collision-avoidance

RL for optimal satellite collision avoidance maneuvres
26 stars 7 forks source link

Оптимизация алгоритма поиска ближайших объектов #7

Closed bamasa closed 6 years ago

bamasa commented 6 years ago

Есть следующее предложение. Сейчас мы считаем reward и check_collision вычисляя Евклидово расстояние до всех объектов и беря минимальные. Используется следующая функция:

def euclidean_distance(xyz_main, xyz_other, rev_sort=True):
    """ Return array of (reverse sorted) Euclidean distances between main object and other
    Args:
        xyz_main: np.array shape (1, 3) - coordinates of main object
        xyz_other: np.array shape (n_objects, 3) - coordinates of other object
    Returns:
        np.array shape (n_objects)
    """
    # distances array
    distances = np.sum(
        (xyz_main - xyz_other) ** 2,
        axis=1) ** 0.5
    if rev_sort:
        distances = np.sort(distances)[::-1]
    return distances

Просчитывать все объекты долго. Предлагаю определить опасную область, и считать расстояние только для объектов в этой области. Тогда мы сможем делать это не сразу по всем координатам, а поочередно. Такой алгоритм явно быстрее и простой (идея из kd-дерева).

В связи с этим вопрос - какого размера, примерно, должна быть такая область и есть ли какие-то замечания по предложенному методу?

kazeevn commented 6 years ago

Предлагаю отложить. Пока планируется <10 объектов, расчёт расстояний скорее всего будет занимать небольшую часть от общего времени (можно проверить профайлером!), плюс я не уверен, что при таком числе объектов накладные расходы на сложную структуру данных будут того стоить.

kazeevn commented 6 years ago

Решили отложить много объектов.

bamasa commented 6 years ago

Решили отложить много объектов.

@kazeevn , у нас будет один debris?

kazeevn commented 6 years ago

Пока планируется <10 объектов, расчёт расстояний скорее всего будет занимать небольшую часть от общего времени (можно проверить профайлером!), плюс я не уверен, что при таком числе объектов накладные расходы на сложную структуру данных будут того стоить.