4 Star 54 Fork 28

烟雨迷离半世殇 / NKGGOAP

 / 详情

请教几个问题关于Astar中的逻辑

待办的
创建于  
2021-09-13 23:17

第一个是Astar中的stateToNode[state] = child;更新stateToNode的这句是否应该应该只有在节点(原本处于stateToNode中的)的cost大于同一state的节点(新构建的节点)才要将这一节点在stateToNode更新,stateToNode我的理解是用来存储所有节点的cost用来进行比较的,根据Dijkstra应该只有newcost更小的时候才会更新这个存储节点的表
第二个是您对子节点初始化时对节点Goal的处理,133行的注释说是只在Goal状态集中保留与Effects中不同的部分但是如果这样更新的话,那么对再下一个节点的Action进行筛选时INode类中的Expand()中的这段代码

if (effects.HasAny(Goal) &&!Goal.HasAnyConflict(effects,precond)&&!Goal.HasAnyConflict(effects) &&
                        possibleAction.CheckProceduralCondition(stackData))
                    {
                        var newGoal = Goal;
                        //ReGoapLogger.Log($"{Name}-{GetCost()}的拓扑图新增{possibleAction.GetName()}");
                        expandList.Add(Instantiate(planner, newGoal, this, possibleAction, settings));
                    }

判断的第二个条件!Goal.HasAnyConflict(effects,precond)我的理解是用来判断Goal中的state集的某些值和Action的precondition是否有冲突,但是如果每次更新Goal只保留了与Effects中不同的部分那么是不是有可能Action的precondition的值和原本的Goal中的state的值不一样呢?

评论 (0)

北海冢虎 创建了任务
展开全部操作日志

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(1)
C#
1
https://gitee.com/NKG_admin/NKGGOAP.git
git@gitee.com:NKG_admin/NKGGOAP.git
NKG_admin
NKGGOAP
NKGGOAP

搜索帮助