Как изучить различные значения параметров в Python, чтобы максимизировать значение, возвращаемое функцией

#optimization #parameters

Вопрос:

Если у меня есть функция, которая возвращает значение с плавающей запятой, представляющее, например, прибыль, полученную от торговли акциями (хотя я сталкивался с такой проблемой при выполнении различных задач), и прибыль варьируется в зависимости от различных параметров, передаваемых функции, существует ли библиотека Python, которую можно использовать для эффективного изучения пространства параметров?

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

Я слышал о MCMC и идее пройти ряд шагов для изучения параметров, где могут быть предприняты попытки экстремальных значений, и можно вернуться к значениям, которые работают лучше, но я понятия не имею, применимо ли это здесь, поскольку MCMC, по — видимому, касается вероятностей (и байесовской статистики) — я ищу что-то довольно простое, если оно существует.

Я представляю себе что-то вроде приведенного ниже, где параметры имеют диапазон возможных значений, и есть функция, которая проверяет значения параметров более эффективным способом, чем просто пробовать каждую отдельную комбинацию. Возможно ли это с помощью достаточно простой библиотеки Python?

 # define a range of possible values for parameters
a = [2.0,2.1,2.2,2.3,2.4]
b = [1.2,1.3,2.4]
c = [float(x) for x in range(1,1000)]
d = [112.0,113.0,114.0]
e = [3.0,3.1]
f = [9.0,10.0,11.0,12.0]
g = [float(x) for x in range(5,36)]


def profit(a,b,c,d,e,f,g):
    # carry out calculations using parameters
    return profit

n_steps = 1000

def optimize(n_steps,a,b,c,d,e,f,g):
    for x in range(0,n_steps):
        # try profit() using different values within the range of each parameter a-g in attempt to find those that produce largest profit
        # i.e. for each step in n_step call profit() with one float value for each of a-g
    return a,b,c,d,e,f,g # return set of parameters producing largest profit within n_steps