Минимизация функции Python, которая имеет массив NumPy в качестве аргумента - PullRequest
5 голосов
/ 23 октября 2011

Я новичок в python, и у меня возникла следующая проблема: я пытаюсь свести к минимуму функцию python, у которой в качестве одного из аргументов используется массив numpy Когда я использую scipy.optimize.fmin, он превращает мой массив в список (в результате чего функция не может оценить). Существует ли функция оптимизации, которая принимает числовые массивы в качестве аргументов функции?

Заранее спасибо!

-MB

Редактировать: вот пример того, о чем я говорю, любезно предоставлено @EOL:

import scipy.optimize as optimize
import numpy as np

def rosen(x):
    print x
    x=x[0]
    """The Rosenbrock function"""
    return sum(100.0*(x[1:]-x[:-1]**2.0)**2.0 + (1-x[:-1])**2.0)
x0 = np.array([[1.3, 0.7, 0.8, 1.9, 1.2]])
xopt = optimize.fmin(rosen, x0, xtol=1e-8, disp=True)
#[ 1.3  0.7  0.8  1.9  1.2]
#(note that this used to be a numpy array of length 0, 
#now it's "lost" a set of brackets")

1 Ответ

4 голосов
/ 23 октября 2011

Вот пример использования optimize.fmin из учебника scipy :

import scipy.optimize as optimize
def rosen(x):
    """The Rosenbrock function"""
    return sum(100.0*(x[1:]-x[:-1]**2.0)**2.0 + (1-x[:-1])**2.0)
x0 = [1.3, 0.7, 0.8, 1.9, 1.2]
xopt = optimize.fmin(rosen, x0, xtol=1e-8, disp=True)
# Optimization terminated successfully.
#          Current function value: 0.000000
#          Iterations: 339
#          Function evaluations: 571
print(xopt)
# [ 1.  1.  1.  1.  1.]

Это помогает? Если нет, можете ли вы изменить этот пример, чтобы показать, что превращается в список?

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