COByLA не прекращается - PullRequest
       1

COByLA не прекращается

0 голосов
/ 20 февраля 2019

У меня есть вызов функции к cobyla, который не завершается.Я хочу найти локальный минимум некоторого (многовариантного) многочлена в заданном ортанте.Наименьший пример, который я мог бы воспроизвести, следующий:

import numpy as np
import scipy.optimize

A = np.array([[ 0,  0,  0,  0,  0,  0,  0,  2,  2,  2,  2,  6, 12,  4,  2,  2,  2,  2,  2,  2,  2,  2,  2,  3,  2,  3,  3,  3,  1,  2],
              [ 0,  0,  2,  2,  2,  4, 10,  0,  4,  4, 12,  4,  0,  2,  4,  0,  3,  4,  3,  3,  2,  3,  3,  4,  3,  2,  3,  3,  4,  3],
              [ 0,  4,  0,  6, 10, 10,  4,  4,  4,  8,  2,  0,  4,  2,  4,  2,  4,  4,  3,  4,  3,  5,  3,  4,  4,  4,  3,  4,  4,  4],
              [ 0,  0,  6,  0,  0,  6,  2, 12, 10,  0,  2,  8,  0,  8,  4,  2,  5,  3,  5,  3,  3,  4,  4,  4,  2,  3,  4,  4,  3,  4]])
b = np.array([ 3.81330727e+00,  1.30927853e+00,  1.89829563e+00,  1.55301205e+00,  2.05509780e+00,  4.72913144e+00,  8.64125139e+00,  6.78452109e+00,  1.97505381e+01,  8.10184002e+00,  8.56817472e+00, 1.76581791e+00,  6.90448362e+00,  8.44460914e-02,  1.52023325e+00, -1.97710183e+00, -1.66933212e-01, -2.71655065e-01, -2.03262146e+00, -6.74143747e-01, -1.53382538e+00, -9.94362458e-01, 1.86147837e-01, -6.23838626e-01,  1.04835921e+00,  3.49272629e-01, -6.47927068e-01, -4.69780766e-01,  1.48099164e-02,  3.61251102e-01])

x0 = np.array([  3.75422451,  -4.13253284, -46.27451838, -29.48396097])

def f(x):
  return np.dot(np.prod(np.power(x,A.T),axis = 1),b)

res = scipy.optimize.fmin_cobyla(f, x0, lambda x: x*np.array([1,-1,-1,-1]), disp = 3)

Тогда последняя строка кода не заканчивается.Даже при максимальном уровне отображения я не получаю ни одной строки вывода.Хуже того, Ctrl+C не завершает вычисление в IPython (я полагаю, код застрял в Fortran).

Как мне избежать этой проблемы?

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