Код: Выделить всё
from bayes_opt import BayesianOptimization
# Bounded region of parameter space
pbounds = {'x': (2, 4), 'y': (-3, 3)}
optimizer = BayesianOptimization(
f=black_box_function,
pbounds=pbounds,
random_state=1,
)
def black_box_function(x, y):
return -x ** 2 - (y - 1) ** 2 + 1
optimizer.maximize(
init_points=2,
n_iter=3,
)
Код: Выделить всё
using Python.Runtime;
void TestBayes()
{
Runtime.PythonDLL = @"C:\Users\Administrator\source\repos\PythonIntegration\PythonIntegration\python311.dll";
PythonEngine.Initialize();
using (Py.GIL())
{
dynamic sys = Py.Import("sys");
sys.path.insert(0, ".\\modules");
dynamic bayesOpt = Py.Import("bayes_opt");
Dictionary pbounds = new()
{
{ "x", (-2, 4) },
{ "y", (-3, 3) }
};
dynamic optimizer = bayesOpt.BayesianOptimization(BlackBoxFunction, pbounds);
optimizer.maximize(2, 3);
}
}
double BlackBoxFunction(double x, double y)
{
return (Math.Pow(-x,2) - Math.Pow((y - 1),2) + 1);
}
TestBayes();
Поскольку это очень нишевая вещь, я пытаюсь это сделать, но не могу найти способ передать определение этой функции в конструктор байесовской оптимизации. Я исследовал эту ошибку, но все результаты, которые я получил, относились к примерам проектов Python и не охватывали мой случай. Может ли кто-нибудь помочь?
Боковой вопрос:
Я делаю это, потому что не смог найти эквивалентную библиотеку C# для байесовской оптимизации, которая работала бы с функциями черного ящика и была бы такой же простой и удобной. удобен для пользователя, как эта библиотека Python. Я попробовал SharpLearning.Optimization, но он очень плохо документирован, и я не смог воспроизвести ту же функциональность. Я также попробовал ALGLIB, но он явно предназначен для специалистов по обработке данных, и я не смог понять, как его использовать. Если вы знаете что-нибудь похожее на эту библиотеку Python для C#, было бы здорово.
Подробнее здесь: https://stackoverflow.com/questions/787 ... -operation