Странная работа процедуры минимизации python

Работая с 'scipy.optimize.minimize', у меня странное использование процедуры минимизации. Ниже приведен тестовый код, показывающий мои результаты:

import numpy as np
import pandas as pd
from scipy.optimize import minimize

def SES(good, a, h):
  print('good is : {}'.format(good))
  print('a is : {}'.format(a))
  print('h is : {}'.format(h))
  return 0

good = [1,2,3,4,5,6]
a = minimize(SES, x0 = good, args=(0.1, 1), method = 'L-BFGS-B', bounds = [[0.1, 0.3]]*len(good))
 

Я ожидаю, что функция SES будет печатать для «хорошего» параметра значения [1,2,3,4,5,6]. Но я получаю следующий вывод

good is : [0.3 0.3 0.3 0.3 0.3 0.3]
a is : 0.1
h is : 1

Если я удалю параметр границ, я получу вывод, как и ожидал:

a = minimize(SES, x0 = good, args=(0.1, 1), method = 'L-BFGS-B')

good is : [1. 2. 3. 4. 5. 6.]
a is : 0.1
h is : 1

Не могли бы вы объяснить, что я делаю неправильно...


person Roman Kazmin    schedule 27.06.2020    source источник


Ответы (1)


Кажется, я знаю, где проблема. Добро выходит за пределы, поэтому у меня такой результат..

person Mikola    schedule 27.06.2020