Artificial intelligence 当从目标回归规划时,我如何在GOAP中加入变量?
我正在阅读以下资源: 这是: 我用*做了一个向前搜索计划;但我现在正试图向后搜索效率收益 奥金特别说 图2中所示的规划示例由具有常数的操作组成 先决条件和效果的布尔值,但需要指出的是 前提条件和效果也可以用变量表示。规划者解决这些问题 从目标回归时的变量。变量为计划器增加了力量和灵活性, 因为它现在可以满足更一般的先决条件。例如,使用 将角色移动到可变目的地的效果要比Goto强大得多 移动到固定的预定位置的动作 因此,在实施之前,我并没有试图将其可视化;但我无法解决如何解决远离需要的变量:Artificial intelligence 当从目标回归规划时,我如何在GOAP中加入变量?,artificial-intelligence,planning,Artificial Intelligence,Planning,我正在阅读以下资源: 这是: 我用*做了一个向前搜索计划;但我现在正试图向后搜索效率收益 奥金特别说 图2中所示的规划示例由具有常数的操作组成 先决条件和效果的布尔值,但需要指出的是 前提条件和效果也可以用变量表示。规划者解决这些问题 从目标回归时的变量。变量为计划器增加了力量和灵活性, 因为它现在可以满足更一般的先决条件。例如,使用 将角色移动到可变目的地的效果要比Goto强大得多 移动到固定的预定位置的动作 因此,在实施之前,我并没有试图将其可视化;但我无法解决如何解决远离需要的变量:
KEY CURRENT GOAL
itemStockpiled false true
------------------------------------------
StockpileItem Effect: itemStockpiled true
Precond: hasItem ?itemId? **** How can I test this?
agentAtPosition ?stockPos?
itemStockpiled true true
hasItem 0 ?itemId?
agentAtPosition ??? ?stockPos?
------------------------------------------
Goto Effect: agentAtPosition ?stockPos? **** Where is this?
itemStockpiled true true
hasItem 0 ?itemId?
agentAtPosition ?stockPos? ?stockPos?
------------------------------------------
PickupItem Effect: hasItem ?itemId?
Precond: agentAtPosition ?itemPos?
itemStockpiled true true
hasItem ?itemId? ?itemId?
agentAtPosition ?stockPos? ?itemPos? **** So we need to go
back to the item from
the stockpile pos
------------------------------------------
Goto Effect: agentAtPosition ?itemPos? **** Where is this?
Precond: foundItem true
itemStockpiled true true
hasItem ?itemId? ?itemId?
agentAtPosition ?itemPos? ?itemPos?
foundItem false true
------------------------------------------
FindItem Effect: foundItem true
itemStockpiled true true
hasItem ?itemId? ?itemId?
agentAtPosition ?itemPos? ?itemPos?
foundItem true true
------------------------------------------
你会在上面的评论中看到,在我还不知道在哪里找到路径之前,我不明白如何检查路径的存在性。对于项目,我可以使用布尔标志“hasItem”,并跟踪变量中的项目ID,直到FindItem
成功(然后在执行路径时使用),该变量才会填充;但是,如果执行GoTo
操作,这将如何工作
如果我使用世界状态变量“agentaposition”作为Goto
的效果;将在计划中的两个不同点设置;这意味着需要“AgentPosition”为真的后续行动将已经满足其先决条件,从而有效地结束计划,错误地认为它找到了一条路径:
KEY CURRENT GOAL
itemStockpiled false true
------------------------------------------
StockpileItem Effect: itemStockpiled true
Precond: hasItem true
agentAtPosition true
itemStockpiled true true
hasItem false true
agentAtPosition false true
------------------------------------------
Goto Effect: agentAtPosition true
itemStockpiled true true
hasItem false true
agentAtPosition true true
------------------------------------------
PickupItem Effect: hasItem true
Precond: agentAtPosition true
itemStockpiled true true
hasItem true true
agentAtPosition true true
------------------------------------------
我该如何解决这个问题呢?看来GOPA是这样的:。 我会把参考资料联系起来 我不明白你想做什么,也不明白你引用的“Orkin”(我不知道)一段话。然而,这部分只是一种直觉: 变量为规划器增加了力量和灵活性,因为它现在可以满足更一般的先决条件 必须区分改变问题和改变解决方案。如果实现了A*正向搜索算法,则实现完全回归就是实现过状态s的回归操作:必须在s之前出现的部分状态s’如下所示: -A的先决条件在s中是正确的 -A的效果与s一致 -A与从s到s相关。如果没有否定的先决条件,那么在add(A)中至少有一个p不在s'中,但在s中 现在,“添加变量”听起来像是重新表述问题。在这种情况下,主要问题是: -那是不是重新制定的方案保留了所有的路径? 如果没有,它应该以精确的方式合并一些路径。否则,这不是一个重新制定的方案 因此,第一个问题不是关于向前或向后搜索,而是关于确认可能的路径。如果可能的路径是正确的,那么回归应该是可行的 除非你真的想做一些更聪明的事情,比如在必要的时候不包围对象 我建议首先关注一个更简单的版本,在这个版本中标准回归是有意义的,然后再重新审视你想要做的事情