首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在iOS中使用Swift进行决策的最佳方式是什么

在iOS中使用Swift进行决策的最佳方式是什么
EN

Stack Overflow用户
提问于 2019-11-30 18:45:58
回答 2查看 290关注 0票数 3

我想用一个简单的AI做一个简单的应用程序。我做了大量的研究,找到了一些关于决策树、规则和行为树的文章。

我在展示新GKDecisionTree的WWDC2016上看到了一段视频。也许这对我的应用程序来说是一个简单的解决方案。

我尝试了这段代码,但在这一行得到了一个错误:

let tree = GKDecisionTree(attribute: "anrgy?")

参数类型“String”不符合预期的类型“NSObjectProtocol”

代码语言:javascript
复制
        // SETUP TREE
        let tree = GKDecisionTree(attribute: "anrgy?")
        let root = tree?.rootNode
        // ADD BRANCH

        // Create branches
        root.createBranch(value: true, attribute: "attack")
        let goAway = root.createBranch(value: false, attribute: "goAway")


        // Create actions for when nearby
        goAway.createBranch(withWeight: 9, attribute: "Left")
        goAway.createBranch(withWeight: 1, attribute: "Right")

        // Find action for answers
        // Find action for answers
        let answers = ["anrgy?" : true]
        tree.findActionForAnswers(answers: answers)

请让我知道,如果有更好的方法,一个简单的人工智能或如何解决这个例子。

谢谢你的帮助。

EN

回答 2

Stack Overflow用户

发布于 2019-11-30 19:10:28

这段代码正在运行:

代码语言:javascript
复制
        // SETUP TREE
        let tree = GKDecisionTree(attribute: "anrgy?" as NSObjectProtocol)
        let root = tree.rootNode
        // ADD BRANCH

        // Create branches
        root?.createBranch(value: true, attribute: "attack" as NSObjectProtocol)
        let goAway = root?.createBranch(value: false, attribute: "goAway" as NSObjectProtocol)


        // Create actions for when nearby
        goAway?.createBranch(weight: 9, attribute: "Left" as NSObjectProtocol)
        goAway?.createBranch(weight: 1, attribute: "Right" as NSObjectProtocol)

        // Find action for answers
        // Find action for answers
        let answers = ["anrgy?" : false]
        let decisionAction = tree.findAction(forAnswers: answers as [AnyHashable : NSObjectProtocol])
        print("Answer: \(String(describing: decisionAction!))")
    }

但是这是一个好的编码风格吗?还有比使用GKDecisionTree更好的方法吗?

票数 2
EN

Stack Overflow用户

发布于 2020-08-16 09:49:26

以下是基于您的示例使用学习决策树的替代方案。手动定义的决策树和学习的决策树都使用GKDecisionTree类,但初始化器不同:

代码语言:javascript
复制
let attributes = [ "angry?", "goAway" ]
let examples = [
    [true, 0],
    [false, 9],
    [false, 1],
]
let actions = [
    "attack",
    "Left",
    "Right",
]
let tree = GKDecisionTree(examples: examples as NSArray as! [[NSObjectProtocol]],
                          actions:    actions   as NSArray as! [NSObjectProtocol],
                          attributes: attributes as NSArray as! [NSObjectProtocol])

let answers = ["angry?" : true as NSObjectProtocol, 
               "goAway": 1 as NSObjectProtocol]
let decisionAction2 = tree.findAction(forAnswers: answers)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59115383

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档