Я использую функцию dlib
find_min_global
, алгоритм оптимизации, который помогает находить значения, минимизирующие вывод функции.Например,
import dlib
def holder_table(x0,x1):
return -abs(sin(x0)*cos(x1)*exp(abs(1-sqrt(x0*x0+x1*x1)/pi)))
x,y = dlib.find_min_global(holder_table,
[-10,-10], # Lower bound constraints on x0 and x1 respectively
[10,10], # Upper bound constraints on x0 and x1 respectively
80) # The number of times find_min_global() will call holder_table()
Здесь функция holder_table
возвращает значение, которое необходимо минимизировать для различных значений x0
и x1
.
Здесь функция holder_table
принимает только значения, которые необходимо оптимизировать, то есть x0
и x1
.Но функция, которую я хочу использовать с функцией dlib
, занимает больше, чем x0
и x1
.Определение функции выглядит так:
def holder_table(a,b,x0,x1):
return -abs(sin(b*x0/a)*cos(x1)*exp(abs(1-sqrt(x0*x0+x1*x1)/pi)))
Значения a, b
не являются фиксированными и являются выходами другой функции.Теперь я могу напрямую вызывать функцию return a, b
внутри holder_table
, но я не хочу в конечном итоге пересчитывать их, потому что каждый раз, когда вызывается holder_table
, a, b
пересчитывается и процесс занимает много времени.,
Как передать a, b
в функцию holder_table
?