问题标签 [simulated-annealing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
419 浏览

c++ - 如何提高此代码使用模拟退火概念对数字进行排序的效率?

我试图理解模拟退火的概念,因此我试图实现它来对数字进行排序。我不确定这在概念上是否是模拟退火的正确实现。谁能指导我在这种情况下如何正确实施它?在这种情况下如何改进评分功能?另外,我在这里无法实现温度的概念。请多多包涵,因为我是编程初学者。

}

0 投票
3 回答
6305 浏览

algorithm - 模拟退火算法中的邻居选择

选择邻居时应该考虑算法的温度吗?因此,例如,如果在挑选邻居时温度很高,应该进行排列吗?还是温度只影响接受概率?

0 投票
1 回答
296 浏览

python - 已使用 CSV 文件对男性和女性进行排序

我需要将人员分成团队,每个团队对这些团队都有一定数量的男性和女性,我编写了以下代码,但我不知道如何修改它,以便生成的团队具有正确的数量其中的男性和女性。

代码是:

0 投票
2 回答
2235 浏览

c++ - 多线程模拟退火

我写了一个多线程模拟退火程序,但它没有运行。我不确定代码是否正确。代码能够编译,但是当我运行代码时它崩溃了。它只是一个运行时错误。

请帮忙。

谢谢阿维内什

0 投票
1 回答
207 浏览

simulated-annealing - SA中的温标

首先,这不是关于温度迭代计数或自动优化调度的问题。这就是数据量级与指数缩放的关系。

我正在使用经典公式:

exp 函数的输入是负数,因为 delta/tK 是正数,所以 exp 结果总是小于 1。random 函数还返回 0 到 1 范围内的值。

我的测试数据在 1 到 20 的范围内,增量值低于 20。我选择一个等于系统初始计算温度的起始温度,然后线性下降到 1。

为了让 SA 工作,我必须扩展 tK。工作版本使用:

那么 tK 的大小与 delta 的大小有什么关系呢?我通过反复试验找到了比例因子,但我不明白为什么需要它。据我了解,只要 delta > tK 并且步长和迭代次数是合理的,它应该可以工作。在我的测试用例中,如果我省略了额外的刻度,系统的温度不会降低。

我看过的各种在线资源都没有提到使用真实数据。有时它们包括玻尔兹曼常数作为尺度,但因为我没有模拟一个没有帮助的物理粒子系统。示例(通常使用伪代码)使用 100 或 1000000 等值。

那么我错过了什么?是否缩放另一个我必须通过反复试验设置的值?这让我很烦,因为我不只是想让这个测试用例运行,我想了解算法,而魔法常数意味着我不知道发生了什么。

0 投票
1 回答
5337 浏览

python - python中的离散优化

我正在尝试使用该scipy.optimize包来优化离散优化问题(全局优化)。根据文档,实施的模拟退火scipy.optimize.anneal应该是一个不错的选择。但我不确定如何强制优化器只搜索搜索空间的整数值。有人可以帮忙吗?

一个说明性的例子:

f(x1,x2) = (1-0.4*x1)^2 + 100*(0.6*x2 -0.4*x1^2)^2

where, $x1, x2 \in I$

0 投票
1 回答
449 浏览

algorithm - T 在模拟退火中代表什么?

我想对不同的情况使用模拟退火。网络中的每个模拟退火算法都提供了温度示例。就像在维基

现在这个“T”一般代表什么?假设我将对国际象棋使用模拟退火。我将使用该算法为计算机寻找下一步行动。我有当前状态(S)和它的价值(e)。我有下一个状态(snew)和它们的值(enew)。那么国际象棋的“T”是什么?我需要吗!这个算法有什么通用的形式吗?我的意思是没有这个温度示例,我可以得到基本的想法!我找不到任何东西。请帮忙。提前致谢......

0 投票
2 回答
5014 浏览

java - 模拟退火 TSP

我希望在 Java 中实现模拟退火算法,以找到旅行商问题的最佳路线,到目前为止,我已经实现了蛮力,并希望修改该代码以使用模拟退火。显然蛮力和模拟退火是非常不同的,并且使用非常不同的功能。

我了解模拟退火使用一个称为温度的变量,然后随着算法的运行而冷却;随着温度开始升高,逐渐冷却。虽然温度很高,但该算法更有可能选择比当前更差的解决方案,从而消除您在类似的爬山算法中发现的局部最大值。随着它的冷却,算法不太可能接受更差的解决方案,因此它可以专注于特定区域并快速找到最佳路线。

我相信我了解该算法的工作原理,但在将其放入 Java 时遇到了麻烦,我有 2 个类;一个名为 City 的方法,它只包含计算每个城市的详细信息的方法,例如getIndexgetDistance等。算法类从输入文件中读取并将其存储在数组中 ( int [][])

下面的代码是蛮力算法,我想修改它以进行模拟退火,如果有人可以帮助我这样做,我将不胜感激。

0 投票
1 回答
948 浏览

python - 带有模拟退火的 Python TSP Berlin 52

我想知道这个函数的作用:

我正在执行此功能以“退火”tour1,但我不确定我是否做得很好。我特别纠结于注释行(#),有人可以帮助我知道我在做什么!?或者更好,如果我做得很好?

编辑:

这是我的 SA 部分:

matriz 是一个 52x52 数组,是 berlin52 http://www.iwr.uni-heidelberg.de/groups/comopt/software/TSPLIB95/tsp/各部分之间的距离

其他功能是:

就是这样,感谢您的评论。

0 投票
1 回答
6363 浏览

algorithm - 爬山算法的时间复杂度是多少?

具体来说,最速爬山、随机爬山和模拟退火。广义时间复杂度也可以。谢谢。