我正试图写一个程序,它使用模拟退火的形式,虽然这不是太重要基本上我有以下变量:
double temperature = 100000; double coolingrate = 0.99; double delta = 0.001;
我想知道如何使用math.log()计算需要运行的次数 temperature = temperature * coolingrate -不去做-直到 temperature <= delta
temperature = temperature * coolingrate
temperature <= delta
06odsfpq1#
既然你想找到最小的 n 其中:然后可以导出:转换为自然对数(用于 Math.log() ):这将产生以下代码(四舍五入,因为迭代次数必须是整数):
n
Math.log()
double n = Math.ceil(Math.log(delta / temperature) / Math.log(coolingrate))
对于指定的值,这将产生 1833 .
1833
1条答案
按热度按时间06odsfpq1#
既然你想找到最小的
n
其中:然后可以导出:
转换为自然对数(用于
Math.log()
):这将产生以下代码(四舍五入,因为迭代次数必须是整数):
对于指定的值,这将产生
1833
.