7个版本
使用旧版Rust 2015
0.2.3 | 2016年5月3日 |
---|---|
0.2.2 | 2016年3月31日 |
0.1.2 | 2016年3月25日 |
#2 in #群体
45 每月下载
310KB
810 行
包含 (ELF exe/lib, 780KB) 构建脚本构建
abc-rs
Rust中Karaboga的人工蜂群算法(并行版!)
文档,包括示例代码。
还有一个演示,它以动画的形式展示了算法,供您欣赏。它还使用了几个有用的技术,将算法应用于复杂、持久的状态。
算法
人工蜂群是一种优化算法。它通过派遣概念上的“蜜蜂”来处理这些解决方案来考虑一组解决方案。有三种蜜蜂类型
- 一种 工蜂 专门用于每个解决方案。每次工蜂运行时,它会查看当前解决方案附近的一个解决方案,并保留每个改进。
- 观察者蜜蜂像工蜂一样,但不是专门针对单个解决方案。相反,它们查看所有活跃的解决方案,并随机选择一个来工作。观察者通常更喜欢工作在适应性更高的解决方案上。
- 当一个工蜂或观察者的解决方案似乎是一个局部最大值时,它将成为一个 侦察兵。侦察包括生成一个新的、随机的解决方案以摆脱困境。
蜜蜂能为你做什么
ABC算法可以,并且已经被应用于各种应用。与许多此类算法一样,其逻辑对它所工作的领域相当无偏见。事实上,使用该算法的前提条件是
- 一个具有解决方案的数据结构,
- 一种生成新、随机解决方案的方法,
- 一种生成“接近”现有解决方案的方法,以及
- 一个用于评估解决方案的适应性函数。
解决方案可以是游戏AI、建筑蓝图或仅仅是空间中的一个点,而abc
包将它们都视为一样。只需为所选类型实现Context
特质,构建一个Hive
,然后开始运行。
同步和异步运行
说到运行,abc
支持两种运行模式
- 以固定轮次运行并返回最佳解决方案,
- 持续运行直到停止,或
- 在后台持续运行并通过Rust通道发送每个改进的解决方案。
并行处理
abc
库利用Rust卓越的并发支持来探索相同的空间。这意味着可以跨多个CPU核心分配繁重的计算,或者在没有阻塞的情况下运行I/O密集型评估。蜂群维护一个蜜蜂队列,每个线程从队列中取出蜜蜂并将蜜蜂的逻辑应用于解决方案。因此,在某一时刻,每个线程中都有一个不同的蜜蜂在工作。