问题标签 [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 投票
2 回答
1998 浏览

r - 如何在 R 中使用 GenSA 函数进行数学约束

我目前正在尝试使用模拟退火包 GenSA 以最小化以下功能:

其中 Cov_Mat 是从 4 个资产获得的协方差矩阵,v 是维度为 4 的权重向量。

我正在尝试以这种方式解决 Markowitz 资产分配方法,我想知道如何引入数学约束,例如所有系数的总和必须等于 1 :

此外,由于我打算依赖 GenSA 功能,我想使用这样的约束:

我在这篇论文中找到了:http ://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.97.6091&rep=rep1&type=pdf 如何在模拟退火算法中处理这种约束,但我不知道我如何在 R 中实现它。

我会非常感谢任何建议。这是我第一次使用 SO,所以请不要犹豫,告诉我我提问的方式是否有误。

0 投票
1 回答
30 浏览

algorithm - 在算法中。它处理点(2D),但每个点实际上都是一个向量,如何将它们标记为点?

我正在尝试基于优化成本函数来组织图的顶点。目前我正在使用模拟退火算法。问题在于,在原始算法中,我们正在寻找最佳点(可能在 2D 环境中),在我的情况下,每个点不仅仅是一个点,而是一些顶点的排序。

例如:我们有一个包含 3 个顶点的图:I1、I2、I3。对我来说有一点是 [I1 I2 I3] 或 [I2 I1 I3],所以我必须得到的最终解决方案是一定的顺序。另一点将是顶点的另一种组合。

那么,一般来说,如果一个点代表一个数字向量,你会如何引用它呢?我问是因为算法应该明显修改..

谢谢!

0 投票
0 回答
1190 浏览

algorithm - 模拟退火和寻路

我一直在阅读很多关于模拟退火(SA)及其在解决 TSP 中的有效性的文献。这让我想到是否可以使用 SA 来优化source路径destination查找。

基本 SA 伪代码(来自 wiki)

这里s0代表一个解决方案(所以在我的情况下它已经意味着一个源-目的地路径),我的问题是我如何生成这些“解决方案”,而不是使用最大流量算法或 dijikstra 的。

0 投票
0 回答
584 浏览

machine-learning - 机器学习:自动编码器上的模拟退火

我已经实现了模拟退火来解决一个简单的权重绑定神经网络的成本函数,但我收到了一些奇怪的结果。

逻辑:

  • Forward prop:f(W*x+b),其中 f = tanh,W = 权重矩阵,x = 输入数据,b = 偏差
  • 权重和偏差使用 rnd 高斯权重随机初始化
  • 权重和偏差由 W/norm2(W) 和 b/norm2(b) 归一化
  • 扰动 W 为:W +/- rnd_unif[0,1] & 对 b 做同样的事情
  • 再次转发道具,如果 MSE < 先前的 MSE 接受,否则使用退火标准
  • 每隔 n 次接受更新一次温度。使用通用 T=T*0.9

似乎正在发生的事情是网络确实按预期降低了成本,但是一些错误预测的 MSE 低于“正常”状态 MSE。在反向传播中,我们观察到 MSE 总是较高的错误。我想知道其他人是否遇到了同样的问题。

0 投票
1 回答
221 浏览

c++ - 网格中的有效方法

问题:我们必须用集合 S 中的字符填充大小为 m*n 的 2D 网格,以使生成的网格中不同子矩阵的数量接近给定数量 k。
这个问题来自http://www.codechef.com/JULY14/problems/GERALD09

限制:
1<=n,m<16
1<=k <=m*n*m*n
|S|=4
时间限制=0.1 秒

假设:如果两个子矩阵的维度不同或至少有一对在其对应位置的字符不匹配,则它们是不同的。

我的方法:我们可以从随机网格和循环开始,同时找到可接受的解决方案,并且在每次迭代中,我们可以根据当前状态增加/减少随机性(但我们可以停留在局部最优状态)。

但问题是我不知道计算子网格中不同子矩阵数量的有效方法。我尝试用散列法进行计数,这非常快( O(n 2 m 2 )*生成/搜索的成本子网格的哈希值)。但是由于哈希值的冲突,这种方法并没有给出准确的答案,即使在使用@Vaughn Cato 的评论更正它之后,我也可以进行 15-25 次迭代以获得最佳状态查找,但这还不够。

最近,我了解到模拟退火可以用来解决这类问题。
http://www.theprojectspot.com/tutorial-post/simulated-annealing-algorithm-for-beginners/6
我正在寻找任何有效的方法来解决这个优化问题。

提前致谢。

0 投票
0 回答
741 浏览

r - 使用不同算法在 R 中优化/校准面临的问题

我是优化/校准的新手,因此我想解释它的每一个细节。所以这将是一个很长的帖子,请多多包涵:)

我一直在尝试使用高频数据来校准 Heston (1993) 的期权价格模型。但我遇到了某些问题。

我有 5 个参数要估计(kappa、theta、sigma、rho、v0)。以下是我遵循的方法:

  1. 计算(猜测)要输入优化算法的参数的初始值。我已经通过命中和试验方法做到了这一点。

  2. 使用包callHestoncfNMOF计算期权价格。

  3. 计算期权的市场价格与从 (2) 计算的价格之差

  4. 从(3)得到的差值被输入到优化函数中。

以下是我正在使用的数据的输入:

输入(头(温度))
结构(列表(EXPDATE = 结构(c(1296066600、1296066600、1296066600、1296066600、1296066600、1296066600)、类 = c(“POSIXct”、“POSIXt”))、STRIKE = c(6400L、6400L、6400L、6400L、6400L , 6400L ), TTE = c(17, 17, 17, 17, 17, 17), SPOT = c(6146.39759036145, 6146.16962025316, 6148.28617021277, 6147.04015151515, 6140.85952380952, 6139.94405940594), RATE = c(0.0745855265628133, 0.0745855265628133, 0.0745855265628133, 0.0745855265628133, 0.0745855265628133, 0.0745855265628133), DIV = c(0.0101, 0.0101, 0.0101, 0.0101, 0.0101, 0.0101), DATE = c("2011-01-04", "2011-01-04-0,", " "2011-01-04", "2011-01-04", "2011-01-04"), 数量 = c(2000L, 2400L, 1600L, 2500L, 2000L, 1500L), 价格 = c(16.05, 16,15.9, 16.4, 15, 15)), .Names = c("EXPDATE", "STRIKE", "TTE", "SPOT", "RATE", "DIV", "DATE", "QUANT", "PRICE" ), row.names = c(NA, 6L), class = "data.frame")

下面是计算要最小化的目标的函数:

我使用了以下函数进行优化:
nlminb(stats)
DEoptim(DEoptim)
optim(stats)-方法“L-BFGS-B”,“SANN”
GenSA(GenSA)

下面是我编写的一个函数,用于使用优化参数计算定价误差。

下面是我如何称呼它

下面是我如何调用优化函数:

使用该函数nlminb,我可以获得对参数的合理准确估计,以及较低的定价误差(平均值=Rs.3.7,中位数=Rs.3.5),但据我了解,它是一种局部优化方法,因此选择输入非常关键。此外,由于我必须在很多天中进行此校准,因此每天对初始估计进行命中和试验并不是很可行。因此,我正在寻找一个全局优化器。

使用DEoptim(使用与上面相同的值):它运行 200 次迭代,并产生参数:c(0.7239727, 0.01, 0.5224246, 0.9484754, 0.2316809)。使用这些值,我得到了极大的错误(平均值 = 211 卢比,中值 = 208 卢比)。

使用L-BFGS-B有类似的问题nlminb

当我使用全局优化器SANNorGenSA时,经过几次迭代后出现以下错误

我知道发生错误是因为积分对于参数范围内的某些值是不可解的。但是不应该有一个内置的机制来忽略这种情况吗?
这里的问题可能是多方面的,尽管我觉得这不是因为下面的第 1-4 点:
1. 我是否正确计算了目标?
2. 我是否将正确的目标函数返回给优化算法?(上面的函数'hestdiff')
3. 我计算定价错误的方式有问题吗?(上面的函数'calcdiff')
4. 我调用优化函数的方式有问题吗?
5. 还有其他我可以/应该使用的优化功能吗?
6.最后,我应该怎么做才能使这项工作:)

谢谢你陪我到最后。即使花了几天时间,我也找不到前进的方向。如果有人能帮我解决这个问题,那就太好了。

谢谢和问候,
希瓦姆

0 投票
4 回答
394 浏览

algorithm - 追溯模拟退火的优化步骤

我正在使用模拟退火来帮助解决诸如旅行商问题之类的问题。我得到了一个我很满意的解决方案,但我现在想知道在解决方案空间内的路径(即算法为达到解决方案所采取的步骤),算法从随机,远非最佳行程,到相当最佳的行程。

换句话说,在旅行商问题的情况下:

  • 从城市之间的随机行程开始
  • 步骤 1:交换城市 AC 和 EF 之间的路径
  • 步骤 2:城市 GU 和 SQ 之间的路径被交换
  • ...
  • 最终获得城市之间的最佳行程

有没有一种方法,使用模拟退火,来保存优化过程的每个步骤,以便我可以一个一个地追溯对系统所做的每个更改,最终导致该特定解决方案?或者这违背了模拟退火的工作原理?

这是一个很棒的模拟退火算法,由@perrygeo 编写,使用旅行推销员示例从https://github.com/perrygeo/simanneal/blob/master/simanneal/anneal.py稍作修改: https ://github.com /perrygeo/simanneal/blob/master/examples/salesman.py (我所有的更改后面都是一行注释,前面是“”)

每次进行移动时都进行保存,从而构建了一个确实可追溯的庞大步骤列表。然而,它显然模仿了算法如何在解空间中探索和跳跃许多不同的位置,尤其是在高温下。

为了获得更直接收敛的步骤,我可以移动步骤节省线:

在下面

只有实际改进迄今为止找到的最佳解决方案的步骤被保存。但是,最终的步骤列表不再有助于重建行程(缺少步骤)。

这个问题是没有希望的并且是模拟退火如何工作的固有问题,还是有希望能够构建一个从随机到准最优的收敛步骤列表?

0 投票
0 回答
198 浏览

r - 使用预先编写的模拟退火包在 R 中寻找分区解决方案?

我有一个数据集,它由许多元素组成——分为两个不同的类别(每个类别的元素数量相等)——以及描述它们的两个连续变量,如下所示:

现在,我要做的是创建一个一对一配对列表,以便 category 的每个元素都与 categoryTriangle的一个元素配对Circle,并且定义 2D 空间中每个配对中的点之间的组合距离byVariable_1并且Variable_2尽可能小。换句话说,如果我必须从每个Triangle元素到一个Circle元素(但从不Circle两次到同一个元素),我想找出如何最小化总行进距离(见下图)。

看看这些漂亮的三角形和圆圈!

由于我真的不想尝试蛮力解决这个问题,所以我一直认为模拟退火可能是一种合适的优化方法。我也想在R工作。

好消息是我找到了几个在 R 中进行模拟退火的包,例如GenSAoptim。坏消息是我真的不知道如何利用这些包来满足我的特定输入需求。也就是说,作为输入,我想指定一个数字列表,表示我的列表中某个类别的元素,以及它们应该以什么顺序与属于另一个类别的另一组元素配对。但是,这意味着我在我的模拟退火算法中只想使用整数,并且我永远不希望同一个整数出现两次,这似乎与上述包的实现方式背道而驰。

有什么方法可以有效地使用一些预先编写的 R 模拟退火包,还是我需要为这个问题编写自己的方法?

0 投票
0 回答
214 浏览

ruby-on-rails - Ruby 模拟退火问题

我正在尝试基于我试图解决的 TSP 在 ruby​​ 上实现模拟退火(我从 java 转换了这段代码)。然而事实证明,退火使我的结果变得最差!(PlayerPath 给了我一条路径,我将在其中进行模拟退火 - 我通过执行贪心算法 1 得到了路径)。有人可以帮我检查代码,看看我是否有问题,或者只是模拟退火并不总是能让事情变得更好?

0 投票
1 回答
909 浏览

neural-network - 使用多种训练方法使用 Encog 训练 ANN

我想知道在使用弹性传播训练之前使用遗传算法、粒子群优化和模拟退火训练前馈神经网络是否会改善结果。

这是我正在使用的代码:

如您所见,一系列训练算法应该可以改善整体训练。

请让我知道这是否有意义以及代码是否正确。它似乎正在工作,但我想确定,因为有时我看到 GA 取得的进展是从 PSO 重置的。

谢谢