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

2024-04-26 10:13:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用麻辣的、优化的、盐碱化的使用C++定义的目标函数{{CD1>}(使用{{CD2>}),初始点^ {< CD3>}:

scipy.optimize.basinhopping(x, c_func)

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

myClass:: c_func(double){
        if ( invoked by the local optimization) {
                    std::cout<<“Local\n”;
       else 
                    std::cout<<“Global\n”;
       }

[编辑] 我在考虑使用回调函数。但是scipy.optimize.basinhoppingscipy.optimize.minimize接口中的回调函数在调用函数c_func之后被调用。你知道吗


Tags: 函数目标定义scipy全局optimizefuncstd
1条回答
网友
1楼 · 发布于 2024-04-26 10:13:26

我很确定这个函数只从极小值调用过。Basinhopping从极小值的返回值中获取函数值。在source code中,函数甚至没有传递给basinhopping类,只传递了包装的极小值。你知道吗

相关问题 更多 >