You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 10:32:06