Оптимизация функций со слишком большим количеством входов - PullRequest
0 голосов
/ 20 октября 2019

Я натыкаюсь на следующую проблему, когда хочу оптимизировать функцию. Некоторые пакеты, например, пакет https://pythonhosted.org/pyswarm/, в конце используют оператор

from pyswarm import pso
...
def func(x):
    x1 = x[0]
    x2 = x[1]
    return x1**4 - 2*x2*x1**2 + x2**2 + x1**2 - 2*x1 + 5
lb = [-3, -40]
ub = [4,  10]
xopt, fopt = pso(func, lb, ub,maxiter=500)

Здесь lb и ub являются l ower b фунт и u pper b фунт параметра.

В этом случае x - это список параметров, которые необходимо оптимизировать. и pso принимает входные данные функции func в качестве оптимизируемых параметров.

Иногда я хочу оптимизировать такую ​​функцию, как

def func(x,a):
    a1 = a[0]
    a2 = a[1]

    formula = a1*x + a2

    return formula 

, где x - это данные x, а a - параметры для оптимизации. Как мне создать функцию

func(x,a) -> func(a)

, где я «крадусь» x внутри?

Проблема в том, что функция func (x, a) идет как func в

xopt, fopt = pso(func, lb, ub,maxiter=500)

и, следовательно, не дает возможности указать, каким должен быть ввод. Как решить проблему другим способом?

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