以MWE为例:
import dlib
from scipy.optimize import rosen
def rosen_f(*x):
result = rosen((x))
global OPT_FOUND
if result < OPT_FOUND:
OPT_FOUND = result
print("New min", (x), result)
return result
dlib.find_min_global(rosen_f, [0]*5, [0.5]*5, 1000)
字符串
如果我设置OPT_FOUND = 2**30,这将打印出find_min_global在优化中找到的所有改进。
我该如何:
- 避免使用全局变量
- 将改进添加到我可以在代码的主要部分使用的列表中?
1条答案
按热度按时间7bsow1i61#
下面是一个简单的例子,它使用装饰器来监视优化。我无法安装
dlib
,所以我只是使用scipy.optimize.minimize
,但装饰器应该一样工作。显然,您可以自定义装饰器以满足您的需求,我只是简单地拼凑了一些东西。字符串
输出量:
型