Estou tentando aprender o skopt, mas estou com dificuldade para executar até mesmo uma minimização multivariada simples.
import skopt
def black_box_function(some_x, some_y):
return -some_x + 2 - (some_y - 1) ** 2 + 1
BOUNDS = [(0, 100.0), (0, 100.0)]
result = skopt.dummy_minimize(func=black_box_function, dimensions=BOUNDS)
Quando executo isso, ele parece descobrir que quero que o espaço de busca para some_x fique entre 0 e 100, mas retorna este erro:
TypeError: black_box_function() faltando 1 argumento posicional obrigatório: 'some_y'.
Como posso definir o espaço de busca para some_x
e some_y
?
Citando a documentação
Portanto,
black_box_function
não deve haver dois parâmetrossome_x
,some_y
mas um único parâmetrosome_xy
, que é uma lista desses doischrslg está correto ao dizer que sua função deve receber uma única lista de parâmetros em vez de vários argumentos, mas você pode usar o
use_named_args
decorador para fazer essa conversão automaticamente. Isso exigirá que você declare suas dimensões comoDimension
objetos (provavelmenteReal
) em vez de tuplas, mas tem a vantagem de tornar óbvio queblack_box_function
é multivariado.neste link: https://scikit-optimize.github.io/stable/modules/generated/skopt.dummy_minimize.html
skopt.dummy_minimize:
acho que isso vai resolver seu problema