4. 初始解与初始温度设定

模拟退火算法的搜索轨迹从两个起点出发:一个是解空间中的具体位置,即初始解;另一个是接受劣解的概率尺度,即初始温度。这两者共同决定了算法前期的探索范围与后期的收敛质量。初始解选得差,算法可能要在高温阶段耗费大量迭代才能爬出低质量区域;初始温度定得过高,前期近乎随机游走,浪费计算预算;定得过低,则一开始就退化为局部搜索,失去跳出局部最优的机会。本节围绕这两个参数,讲清楚可落地的构造策略与经验设定方法。

初始解:不是随便给一个可行解就行

初始解的第一要求是可行,第二要求是“有质量但不完美”。完全随机的可行解在解空间中的期望质量往往很差,而贪心构造的解质量高但结构单一,容易让后续搜索陷入固定邻域。实践中常用的折中策略有三类。

纯随机构造:在满足约束的前提下逐位随机取值。以旅行商问题(TSP)为例,随机打乱城市顺序即可得到一个可行回路。这种方式实现最简单,适合作为对照基线,也适合解空间高度不规则、贪心规则难以设计的场景。缺点是初始目标值波动大,同一组参数在不同随机种子下表现差异明显。

贪心构造:每一步选择当前看起来最优的局部决策。TSP 中常用最近邻法:从某城市出发,每次走向距离最近的未访问城市,最后回到起点。以 20 个城市的示例算例(坐标随机生成、距离取欧氏距离)为例,最近邻法通常能得到比随机排列短 20%~40% 的回路,但容易在后期被迫走一条很长的“收尾边”。贪心的价值在于给出一个质量尚可的起点,让高温阶段不必从极差解开始。

随机化贪心(GRASP 式):在贪心的每一步保留一个候选列表,从中随机挑选,而不是永远选最优。例如最近邻法中,把距离最近的 k 个未访问城市放入候选列表(k 常取 3~5),按概率或均匀随机选一个。这样既保留了贪心的质量倾向,又引入了结构多样性。若需要多次独立运行,可对每次运行使用不同的随机种子生成不同的随机化贪心解,再取目标值最好的一个作为初始解,成本很低而收益明显。

选择建议:解空间连续、邻域操作平滑时,随机化解已足够;组合结构强、贪心规则清晰(如排程、装箱、路径)时,优先随机化贪心;若单次构造开销大,可只构造一次贪心解,再通过若干次随机邻域扰动生成初始解,兼顾质量与多样性。

初始温度:用目标函数差异定标

初始温度的本质是控制“劣解被接受的概率”。Metropolis 准则中,目标值变差 Δ(Δ>0)的解被接受的概率为 exp(−Δ/T)。因此温度必须与问题的目标值量纲匹配:T 取 1 而 Δ 动辄上千,则几乎不接受劣解;T 取 10000 而 Δ 只有个位数,则前期等同随机搜索。直接拍一个绝对温度值,是模拟退火最常见的失误。

基于目标函数差异的经验设定法,核心思路是:先采样一批邻域解,统计目标值差异的分布,再反推一个使初始接受率落在合理区间的温度。常用做法如下:从初始解出发,随机产生 m 个邻域解(m 取 100~1000),计算每个邻域解与当前解的目标值差 Δᵢ(仅统计变差的,即 Δᵢ>0),得到平均劣化量 Δ̄。若希望初始阶段以概率 p₀ 接受平均劣化,则由 exp(−Δ̄/T₀)=p₀ 解得:

T₀ = −Δ̄ / ln(p₀)

p₀ 的经验取值范围是 0.7~0.95,常用 0.8 或 0.9。举例:某排程示例算例中,采样 200 个邻域解,统计得平均劣化 Δ̄ = 12.5(目标为总延迟时间,单位分钟),取 p₀ = 0.8,则 T₀ = −12.5 / ln(0.8) ≈ −12.5 / (−0.2231) ≈ 56.0。这意味着初始阶段一个劣化 12.5 分钟的邻域解约有八成概率被接受,探索性充足;而劣化 100 分钟的解接受概率仅 exp(−100/56)≈0.17,不会完全失控。

若采样得到的 Δ̄ 波动很大(例如存在少数极端大的 Δᵢ),用平均值会被拉偏,此时可改用中位数或分位数(如 60% 分位)代替 Δ̄,或先剔除超过 3 倍标准差的离群值。另一种等价视角是直接设定初始接受率:采样后二分搜索 T,使实际接受比例接近目标 p₀,实现上更稳健,适合目标值量纲不直观的场景。

初始解构造(左)与初始温度标定(右) 初始解构造策略 纯随机构造 可行但质量波动大 贪心构造 质量高、结构单一 随机化贪心 候选列表 k=3~5 输出:初始解 x₀ 目标值 f(x₀) 记录 多次独立构造取最优,成本低、收益明显 示例:20 城市 TSP,最近邻回路 通常比随机排列短 20%~40% 初始温度标定(基于目标差异) 采样 m 个邻域解 m = 100~1000 统计劣化量 Δᵢ 仅取 Δᵢ > 0 求平均 Δ̄ 或中位数/分位数 设定目标接受率 p₀ 0.7 ~ 0.95 T₀ = −Δ̄ / ln(p₀) 示例:Δ̄=12.5,p₀=0.8 → T₀≈56.0 校验:劣化 100 分钟的解接受率 exp(−100/56) ≈ 0.17,探索可控 Δ̄ 波动大时改用中位数或二分搜索 T

两个参数的联动与校验

初始解与初始温度并非独立。贪心解质量高,其邻域劣化量 Δ̄ 往往偏小,按公式算出的 T₀ 也偏小,前期探索范围窄;随机解质量差,Δ̄ 偏大,T₀ 随之偏大。因此标定温度时,必须使用“实际将要采用的初始解”来采样邻域,而不是换一个解去估计。若采用多次构造取最优的策略,应以最终选中的那个解为基准重新采样。

一个实用的校验方法是观察前若干次迭代的实际接受率。若前 100 次迭代接受率明显低于 p₀(例如低于 0.5),说明 T₀ 偏低或 Δ̄ 估计偏小,可乘以 1.5~2 的修正系数;若接受率接近 1 且目标值长期无改善,说明 T₀ 偏高,可乘以 0.5~0.7。这种“先标定、再小步修正”的做法,比反复试凑绝对温度更可控。

注意:目标函数若含惩罚项,惩罚系数的量级会直接放大 Δ̄,导致 T₀ 虚高。标定前应确认惩罚项已按设计比例缩放,或改用“仅统计可行邻域劣化量”的方式采样,避免温度被惩罚项主导。

降温起点与终止的衔接

初始温度确定后,还需与降温策略衔接。常用几何降温 Tₖ₊₁ = αTₖ,α 取 0.90~0.99。若已知终止温度 T_end(通常取使最差邻域接受概率约 0.01 的量级),则总降温次数可由 n = ln(T_end/T₀)/ln(α) 估算。例如 T₀=56、T_end=0.5、α=0.95,则 n ≈ ln(0.0089)/ln(0.95) ≈ 93 次。这个估算帮助判断初始温度是否与总迭代预算匹配:若算出的降温次数远超预算,说明 T₀ 偏高或 α 偏大,应优先调整。

综上,初始解优先采用随机化贪心并在必要时多次构造取优;初始温度以实际初始解采样邻域、统计平均劣化量、按目标接受率反推,再用前段实际接受率做小幅修正。两者都以“与问题目标值量纲匹配”为原则,避免凭感觉给绝对数值,才能让模拟退火从第一步起就走在合理的探索节奏上。