问题标签 [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 回答
366 浏览

java - 多层神经网络上的退火:XOR 实验

我是这个概念的初学者以及我尝试学习的前馈型神经网络(2x2x1的拓扑 ):

因此,[-4,4] 的范围似乎比其他范围更好。

问题:与温度限制和温度下降率相比,有没有办法找到重量和偏差的适当限制?

注意:我在这里尝试两种方法。首先是对每次试验一次随机化所有权重和偏差。其次是在每次试验中仅随机化单个权重和单个偏差。(降低温度之前的 50 次迭代)。单一的重量变化会产生更差的结果。

多次尝试,结果几乎相同。重新退火是逃避更深的局部最小值的唯一解决方案吗?

我需要根据总神经元数和层数以及起始/启动温度的合适的权重/偏差范围/限制。3x6x5x6x1 可以计算 3 位输入并给出输出,可以近似步进函数,但我需要始终使用范围。

对于这个训练数据集,输出误差太大(193 个数据点,2 个输入,1 个输出):

193 2 1 0.499995 0.653846 1 0.544418 0.481604 1 0.620200 0.320118 1 0.595191 0.404816 0 0.404809 0.595184 1 0.171310 0.636142 0 0.014323 0.403392 0 0.617884 0.476556 0 0.391548 0.478424 1 0.455912 0.721618 0 0.615385 0.500005 0 0.268835 0.268827 0 0.812761 0.187243 0 0.076923 0.499997 1 0.769231 0.500006 0 0.650862 0.864223 0 0.799812 0.299678 1 0.328106 0.614848 0 0.591985 0.722088 0 0.692308 0.500005 1 0.899757 0.334418 0 0.484058 0.419839 1 0.200188 0.700322 0 0.863769 0.256940 0 0.384615 0.499995 1 0.457562 0.508439 0 0.515942 0.580161 0 0.844219 0.431535 1 0.456027 0.529379 0 0.235571 0.104252 0 0.260149 0.400644 1 0.500003 0.423077 1 0.544088 0.278382 1 0.597716 0.540480 0 0.562549 0.651021 1 0.574101 0.127491 1 0.545953 0.731052 0 0.649585 0.350424 1 0.607934 0.427886 0 0.499995 0.807692 1 0.437451 0.348979 0 0.382116 0.523444 1 1 0.500000 1 0.731165 0.731173 1 0.500002 0.038462 0 0.683896 0.536585 1 0.910232 0.581604 0 0.499998 0.961538 1 0.903742 0.769772 1 0.543973 0.470621 1 0.593481 0.639914 1 0.240659 0.448408 1 0.425899 0.872509 0 0 0.500000 0 0.500006 0.269231 1 0.155781 0.568465 0 0.096258 0.230228 0 0.583945 0.556095 0 0.550746 0.575954 0 0.680302 0.935290 1 0.693329 0.461550 1 0.500005 0.192308 0 0.230769 0.499994 1 0.721691 0.831791 0 0.621423 0.793156 1 0.735853 0.342415 0 0.402284 0.459520 1 0.589105 0.052045 0 0.189081 0.371208 0 0.533114 0.579952 0 0.251594 0.871762 1 0.764429 0.895748 1 0.499994 0.730769 0 0.415362 0.704317 0 0.422537 0.615923 1 0.337064 0.743842 1 0.560960 0.806496 1 0.810919 0.628792 1 0.319698 0.064710 0 0.757622 0.393295 0 0.577463 0.384077 0 0.349138 0.135777 1 0.165214 0.433402 0 0.241631 0.758362 0 0.118012 0.341772 1 0.514072 0.429271 1 0.676772 0.676781 0 0.294328 0.807801 0 0.153846 0.499995 0 0.500005 0.346154 0 0.307692 0.499995 0 0.615487 0.452168 0 0.466886 0.420048 1 0.440905 0.797064 1 0.485928 0.570729 0 0.470919 0.646174 1 0.224179 0.315696 0 0.439040 0.193504 0 0.408015 0.277912 1 0.316104 0.463415 0 0.278309 0.168209 1 0.214440 0.214435 1 0.089768 0.418396 1 0.678953 0.767832 1 0.080336 0.583473 1 0.363783 0.296127 1 0.474240 0.562183 0 0.313445 0.577267 0 0.416055 0.443905 1 0.529081 0.353826 0 0.953056 0.687662 1 0.534725 0.448035 1 0.469053 0.344394 0 0.759341 0.551592 0 0.705672 0.192199 1 0.385925 0.775385 1 0.590978 0.957385 1 0。406519 0.360086 0 0.409022 0.042615 0 0.264147 0.657585 1 0.758369 0.241638 1 0.622380 0.622388 1 0.321047 0.232168 0 0.739851 0.599356 0 0.555199 0.366750 0 0.608452 0.521576 0 0.352098 0.401168 0 0.530947 0.655606 1 0.160045 0.160044 0 0.455582 0.518396 0 0.881988 0.658228 0 0.643511 0.153547 1 0.499997 0.576923 0 0.575968 0.881942 0 0.923077 0.500003 0 0.449254 0.424046 1 0.839782 0.727039 0 0.647902 0.598832 1 0.444801 0.633250 1 0.392066 0.572114 1 0.242378 0.606705 1 0.136231 0.743060 1 0.711862 0.641568 0 0.834786 0.566598 1 0.846154 0.500005 1 0.538462 0.500002 1 0.379800 0.679882 0 0.584638 0.295683 1 0.459204 0.540793 0 0.331216 0.430082 0 0.672945 0.082478 0 0.671894 0.385152 1 0.046944 0.312338 0 0.499995 0.884615 0 0.542438 0.491561 1 0.540796 0.459207 1 0。828690 0.363858 1 0.785560 0.785565 0 0.686555 0.422733 1 0.231226 0.553456 1 0.465275 0.551965 0 0.378577 0.206844 0 0.567988 0.567994 0 0.668784 0.569918 1 0.384513 0.547832 1 0.288138 0.358432 1 0.432012 0.432006 1 0.424032 0.118058 1 0.296023 0.703969 1 0.525760 0.437817 1 0.748406 0.128238 0 0.775821 0.684304 1 0.919664 0.416527 0 0.327055 0.917522 1 0.985677 0.596608 1 0.356489 0.846453 0 0.500005 0.115385 1 0.377620 0.377612 0 0.559095 0.202936 0 0.410895 0.947955 1 0.187239 0.812757 1 0.768774 0.446544 0 0.614075 0.224615 0 0.350415 0.649576 0 0.160218 0.272961 1 0.454047 0.268948 1 0.306671 0.538450 0 0.323228 0.323219 1 0.839955 0.839956 1 0.636217 0.703873 0 0.703977 0.296031 0 0.662936 0.256158 0 0.100243 0.665582 1686555 0.422733 1 0.231226 0.553456 1 0.465275 0.551965 0 0.378577 0.206844 0 0.567988 0.567994 0 0.668784 0.569918 1 0.384513 0.547832 1 0.288138 0.358432 1 0.432012 0.432006 1 0.424032 0.118058 1 0.296023 0.703969 1 0.525760 0.437817 1 0.748406 0.128238 0 0.775821 0.684304 1 0.919664 0.416527 0 0.327055 0.917522 1 0.985677 0.596608 1 0.356489 0.846453 0 0.500005 0.115385 1 0.377620 0.377612 0 0.559095 0.202936 0 0.410895 0.947955 1 0.187239 0.812757 1 0.768774 0.446544 0 0.614075 0.224615 0 0.350415 0.649576 0 0.160218 0.272961 1 0.454047 0.268948 1 0.306671 0.538450 0 0.323228 0.323219 1 0.839955 0.839956 1 0.636217 0.703873 0 0.703977 0.296031 0 0.662936 0.256158 0 0.100243 0.665582 1686555 0.422733 1 0.231226 0.553456 1 0.465275 0.551965 0 0.378577 0.206844 0 0.567988 0.567994 0 0.668784 0.569918 1 0.384513 0.547832 1 0.288138 0.358432 1 0.432012 0.432006 1 0.424032 0.118058 1 0.296023 0.703969 1 0.525760 0.437817 1 0.748406 0.128238 0 0.775821 0.684304 1 0.919664 0.416527 0 0.327055 0.917522 1 0.985677 0.596608 1 0.356489 0.846453 0 0.500005 0.115385 1 0.377620 0.377612 0 0.559095 0.202936 0 0.410895 0.947955 1 0.187239 0.812757 1 0.768774 0.446544 0 0.614075 0.224615 0 0.350415 0.649576 0 0.160218 0.272961 1 0.454047 0.268948 1 0.306671 0.538450 0 0.323228 0.323219 1 0.839955 0.839956 1 0.636217 0.703873 0 0.703977 0.296031 0 0.662936 0.256158 0 0.100243 0.665582 1567994 0 0.668784 0.569918 1 0.384513 0.547832 1 0.288138 0.358432 1 0.432012 0.432006 1 0.424032 0.118058 1 0.296023 0.703969 1 0.525760 0.437817 1 0.748406 0.128238 0 0.775821 0.684304 1 0.919664 0.416527 0 0.327055 0.917522 1 0.985677 0.596608 1 0.356489 0.846453 0 0.500005 0.115385 1 0.377620 0.377612 0 0.559095 0.202936 0 0.410895 0.947955 1 0.187239 0.812757 1 0.768774 0.446544 0 0.614075 0.224615 0 0.350415 0.649576 0 0.160218 0.272961 1 0.454047 0.268948 1 0.306671 0.538450 0 0.323228 0.323219 1 0.839955 0.839956 1 0.636217 0.703873 0 0.703977 0.296031 0 0.662936 0.256158 0 0.100243 0.665582 1567994 0 0.668784 0.569918 1 0.384513 0.547832 1 0.288138 0.358432 1 0.432012 0.432006 1 0.424032 0.118058 1 0.296023 0.703969 1 0.525760 0.437817 1 0.748406 0.128238 0 0.775821 0.684304 1 0.919664 0.416527 0 0.327055 0.917522 1 0.985677 0.596608 1 0.356489 0.846453 0 0.500005 0.115385 1 0.377620 0.377612 0 0.559095 0.202936 0 0.410895 0.947955 1 0.187239 0.812757 1 0.768774 0.446544 0 0.614075 0.224615 0 0.350415 0.649576 0 0.160218 0.272961 1 0.454047 0.268948 1 0.306671 0.538450 0 0.323228 0.323219 1 0.839955 0.839956 1 0.636217 0.703873 0 0.703977 0.296031 0 0.662936 0.256158 0 0.100243 0.665582 1775821 0.684304 1 0.919664 0.416527 0 0.327055 0.917522 1 0.985677 0.596608 1 0.356489 0.846453 0 0.500005 0.115385 1 0.377620 0.377612 0 0.559095 0.202936 0 0.410895 0.947955 1 0.187239 0.812757 1 0.768774 0.446544 0 0.614075 0.224615 0 0.350415 0.649576 0 0.160218 0.272961 1 0.454047 0.268948 1 0.306671 0.538450 0 0.323228 0.323219 1 0.839955 0.839956 1 0.636217 0.703873 0 0.703977 0.296031 0 0.662936 0.256158 0 0.100243 0.665582 1775821 0.684304 1 0.919664 0.416527 0 0.327055 0.917522 1 0.985677 0.596608 1 0.356489 0.846453 0 0.500005 0.115385 1 0.377620 0.377612 0 0.559095 0.202936 0 0.410895 0.947955 1 0.187239 0.812757 1 0.768774 0.446544 0 0.614075 0.224615 0 0.350415 0.649576 0 0.160218 0.272961 1 0.454047 0.268948 1 0.306671 0.538450 0 0.323228 0.323219 1 0.839955 0.839956 1 0.636217 0.703873 0 0.703977 0.296031 0 0.662936 0.256158 0 0.100243 0.665582 1839956 1 0.636217 0.703873 0 0.703977 0.296031 0 0.662936 0.256158 0 0.100243 0.665582 1839956 1 0.636217 0.703873 0 0.703977 0.296031 0 0.662936 0.256158 0 0.100243 0.665582 1

0 投票
1 回答
2217 浏览

java - 使用模拟退火来训练神经网络的非常大的数据集

由于即使对于我的多层前馈网络的 10-15 组两个输入,模拟退火也需要太多时间,我如何使用 100k 数据集来训练 8-9 个输入?

一些猜测:

  • 从随机位置采样。(例如:200 组螺旋问题只有 10 次读取,每次使用随机数据)
  • 使用数据量化器将 200 个数据集分成 20 个量化区域,以提供 20 倍的神经网络

但是这些不能提供相同的输出,第一个选项不能保证找到哪个螺旋拥有输入位置(错误的测试用例),第二个选项需要 20 倍以上的神经元和计算能力。

每次迭代采用 100k 平方和的输出误差,使其收敛时间比 10 平方和版本长得多。因为找到一个更稳定的状态的概率太低了。也许有一种方法可以在不计算所有数据的情况下从第一个数据迭代到最后(从一个数据中获得更好的错误状态非常容易,但是如何迭代?当达到第二个数据时,第一个数据会被遗忘,因为模拟退火是随机动作)

四个数据集的示例:{ {0,0} {0,1} {1,0} {1,1} } ----> {0,1,1,0} ---->easy

100k 组数据:两个大螺旋的坐标,NN 试图通过数据找到一个独特性。难的。

什么是核心方式?

收敛第一个数据然后第二个然后......最后一个数据,最后降低温度?

完全收敛第一个数据,降低温度,完成后,对其他数据做同样的事情吗?

按大于 10-15 的批次进行操作需要很长时间。

我们可以取两个数据的收敛权重并获得这些权重的平均值并使用吗?

例如,对于孢子类游戏的生物创造者,当一个生物有 40 条腿时,教走路可能会很困难,因为会有很多随机情况,并且需要实时学习(与游戏同时进行)跑步)

最重要的是:在线学习是否可以接受模拟退火,如果可以,如何?任何已知的伪代码?

例如,使用 gpu 和 mapped(calc) 在一秒(或两秒)内对超过 190 个数据集进行训练,以纳秒-微秒为单位:

训练前: 在此处输入图像描述

训练结束后: 在此处输入图像描述

(可选)强化以获得硬分离的边界(在此示例中,红色和蓝色以 0.5f 边界分隔) 在此处输入图像描述

但是这种类型的学习仅适用于两个输入(二维),并且对于每个输出都必须有另一个映射。

任何可以做这些图片中的事情的免费 java 库都将不胜感激。

0 投票
2 回答
218 浏览

algorithm - 你怎么知道你已经接近解决方案了?

我已经搜索但没有找到答案。

我正在尝试使用在 Java 中实现的模拟退火 (SA) 算法来解决 8 个皇后谜题(更具体地说是 N 个皇后谜题),但在目标函数方面我有点卡住了。我怎么知道我是否接近我的目标(最佳解决方案)?

我想出了两种方法来给尝试“积分”(积分越多越好):

  1. 有多少皇后是合法的

  2. 棋盘上有多少个合法的皇后 + 下一个合法放置的皇后的可用位置数量

但我不能决定这些是否有好处。你们能给我一些提示或任何其他输入吗?:)

0 投票
1 回答
58 浏览

java - 仅在通过文件接收到(非用户)输入时执行的 Java 程序

作为我研究项目的一部分,我编写了一个实现模拟退火的 Java 搜索程序。但是,这种搜索不仅仅发生在 Java 程序中,因为我应该使用另一个用 C 编写的程序来计算总成本函数。所以基本上搜索例程是这样的:

示例成本函数:最小化 {A + B} 其中表达式的第一部分 A 将在我的程序中完成,第二部分 B 将是从 C 程序计算的正则化项。我知道我必须这样做似乎很奇怪,但我没有时间/资源/适当的背景来重新实现该正则化程序作为我的 Java 程序的一部分。基本上我正在尝试通过两部分搜索来搜索最佳值向量。

我希望从 Java 输出当前的解决方案(作为 C 程序理解的格式化文件)并将其提供给 C 程序以进行正则化(我已经完成了这部分)。这就是我坚持的地方:当 C 程序运行时,我希望让我的 Java 程序等到它接收到来自 C 程序的输入(以文件的形式)。所以基本上我的程序向另一个程序提供输入,然后停止它的执行(暂时),直到那个 C 程序完成它的工作并返回一个值文件,用于重新计算要在下一次退火迭代中使用的值搜索。

我猜我应该使用某种线程方法,例如等待和通知,但我真的不确定。如果程序依赖于用户输入,那将非常简单。但是,就目前而言,该程序仅在接收到文件输入时才执行。

请指教!如果这个问题冗长且令人困惑,我提前道歉。我愿意澄清任何问题。谢谢你。

0 投票
1 回答
924 浏览

c++ - 具有实际价值最大化的模拟退火

我正在研究模拟退火,试图解决背包问题,我必须最大化适应度(包中物品的价值)。

通过硬计算,我们知道最好的解决方案是{1,1,0.4,1,0}。但是我没有得到这个解决方案。

我将用伪代码解释我的 c++ 代码,以避免这里的所有长代码。

基本上这是我的代码。我的问题

  1. 在执行交换的第 2 步中,目前我正在交换数组的元素。这是对的吗?还是我应该跟踪以前的解决方案并将当前元素 (i) 与以前的解决方案元素交换?(这只是一个想法)。
  2. 当在数组中使用实际值时,我如何在执行期间告诉系统先前的解决方案接近最大边界,因为在我当前的实现中,我在第一步中连续生成随机值,该随机值重复直到系统冷却。

最后,也许我的实现中有一些巨大的错误,如果我能在这个问题上得到帮助,我真的很感激

0 投票
0 回答
163 浏览

c++ - 模拟退火:为什么在运行时给我最大的价值?

我制作了一个矩阵,在其中生成随机数 0 和 1。该矩阵表示以位为单位生成的数字。在此之后,我将这些位转换为加载到向量中的实数。我对 Griewangk 函数使用模拟退火算法来确定函数的最小值。但是当我将较小的解决方案保存到矢量函数中时,一些解决方案会更大。我不明白为什么。代码有什么问题?

0 投票
1 回答
317 浏览

graph - 使用模拟退火元启发式的作业车间调度

我正在使用模拟退火实现一个作业车间调度程序 - 每个实例都由一个析取图表示(在此处描述)。基本上,元启发式的邻域动作是反转位于关键路径上的随机选择的析取弧。问题在于,在某些情况下,元启发式到达一个点,即图中的关键路径仅由连接弧组成,这导致无法反转弧的情况。有没有办法克服这个问题?

0 投票
6 回答
223 浏览

java - 模拟退火代码的 OutOfMemory 问题

我正在使用模拟退火算法的代码来解决旅行商问题。城市数量相对较少,即30-40 个左右。问题是在第 1000 次迭代时,我收到 OutOfMemory 错误消息(在函数“GO”内)。为什么会这样?如何解决这个问题?

0 投票
0 回答
681 浏览

random - 随机突变爬山问题

嗨,我正在尝试编写一些简单的代码来使用随机突变爬山来解决旅行商问题。我已经创建了一个 Tour 类:-

我的 RMHC 方法如下所示:-

我遇到的问题是,当我在 RMHC 中调用我的 smallChange 方法时,它似乎改变了旧解决方案和新解决方案的 Tour。我在一个 48 大小的数据集上运行了几次迭代,得到了以下输出:-

0 投票
1 回答
1462 浏览

algorithm - 如何为 SA 算法制定 8-Puzzle?

如何制定 8 谜题以使用模拟退火算法求解?

我想了很多,但我找不到解决方案!