退火

设当前最优解为 $Q$,当前指针为 $ans$,跳到的新位置为 $now$。

如图,$now$ 与 $ans$ 比是优解,而 $now$ 与 $Q$ 比是劣解。

无论哪种写法,当前方案对应 $ans$ 的方案。

  1. $now$ 与 $ans$ 比:形如
int del = now - ans;
if(del < 0 || exp(-del / T) * RAND_MAX > rand()) ans = now;
else 把方案恢复原状;
用 ans 更新 Q;
  1. $now$ 与 $Q$ 比:形如
int del = now - Q;
if(del < 0) Q = now;
else if(exp(-del / T) * RAND_MAX < rand()) 把方案恢复原状;

特别地,如果需要输出方案,更新 Q 的同时更新 Q 对应的方案。

posted @ 2023-05-16 11:16  5k_sync_closer  阅读(10)  评论(0编辑  收藏  举报  来源