社区讨论

萌新求助,关于模拟退火

学术版参与者 3已保存回复 3

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
3 条
当前快照
1 份
快照标识符
@lobac851
此快照首次捕获于
2023/10/29 17:45
2 年前
此快照最后确认于
2023/11/03 23:41
2 年前
查看原帖
如下,这是一个模拟退火的模板。
CPP
inline void sa(){
    double t=3000;
    while(t>1e-15){
    	int v=value(), d=v-ans;
        if(d<0) ans=v;
        else if(exp(d/t)*RAND_MAX>rand()) //do sth.
        t*=down;
    }
}
但是对于 if(exp(d/t)*RAND_MAX>rand()),这里的 d,有些时候是 -d
现在请教一下各位神仙,什么时候需要用 d,什么时候需要 -d
或者给一下经验。
谢谢。

回复

3 条回复,欢迎继续交流。

正在加载回复...