2015-05-08 10 views
1

我使用與用戶定義的目標函數c_func選自C++移植(使用​​)spicy.optimize.basinhopping和初始點x區分在basinhopping(SciPy的)局部/全局調用

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」; 
     } 

[EDITS] 我想用回調函數。但在scipy.optimize.basinhopping,或者scipy.optimize.minimize接口的回調函數被調用後功能c_func被調用。

回答

0

我敢肯定的功能永遠只從極小調用。 Basinhopping從最小值的返回值中獲得函數值。在source code該函數甚至沒有通過流域購物類,只有封裝的最小值是。