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

使用mlr3实现参数优化中断与续跑的方案咨询及示例请求

基于mlr3实现可重启的参数优化

核心思路

mlr3生态中的mlr3tuning包支持带断点续跑(checkpointing)的参数优化,无需依赖外部GA包即可实现遗传算法优化,且能自动保存中间状态,节点故障后可从断点恢复。

可运行示例

1. 安装并加载依赖包

# 安装必要包(首次运行)
install.packages(c("mlr3", "mlr3tuning", "mlr3learners", "data.table", "future", "future.callr"))

# 加载包
library(mlr3)
library(mlr3tuning)
library(data.table)
library(future)

# 设置并行计算(可选,加速优化)
plan(callr)

2. 定义数值模型与成本函数

这里模拟一个简单的数值优化问题(目标最小化(x1-2)^2 + (x2+3)^2),替换为你的实际模型即可:

# 自定义成本函数:输入参数列表,返回需最小化的成本值
cost.fun <- function(params) {
  # 模拟你的数值模型计算过程
  (params$x1 - 2)^2 + (params$x2 + 3)^2
}

3. 创建优化任务与参数空间

# 定义参数空间:替换为你的实际参数范围
param_set <- ps(
  x1 = p_dbl(lower = -10, upper = 10),  # 连续参数x1
  x2 = p_dbl(lower = -10, upper = 10)   # 连续参数x2
)

# 创建优化实例,设置checkpoint路径(自动保存中间状态)
instance <- TuningInstanceSingleCrit$new(
  task = NULL,  # 数值优化无需mlr3任务,设为NULL
  learner = NULL,  # 同上
  resampling = rsmp("none"),  # 无重采样
  measure = msr("regr.mse"),  # 用均方误差作为评估指标(仅需方向正确,这里是最小化)
  search_space = param_set,
  terminator = trm("evals", n_evals = 100),  # 最多运行100次评估
  store_models = FALSE,
  checkpoint = "mlr3_checkpoint"  # 断点保存目录,自动创建
)

# 绑定自定义成本函数到实例
instance$objective_function <- function(x, instance) {
  cost.fun(x)
}

4. 运行优化(可模拟节点故障中断)

# 选择遗传算法作为优化器
tuner <- tnr("ga", popSize = 20, pcrossover = 0.8, pmutation = 0.1)

# 开始优化(运行过程中可手动中断模拟节点故障)
tuner$optimize(instance)

5. 从断点重启优化

如果中途中断,只需重新加载实例并再次运行optimize即可:

# 从checkpoint目录恢复实例
instance <- TuningInstanceSingleCrit$new(
  task = NULL,
  learner = NULL,
  resampling = rsmp("none"),
  measure = msr("regr.mse"),
  search_space = param_set,
  terminator = trm("evals", n_evals = 100),
  store_models = FALSE,
  checkpoint = "mlr3_checkpoint"
)

# 重新绑定成本函数
instance$objective_function <- function(x, instance) {
  cost.fun(x)
}

# 重启优化,会从上次中断的位置继续
tuner$optimize(instance)

6. 查看最终结果

# 获取最优参数
instance$result_learner_param_vals

# 获取最优成本值
instance$result_y

关键说明

  • checkpoint参数指定的目录会自动保存每次评估的状态,重启时自动读取未完成的进度
  • 若坚持使用原GA包,可通过自定义tuner接入mlr3,但推荐直接使用mlr3封装的遗传算法(tnr("ga")),已适配checkpoint机制
  • 终止条件(terminator)可根据需求调整,比如按时间、成本阈值等设置

内容的提问来源于stack exchange,提问作者Christian

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 20:52:56