Python 区分Basinhoppy(scipy)中的本地/全局调用

Python 区分Basinhoppy(scipy)中的本地/全局调用,python,scipy,ctypes,mathematical-optimization,Python,Scipy,Ctypes,Mathematical Optimization,我使用Scice .Opjix.BasiPo跳,使用C++自定义的目标函数 CyFunc < /Cube >(使用 cType < /代码>),初始点 x>代码>: scipy.optimize.basinhopping(x,c_func) 如果我理解正确,basinhopping将调用c_func,作为其全局和局部优化部分的黑盒函数。在我的情况下,函数需要知道调用是来自本地还是全局优化过程。我怎样才能做到呢?我们可以想象c_func的定义如下: myClass:: c_func(double)

我使用Scice .Opjix.BasiPo跳,使用C++自定义的目标函数<代码> CyFunc < /Cube >(使用<代码> cType < /代码>),初始点<代码> x>代码>:

scipy.optimize.basinhopping(x,c_func)

如果我理解正确,basinhopping将调用
c_func
,作为其全局和局部优化部分的黑盒函数。在我的情况下,函数需要知道调用是来自本地还是全局优化过程。我怎样才能做到呢?我们可以想象c_func的定义如下:

myClass:: c_func(double){
        if ( invoked by the local optimization) {
                    std::cout<<“Local\n”;
       else 
                    std::cout<<“Global\n”;
       }
myClass::c_func(双精度){ if(由本地优化调用){
std::cout我很确定该函数只从极小值调用过。Basinhopping从极小值的返回值获取函数值。在函数中,甚至没有传递Basinhopping类,只有包装的极小值