gpt4 book ai didi

python-2.7 - 使用 Python API 在优化失败后获取 NLOpt 结果

转载 作者:行者123 更新时间:2023-12-05 07:59:07 35 4
gpt4 key购买 nike

我正在使用 NLOpt 的 Python 界面运行优化。在某个时刻,经过多次迭代后,我得到一个 nlopt.RoundoffLimited 异常。根据文档 (http://ab-initio.mit.edu/wiki/index.php/NLopt_Reference#Error_codes_.28negative_return_values.29),在出现此类异常后,“优化通常仍会返回有用的结果。”我如何实际查看中间结果?我正在运行如下代码:

opt = nlopt.opt(...)
# ... some optimization settings
try:
opt_results = opt.optimize(guess)
except nlopt.RoundoffLimited:
# How do I get the latest parameters from opt,
# after the optimization has failed?

我可以使用 opt.last_optimize_result() 很好地获得目标值,但我找不到 API 调用来获取导致该目标值的参数。

谢谢!

最佳答案

我仍然没有找到一个特别优雅的解决方案,但我现在会发布这个,以防有人偶然发现同样的问题。这是在优化异常之前恢复先前有效优化参数的一种方法:

# globals
previous_args = None
current_args = None

# objective function
def objective_function(args, gradient):
global previous_args
global current_args

previous_args = current_args
current_args = args

# ... the rest of your objective function
return function_value

# optimization code using objective_function
opt = nlopt.opt(...)

try:
args = opt.optimize(guess)
except nlopt.RoundoffLimited:
args = previous_args

# you should do some sanity checks on args.
# for example, one reason you may see RoundoffLimited
# is args on the order of 1e-300 or so.

关于python-2.7 - 使用 Python API 在优化失败后获取 NLOpt 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22738855/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com