невозможно импортировать имя NonlinearConstraint - PullRequest
0 голосов
/ 14 мая 2018

Я пытаюсь запустить пример оптимизации с нелинейными ограничениями, показанными здесь

https://docs.scipy.org/doc/scipy/reference/tutorial/optimize.html

>>> def cons_f(x):
...     return [x[0]**2 + x[1], x[0]**2 - x[1]]
>>> def cons_J(x):
...     return [[2*x[0], 1], [2*x[0], -1]]
>>> def cons_H(x, v):
...     return v[0]*np.array([[2, 0], [0, 0]]) + v[1]*np.array([[2, 0], [0, 0]])
>>> from scipy.optimize import NonlinearConstraint
>>> nonlinear_constraint = NonlinearConstraint(cons_f, -np.inf, 1, jac=cons_J, hess=cons_H)

Но когда я пытаюсь импортировать NonlinearConstraint, это то, что яget

ImportError: cannot import name NonlinearConstraint 

У меня работает scipy v.1.0.0

>>> import scipy
>>> print scipy.__version__
1.0.0

Есть предложения?Заранее благодарен за помощь

1 Ответ

0 голосов
/ 14 мая 2018

Вам потребуется scipy >= 1.1 или установка на основе мастер-ветки!

Так как 1.1 был выпущен недавно (05.05.18), есть вероятность для бинарных сборок (немного зависит от того, как вы используете scipy).

Сравнить 1.1 оптимизировать / init .py :

...
from ._lsq import least_squares, lsq_linear
from ._constraints import (NonlinearConstraint,
                           LinearConstraint,
                           Bounds)
from ._hessian_update_strategy import HessianUpdateStrategy, BFGS, SR1

__all__ = [s for s in dir() if not s.startswith('_')]
...

с оптимизацией 1.0.1 / init .py :

...
from ._lsq import least_squares, lsq_linear

__all__ = [s for s in dir() if not s.startswith('_')]
...

Дополнительные сведения доступны в 1.1 тексте выпуска :

scipy.optimize улучшений

Метод trust-constr был добавлен в scipy.optimize.minimize. метод переключается между двумя реализациями в зависимости от проблемы определение. Для проблем, связанных с равенством, это реализация решатель последовательного квадратичного программирования в области доверия и, когда налагаются ограничения неравенства, он переключается на область доверия метод внутренней точки. Оба метода подходят для крупномасштабных проблемы. Квазиньютоновские варианты BFGS и SR1 были реализованы и могут быть используется для аппроксимации производных второго порядка для этого нового метода. Также, конечно-разности могут быть использованы для аппроксимации первого порядка или производные второго порядка.

, который на самом деле решатель вводит эти абстракции.

Кроме того, optimize/_constraints.py не существует в 1.01 .

...