如何在Julia Optim.jl中提取optimize结果状态并赋值给DataFrame列?
问题解答
你的思路是可行的,Optim包中optimize函数返回的优化结果对象确实包含status字段,可以直接提取。下面是准确的实现代码,包含批量运行优化任务并将状态存入DataFrame的完整流程:
1. 导入必要的包
using Optim, DataFrames
2. 定义目标函数(示例)
function obj_func(x) return (x[1]-2)^2 + (x[2]-3)^2 end
3. 批量运行优化并收集状态
# 准备不同初始点与优化器配置 optim_tasks = [ (init=[0.0, 0.0], method=LBFGS()), (init=[10.0, 10.0], method=NelderMead()), (init=[-5.0, -5.0], method=BFGS()) ] # 初始化空DataFrame results_df = DataFrame( init_point=Vector{Float64}[], optimizer=Symbol[], status=Symbol[] ) # 遍历执行优化并记录状态 for task in optim_tasks opt_result = optimize(obj_func, task.init, task.method; autodiff=:forward) # 提取状态并添加到DataFrame push!(results_df, ( task.init, Symbol(typeof(task.method).name.name), opt_result.status )) end # 查看最终结果 display(results_df)
关键说明
optimize返回的对象类型为Optim.MultivariateOptimizationResults,status字段是Symbol类型,常见取值包括:success(优化成功)、:maxiter_reached(达到最大迭代次数)、:failure(优化失败)等,对应不同运行状态。- 若处理单变量优化问题,只需将初始点改为标量、目标函数适配单参数即可,提取状态的逻辑完全一致。
内容的提问来源于stack exchange,提问作者user23329063
相关产品推荐
相关产品推荐

