Я ищу метод оптимизации в scipy, который позволил бы мне минимизировать объектную функцию f (x, y) (возвращает вектор) с учетом ограничения g (x, y) <0.1 и дополнительных границ для x и y. </p>
Я попытался решить свою проблему с помощью scipy.optimize.least_squares, scipy.optimize.leastsq и scipy.optimize.minimize.Проблема состоит в том, что leastsq и less_squares позволяют объектной функции быть не скалярной, но не дает мне возможности реализовать ограничение (только границы).С другой стороны, минимизация дает мне возможность реализовать как ограничение, так и границы, но f (x, y) должен возвращать скаляр.Следовательно, я ищу решение, которое сочетает в себе оба.Кто-нибудь знает, существует ли что-то подобное?
Функция, которую я хочу минимизировать:
def my_cost(p,f_noise):
x,y = p[0], p[1]
f = #some function that returns a 3x1 array
return (f - fnoise)**2
Я сделал это с помощью метода less_squares.
opti.least_squares(my_cost, p0[:], args = (f_noise,),gtol=1e-2, bounds=bounds)
Но здесьУ меня проблема в том, что я не могу ограничить переменные в p.Мне нужно ограничить p так, чтобы он удовлетворял
def constraint(p)
x = p[0]
return fy(x) - y <= 0.1 #variable y therefore becomes a function of variable x
Чтобы реализовать ограничение, я протестировал функцию минимизации Сципи
opti.minimize(my_cost, p0[:], args = (f_noise,), bounds = bounds, constraints={'type': 'eq', 'fun': constraint})
Но здесь я не могу найти способ разрешитьmy_cost и f_noise - массивы 3x1.
За любую помощь я очень благодарен!Приветствия за ваше время!