Skip to main content
Version: Next

通用拟合说明

Fit 模块用于用一个数学表达式描述一组数据之间的关系,并围绕这个表达式做三件事:

  1. 拟合系数。
  2. 正向计算函数值。
  3. 反向求解变量。

适用场景

  1. 经验公式标定,例如 y = a*x + by = a*exp(-k*x)
  2. 工艺参数回归,例如温度、时间、功率与结果值之间的关系。
  3. 目标反求,例如给定目标厚度或目标光谱指标,反求一个最佳工艺参数。

基本组成

一个拟合任务通常由四部分组成:

  1. 表达式:例如 a*x+b
  2. 变量:例如 x,并定义它的含义、单位和取值范围。
  3. 系数:例如 ab,并定义它们的初值和上下界。
  4. 数据:变量序列与目标函数值序列。

三种核心操作

1. 拟合系数

给定:

  1. 表达式。
  2. 变量样本值。
  3. 函数目标值。

输出:

  1. 最优系数。
  2. 残差或目标函数值。
  3. 迭代诊断信息。

2. 正向计算

给定:

  1. 表达式。
  2. 系数值。
  3. 变量值。

输出:

  1. 对应的函数值序列。

3. 反向求解

给定:

  1. 表达式。
  2. 系数值。
  3. 目标函数值。
  4. 变量范围。

输出:

  1. 一个最接近目标值的变量解,或一组变量解。

建议做法

  1. 变量和系数命名尽量使用英文和下划线,例如 temp, power_ratio, a1
  2. 先做一次正向计算确认表达式没有错误,再执行拟合。
  3. 拟合前给出合理初值和边界,避免求解陷入无效区域。
  4. 多变量反求时必须给定边界,否则结果通常不稳定。

当前能力边界

当前模块适合数值表达式拟合与优化,不面向复杂符号化推导、整数规划或大规模约束优化。

CoatFlex 优化器参数(当前后端生效)

停止条件规则

OptimizeStopOption 在 LM/Simplex/DE/SA/ACO 上统一执行:

  1. stop_by_iter=true && set_iter>0:使用该迭代上限。
  2. 其他情况(包含 stop 未传):默认无限迭代 usize::MAX
  3. stop_by_merit=trueset_merit 映射为容差阈值。

Simplex

当前生效字段:

  1. need_normalize
  2. use_uniform_edge_length
  3. initial_edge_length / individual_edge_lengths
  4. initialize_method(Regular/Random/Twice)
  5. need_adaptive_transform + fix_transform_parameter
  6. out_of_bound_treatment(Wall/Bound/Medium)
  7. need_restart + restart_option[]
  8. test_criteria(converge/flat/small)

DE

当前生效字段:

  1. pop_size
  2. differential_weight
  3. crossover_rate
  4. eval_budget
  5. max_no_improve
  6. convergence_tol
  7. need_normalize
  8. bound_handling
  9. seed + seed_value

SA

当前生效字段:

  1. initial_temperature
  2. final_temperature
  3. iterations_per_temperature
  4. cooling_rate
  5. cooling_schedule
  6. parallel + parallel_count
  7. random_seed

ACO

当前生效字段:

  1. ant_count
  2. initial_pheromone
  3. evaporation_rate
  4. alpha
  5. beta
  6. elite_weight
  7. parallel + parallel_colony_count
  8. random_seed

常用默认值

  1. max_iterations = usize::MAX
  2. tolerance = 1e-8
  3. simplex_initial_edge_length = 0.05
  4. sa_initial_temp/final_temp = 1000 / 1e-2
  5. de_population_size = 50
  6. aco_num_ants = 20

Low-E 建议预设

  1. 基板拟合优先 Simplex→LMuse_simplex_first=true)。
  2. 显式设置 stop_by_iter(300~800)并开启 stop_by_merit1e-6~1e-4)。
  3. TabulatedNK 维度较大时,先全局(DE/SA)后局部(LM)。

已知限制

  1. Envelope 精修目前是单层常数 n/k 参数化。
  2. Envelope 目标映射按法向入射处理。
  3. SA/ACO parallel 是多起点/多群体聚合,不保证线程并行执行。