несколько границ для scipy.optimize.minimize - PullRequest
0 голосов
/ 03 июля 2018

В scipy.optimize.minimize

w0 = np.ones(assets_num) / assets_num   #assets_num is an integer
bnds_1 = tuple((0.25, 1) for w in w0)
bnds_2 = tuple((0, 0.00001) for w in w0)
opt = minimize(obj_func, w0, methods='SLSQP', bounds=(bnds_1, bnds_2)) 

Я надеюсь, что w будет лежать в (0, 0,00001) U (0,025, 1), что означает, что я допускаю, чтобы он был равен нулю (приблизительно), но если он больше нуля, нижняя граница для него должна быть 0,025 .

Так, как я могу пересмотреть границы, чтобы соответствовать требованию? Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 03 июля 2018

Решатели в SciPy не могут справиться с таким ограничением. Они ожидают, что выполнимое решение удовлетворит все ограничения. То есть предполагается, что вы хотите решить bnds_1 и bnds_2. Нет способа указать bnds_1 или bnds_2. (И для этого потребуется добавить какую-то дискретную оптимизацию в решатели.)

Вы можете решить эту проблему дважды, один раз с помощью bnds_1 и снова с помощью bnds_2. Затем выберите лучшее из двух решений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...