区分流域购物中的本地/全球调用(scipy)

时间:2015-05-08 17:54:37

标签: python scipy ctypes mathematical-optimization

我正在使用来自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.minimizec_func接口中的回调函数被调用

1 个答案:

答案 0 :(得分:0)

我很确定该功能只能从最小化器调用。 Basinhopping从最小化器的返回值中获取函数值。在source code中,函数甚至没有通过盆景类,只有包裹的最小化器。