«Невозможно использовать группу методов в качестве аргумента для динамически отправляемой операции» при передаче функцииC#

Место общения программистов C#
Anonymous
«Невозможно использовать группу методов в качестве аргумента для динамически отправляемой операции» при передаче функции

Сообщение Anonymous »

Я пытаюсь использовать библиотеку Python для байесовской оптимизации в проекте C# через pythonnet — пакет, который позволяет осуществлять межъязыковую разработку. Я пытаюсь воспроизвести пример кода из примера байесовской оптимизации по ссылке, который на Python выглядит следующим образом:

Код: Выделить всё

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,
)
А это мой код репликации на C#:

Код: Выделить всё

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();
Однако это не скомпилируется; IDE выдает ошибку: невозможно использовать группу методов в качестве аргумента для динамически отправляемой операции. Вы намеревались вызвать этот метод? в строке динамический оптимизатор = bayesOpt.BayesianOptimization(BlackBoxFunction, pbounds);
Поскольку это очень нишевая вещь, я пытаюсь это сделать, но не могу найти способ передать определение этой функции в конструктор байесовской оптимизации. Я исследовал эту ошибку, но все результаты, которые я получил, относились к примерам проектов Python и не охватывали мой случай. Может ли кто-нибудь помочь?
Боковой вопрос:
Я делаю это, потому что не смог найти эквивалентную библиотеку C# для байесовской оптимизации, которая работала бы с функциями черного ящика и была бы такой же простой и удобной. удобен для пользователя, как эта библиотека Python. Я попробовал SharpLearning.Optimization, но он очень плохо документирован, и я не смог воспроизвести ту же функциональность. Я также попробовал ALGLIB, но он явно предназначен для специалистов по обработке данных, и я не смог понять, как его использовать. Если вы знаете что-нибудь похожее на эту библиотеку Python для C#, было бы здорово.

Подробнее здесь: https://stackoverflow.com/questions/787 ... -operation

Вернуться в «C#»