求助关于模拟退火
  • 板块学术版
  • 楼主TempestMiku
  • 当前回复7
  • 已保存回复7
  • 发布时间2023/9/22 18:47
  • 上次更新2023/11/2 18:43:55
查看原帖
求助关于模拟退火
891956
TempestMiku楼主2023/9/22 18:47

在求合法答案的最小值的时候

模拟退火是这样写的:

double delta=e-Ans.ans;
if(delta<0){
   Ans.x=ra,Ans.y=rb,Ans.ans=e;
}
else if(exp(-delta/T)*RAND_MAX>radom(0,RAND_MAX)){
    Ans.x=ra,Ans.y=rb;
}

但是在求合法答案的最大值得时候:

double delta=e-Ans.ans;
if(delta>0){
   Ans.x=ra,Ans.y=rb,Ans.ans=e;
}
else if(exp(-delta/T)*RAND_MAX<radom(0,RAND_MAX)){
    Ans.x=ra,Ans.y=rb;
}

double delta=e-Ans.ans;
if(delta>0){
   Ans.x=ra,Ans.y=rb,Ans.ans=e;
}
else if(exp(delta/T)*RAND_MAX>radom(0,RAND_MAX)){
    Ans.x=ra,Ans.y=rb;
}

这两种写法哪个对?并说明理由%%%%%%

还是说根据题目有不同的写法?

2023/9/22 18:47
加载中...