我正在使用来自C ++(使用c_func
)移植的用户定义目标函数ctypes
的spicy.optimize.basinhopping,以及初始点x
:
scipy.optimize.basinhopping(x, c_func)
如果我理解正确的流水线购物,c_func
将在其全局和局部优化部分中通过流域购物作为黑盒函数调用。在我的情况下,函数需要知道调用是来自本地还是全局优化过程。我怎样才能实现它?我们可以想象一下c_func的定义如下:
myClass:: c_func(double){
if ( invoked by the local optimization) {
std::cout<<“Local\n”;
else
std::cout<<“Global\n”;
}
[EDITS]
我在考虑使用回调函数。但是在调用函数scipy.optimize.basinhopping
之后,scipy.optimize.minimize
或c_func
接口中的回调函数被调用。
答案 0 :(得分:0)
我很确定该功能只能从最小化器调用。 Basinhopping从最小化器的返回值中获取函数值。在source code中,函数甚至没有通过盆景类,只有包裹的最小化器。