Evolver 0.1.0

Evolver 0.1.0

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最后发布2017年10月
SwiftSwift 版本4.0
SPM支持 SPM

Atsuya Sato 维护。



Evolver 0.1.0

  • Atsuya Sato

Evolver

Evolver 是一个 Swift 的遗传算法库。

用法

Evolver 的主要单元是 Generable 协议和 Evolver 类。

  1. 创建符合 Generable 协议的 Model
struct Player: Generable {
    var direction = Array(
        repeating: Gene.template(Direction.self, geneSize: Counter(Direction.self).count),
        count: 20
    )
    var action = Array(
        repeating: Gene.template(Action.self, geneSize: Counter(Action.self).count),
        count: 10
    )
}
  1. 准备符合 IntGeneBase 的枚举
enum Direction: Int, GeneBase {
    case left
    case right
    case up
    case down
}
  1. 实现评估函数
func evaluate(model: Player) -> Int {
・・・
}
  1. 模拟遗传算法
let result = Evolver.run(template: Player.self,
                        generations: 20,
                        individuals: 10,
                        completion: {  model, generation, individual in
    // Implement Evaluate model function    
    let score = self.evaluate(model: model)
    return score
})

switch result {
case .success(let model):
    for direction in model.direction {
        print(direction.value) // You can get enum case
    }
case .failure(let error):
    print(error)
}

技巧

Evolver 默认在主线程上进行模拟。
如果你想在子线程运行,使用 DispatchQueue

DispatchQueue.global(qos: .userInitiated).async {
    let result = Evolver.run(template: Player.self,
                            generations: 20,
                            individuals: 10,
                            completion: { model, generation, individual in
        let score = self.evaluate(model: model)
        return score
    })
    DispatchQueue.main.async {
        switch result {
        case .success(let model):
            print(model)
        case .failure(let error):
            print(error)
        }
    }
}

示例

许可证

Evolver 在 MIT 许可下可用。有关更多详细信息,请参阅 LICENSE 文件。