Algorithm 确定RTS中一组单元的方法

Algorithm 确定RTS中一组单元的方法,algorithm,cluster-analysis,data-mining,Algorithm,Cluster Analysis,Data Mining,寻找一种算法,可以用来确定在像星际争霸这样的实时战略游戏中作为一个团队一起移动的单位组。我目前研究的方向是聚类算法,但很难找到哪种算法最有效,因为单位是作为一个整体移动的,而不仅仅是静止不动的。任何帮助都会很好。您可能想看看一些分类算法,比如or算法是非常简单和标准的方法。您可以检查它是否有效:K-means不是最佳选择,因为它要求您指定希望找到的集群数量。有些可能包含单个对象 我建议你可以。特别是通用版GDBSCAN 为此,您需要定义一个单位的邻域是什么——例如,在2范围内属于同一玩家且大致沿

寻找一种算法,可以用来确定在像星际争霸这样的实时战略游戏中作为一个团队一起移动的单位组。我目前研究的方向是聚类算法,但很难找到哪种算法最有效,因为单位是作为一个整体移动的,而不仅仅是静止不动的。任何帮助都会很好。

您可能想看看一些分类算法,比如or

算法是非常简单和标准的方法。您可以检查它是否有效:

K-means不是最佳选择,因为它要求您指定希望找到的集群数量。有些可能包含单个对象

我建议你可以。特别是通用版GDBSCAN

为此,您需要定义一个单位的邻域是什么——例如,在
2
范围内属于同一玩家且大致沿同一方向移动的任何其他单位(在
x
y
速度中达到某个增量阈值)

下一步,您需要指定何时考虑单元开始形成初始集群,称为“核心点”。假设最小值为

3
个单位


然后使用DBSCAN是非常基本的,应该会给您带来好的结果。您需要稍微微调参数。像这样的最小尺寸显然是一个输入参数,并且取决于您的用例。邻域定义也是如此:您正在寻找移动到同一方向的组,这些信息需要以某种方式放入算法中。使用GDBSCAN,通过调整邻域定义,这很简单。

Dunno,他似乎更希望聚类而不是分类。没错,但他可以使用这些算法将组分类为一个聚类。许多分类算法允许您按簇对组进行分类,或者如果知道要查找多少簇,则自动检测簇。您的数据是什么格式的?你认为位置快照上的聚类算法不够充分的具体原因是什么?是实时的,还是查看历史(那么你有可用的时空,还是只有空间)?首先,我会看既有空间又有时间的回放,但将来也会看实时的。我会看一看,谢谢这听起来像是我在寻找的。+1表示k-means不是固定数量集群(k)的b/c的好选择。您可以采用RANSAC/随机方法,多次应用k-均值并选择最佳结果,但DBSCAN似乎是更好的选择。