【发布时间】:2013-03-14 11:40:02
【问题描述】:
我正在使用模拟退火来解决密码分析问题,但我遇到了难题。我一辈子都无法让我的概率函数正确运行,它要么过于频繁地采用更差的解决方案(所以我在 0.03 和 0.2 的分数附近反弹)或者它不经常采用它(所以我被困在0.35)。我浏览了互联网,但我只遇到了问题涉及找到最小值的示例......我的问题需要找到最大值,最差分数是 0,最好是 1。
我需要关于温度以及我应该使用什么概率函数的建议。
【问题讨论】:
-
如果您想使用最小化算法找到最大值,只需否定您的目标函数,即 max f(x) => min -f(x)。
-
我确定这很有帮助,但我不确定我是否理解,你能给我举个例子吗?
-
通常,优化算法搜索目标函数的最小值。如果您想在最大化问题上使用这样的算法,请让优化器最小化您的目标函数的否定。例如,假设您要为其找到最大值 的目标函数是
f(x)=1-(x-1)^2。然后,让优化器最小化-f(x)。顺便说一句,修剪 SA 算法可能很乏味。 SA 是您唯一的选择,还是其他无导数优化算法也可以? -
我想我现在可能正在这样做,概率函数现在类似于 Math.Exp(-((1-score)-(1-bestScore))/temperature) 通过从 1 中获取分数我想我正在把它变成最小化,是吗?