Сделать scipy.optimize.minimize изменить переменные на месте - PullRequest
0 голосов
/ 08 января 2019

Я использую 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.

...