7个版本

使用旧版Rust 2015

0.2.3 2016年5月3日
0.2.2 2016年3月31日
0.1.2 2016年3月25日

#2 in #群体

45 每月下载

MIT许可证

310KB
810

包含 (ELF exe/lib, 780KB) 构建脚本构建

Build Status

abc-rs

Rust中Karaboga的人工蜂群算法(并行版!)

文档,包括示例代码。

还有一个演示,它以动画的形式展示了算法,供您欣赏。它还使用了几个有用的技术,将算法应用于复杂、持久的状态。

可在crates.io上作为abc获取。

算法

人工蜂群是一种优化算法。它通过派遣概念上的“蜜蜂”来处理这些解决方案来考虑一组解决方案。有三种蜜蜂类型

  • 一种 工蜂 专门用于每个解决方案。每次工蜂运行时,它会查看当前解决方案附近的一个解决方案,并保留每个改进。
  • 观察者蜜蜂像工蜂一样,但不是专门针对单个解决方案。相反,它们查看所有活跃的解决方案,并随机选择一个来工作。观察者通常更喜欢工作在适应性更高的解决方案上。
  • 当一个工蜂或观察者的解决方案似乎是一个局部最大值时,它将成为一个 侦察兵。侦察包括生成一个新的、随机的解决方案以摆脱困境。

蜜蜂能为你做什么

ABC算法可以,并且已经被应用于各种应用。与许多此类算法一样,其逻辑对它所工作的领域相当无偏见。事实上,使用该算法的前提条件是

  • 一个具有解决方案的数据结构,
  • 一种生成新、随机解决方案的方法,
  • 一种生成“接近”现有解决方案的方法,以及
  • 一个用于评估解决方案的适应性函数。

解决方案可以是游戏AI、建筑蓝图或仅仅是空间中的一个点,而abc包将它们都视为一样。只需为所选类型实现Context特质,构建一个Hive,然后开始运行。

同步和异步运行

说到运行,abc支持两种运行模式

并行处理

abc库利用Rust卓越的并发支持来探索相同的空间。这意味着可以跨多个CPU核心分配繁重的计算,或者在没有阻塞的情况下运行I/O密集型评估。蜂群维护一个蜜蜂队列,每个线程从队列中取出蜜蜂并将蜜蜂的逻辑应用于解决方案。因此,在某一时刻,每个线程中都有一个不同的蜜蜂在工作。

依赖关系