Я использую scipy.optimize для:
- минимизировать целевую функцию
objective_func
- по большому количеству переменных
x
(5 - 15 ГБ)
- по методу
trust-constr
.
Как заставить scipy.optimize.minimize
напрямую модифицировать x
без создания копии?
Тока, кажется, этого не происходит.
Спасибо.
Тест:
Ограничения равенства опущены для простоты.
import scipy.optimize as so
import numpy as np
def objective_func(x):
return np.sum(x**2)
x = np.arange(3)
result = so.minimize(objective_func, x,
method='trust-constr')
print("result:", result.x)
print("delta:", x - result.x)
Результат:
result: [-1.89895546e-11 -1.89895756e-11 -1.89895364e-11]
delta: [1.89895546e-11 1.00000000e+00 2.00000000e+00]
Поскольку дельта не является всеми нулями, so.minimize
не изменяет x
на месте.
Вероятно, создается внутренняя копия x
.