问题标签 [heuristics]

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 回答
1238 浏览

artificial-intelligence - Minimax 的评估函数是启发式函数吗?

Minimax 的评估函数是启发式函数吗?

0 投票
5 回答
4661 浏览

heuristics - 如何在无网格的 2D 平面上使用 A* 寻路算法?

如何在没有节点或单元的无网格 2D 平面上实现 A* 算法?我需要对象在目标途中绕过相对较多的静态和移动障碍物。我当前的实现是在对象周围创建八个点,并将它们视为可能是对象潜在位置的虚构相邻正方形的中心。然后我计算每个启发式函数并选择最好的。起点和运动点之间的距离,以及运动点和目标之间的距离我用勾股定理计算正常的方式。问题是这样的对象经常忽略所有的障碍物,甚至更经常地被卡在两个位置之间来回移动。我意识到 mu 问题可能看起来多么愚蠢,但感谢您提供任何帮助。

0 投票
7 回答
307 浏览

java - 让代码尝试不同的事情,直到成功,整齐

这是我第二次发现自己编写这种代码,并决定必须有一种更易读的方法来完成它:

我的代码试图找出一些东西,但定义不完全,或者有很多方法可以完成它。我希望我的代码尝试几种方法来解决它,直到它成功,或者它用完了策略。但是我还没有找到一种方法来使这个整洁和可读。

我的特殊情况:我需要从接口中找到一种特定类型的方法。它可以被注释为明确的,但它也可以是唯一合适的方法(根据它的参数)。

所以,我的代码目前如下所示:

一定有更好的办法……</p>

编辑:如果找到,则方法返回一个方法,null否则返回。我可以将其切换为 try/catch 逻辑,但这几乎不会使其更具可读性。

Edit2:不幸的是,我只能接受一个答案:(

0 投票
3 回答
1249 浏览

c++ - 论文中的概率密度函数,使用 C++ 实现,未按预期工作

所以我正在实现一个启发式算法,我遇到了这个函数。

我有一个 1 到 n 的数组(C 上的 0 到 n-1,w/e)。我想选择一些我将复制到另一个数组的元素。给定一个参数 y,(0 < y <= 1),我想要一个平均数为 (y * n) 的数字分布。这意味着每当我调用这个函数时,它都会给我一个介于 0 和 n 之间的数字,这些数字的平均值是 y*n。

根据作者的说法,“l”是一个随机数:0 < l < n。在我的测试代码中,它当前生成 0 <= l <= n。而且我有正确的代码,但我现在已经搞砸了几个小时,而且我懒得把它编码回来。

所以我编写了函数的第一部分,对于 y <= 0.5,我将 y 设置为 0.2,将 n 设置为 100。这意味着它必须返回一个介于 0 和 99 之间的数字,平均为 20。结果不在0 和 n,但有些浮动。n 越大,这个浮点数就越小。

这是 C 测试代码。“x”是“l”参数。

以下是一些结果(截断 5 位小数):

文章是:

http://www.scribd.com/doc/3097936/cAS-The-Cunning-Ant-System

第 6 页和第 7 页。

或在谷歌上搜索“cAS:狡猾的蚂蚁系统”。

那我做错了什么?我不相信作者是错的,因为有超过 5 篇论文描述了相同的功能。

我所有的互联网给任何帮助我的人。这对我的工作很重要。

谢谢 :)

0 投票
2 回答
198 浏览

optimization - 寻找想法/参考/关键字:搜索算法的自适应参数控制(在线学习)

我正在寻找关于组合优化中搜索算法参数(在线学习)的自适应参数控制的想法/经验/参考/关键字。

更详细一点:

我有一个框架,负责优化硬组合优化问题。这是在一些以迭代方式使用的“小型启发式”的帮助下完成的(大型邻域搜索;破坏和重建方法)。这些“小启发式”的每个算法都采用一些外部参数,这些参数在某种程度上控制着启发式逻辑(目前:只是随机值;某种噪声;使搜索多样化)。

现在我希望有一个控制框架,用于以改进收敛的方式选择这些参数,尽可能通用,以便以后在不更改参数控制的情况下添加新的启发式方法。

至少有两个一般性的决定需要做出:

  • A:选择在下一次迭代中使用的算法对(一个销毁算法和一个重建算法)。
  • B:选择算法的随机参数。

唯一的反馈是新发现的解决方案的评估功能。这让我想到了强化学习这个话题。这是正确的方向吗?

不是真正的学习行为,但目前的简单想法是:

  • A:根据迭代期间收集的一些性能值进行轮盘赌选择(接近过去的比旧的更有价值)。因此,如果启发式 1 确实找到了所有新的全局最佳解决方案 -> 选择这个的可能性很高。
  • B:还不知道。也许可以在 (0,1) 范围内使用一些不均匀的随机值,我正在收集一些变化的动量。因此,如果启发式 1 上次使用 alpha = 0.3 并且没有找到新的最佳解决方案,则使用 0.6 并找到新的最佳解决方案 -> 有朝向 1 的动量 -> 下一个随机值可能大于 0.3。可能的问题:振荡

需要注意的事项: - 一种特定算法的良好收敛所需的参数可能会发生巨大变化 -> 开始时可能需要更多的多样化操作,最后需要更多的强化操作。- 在一对特定的破坏/重建算法(有时称为:耦合邻域)中可能会产生良好的协同效应。怎么会认出这样的东西?那还在强化学习领域吗?- 不同的算法由不同数量的参数控制(有些取 1,有些取 3)。

有什么想法、经验、参考资料(论文)、关键字(ml-topics)吗?
如果有关于以离线学习方式决定(b)的想法。毫不犹豫地提到这一点。

感谢您的输入。

萨沙

0 投票
2 回答
1597 浏览

algorithm - 异常检测算法

我的任务是使用机器学习算法从各种格式的数据(例如电子邮件、即时消息等)中检测异常(已知或未知)。

  1. 您最喜欢和最有效的异常检测算法是什么?

  2. 他们的局限和最佳点是什么?

  3. 你会建议如何解决这些限制?

非常感谢所有建议。

0 投票
2 回答
8676 浏览

c# - A-star (A*) 的曼哈顿启发式函数

我在这里找到了这个算法。

我有一个问题,我似乎无法理解如何设置和传递我的启发式函数。

如您所见,它接受 2 个函数,一个距离和一个估计函数。

使用曼哈顿启发式距离函数,我需要采用 2 个参数。我是否需要修改他的源并将其更改为接受 TNode 的 2 个参数,以便我可以将曼哈顿估计值传递给它?这意味着第 4 个参数将如下所示:

并将估计函数更改为:

我的曼哈顿功能是:

0 投票
2 回答
2452 浏览

algorithm - 计算关键字与短文本(50 - 100 字)的相关性的算法

我想计算关键字与简短描述文本的相关性。就效率和易于实施而言,最佳方法是什么。我正在使用 C++?

0 投票
2 回答
16208 浏览

algorithm - 曼哈顿距离如何成为可接受的启发式?

在计算 1 个图块的移动时,是否会导致其他图块达到其目标状态,这不是真的吗?因此,计算每个图块可以让我们获得比达到目标状态所需的最小移动次数更多的计数?

这个问题是在 15-Puzzle 的曼哈顿距离的背景下。

这是不同的问题:

我们可以使用曼哈顿距离作为 N-Puzzle 的可接受启发式算法吗?为了实现 A* 搜索,我们需要一个可接受的启发式算法。曼哈顿启发式是候选人吗?如果是,您如何反驳上述论点(问题的前 3 句话)?

定义: A*是一种搜索算法。它使用启发式函数来确定到目标​​的估计距离。只要这个启发式函数从不高估到目标的距离,算法就会找到最短路径,可能比广度优先搜索更快。满足该条件的启发式是可接受的。

0 投票
3 回答
4390 浏览

algorithm - malloc 的最佳启发式

考虑使用 malloc() 在碎片堆中分配 x 字节的内存。假设堆有多个大小大于 x 字节的连续位置。

哪个是最好的(导致最少的堆浪费)启发式选择以下位置?

  1. 选择大于 x 字节的最小位置。
  2. 选择大于 x 字节的最大位置。

我的直觉是大于 x 字节的最小位置。我不确定哪个是实践中最好的。

不,这不是任何作业问题。我在读这个malloc() 和 free() 如何工作?这看起来是一个很好的后续问题。