我正在使用麻辣的、优化的、盐碱化的使用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.basinhopping
或scipy.optimize.minimize
接口中的回调函数在调用函数c_func
之后被调用。你知道吗
我很确定这个函数只从极小值调用过。Basinhopping从极小值的返回值中获取函数值。在source code中,函数甚至没有传递给basinhopping类,只传递了包装的极小值。你知道吗
相关问题 更多 >
编程相关推荐