Я пытаюсь решить задачу оптимизации, состоящую в том, чтобы найти самую дальнюю точку из списка точек.Скажем, в пределах допустимого региона найдите оптимальный x
, чтобы расстояние D(x, c1) + D(x, c2) + ... D(x, cn)
было максимальным.Мне подсказали решить ее стохастическим градиентным спуском, поэтому я выполнил функцию расстояния, как показано ниже:
def distance(loc_x, loc_c):
"""
arg:
loc_x: 1x2 array: decision variable
loc_c: 662x2 array: locations x needs to be away as much as possible
"""
return np.sum(np.power(np.sum(np.power(loc_x - loc_c, 2), axis=1), 1/2))
Но я не знаю, как действовать программно.Математически я знаю, что хочу вычислить производную для расстояния и получить x_opt
, когда derivative = 0