测试已测试 | ✓ |
语言语言 | SwiftSwift |
许可证 | MIT |
发布最后发布 | 2017年10月 |
SwiftSwift 版本 | 4.0 |
SPM支持 SPM | ✗ |
由 Atsuya Sato 维护。
Evolver 是一个 Swift 的遗传算法库。
Evolver 的主要单元是 Generable
协议和 Evolver
类。
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
)
}
Int
与 GeneBase
的枚举enum Direction: Int, GeneBase {
case left
case right
case up
case down
}
func evaluate(model: Player) -> Int {
・・・
}
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 文件。