0.6.0
Pre-release
Pre-release
- Minor model changes:
- Refactoring for clarity: in Goal, PositivePredicates renamed to RequiredPredicates and NegativePredicates renamed to ForbiddenPredicates.
- Some minor tweaks to reduce GC pressure (use a given ImmutableHashSet in a few places where we were needlessly creating a copy)
- Refactoring for maintainability: Moved implementation of action relevancy from effect into goal - so that relevancy and regression logic are in the same place.
Planning.StateSpaceSearch
namespace renamed toPlanning.Search
.- BackwardStateSpaceSearch renamed to GoalSpaceSearch, because that's what it is.
- ForwardStateSpaceSearch renamed to StateSpaceSearch
- Planning "utilities" changes:
- Moved the "Inspector" types in the Planning namespace into a "Utilities" sub-namespace.
- Added async versions of InvariantInspector's methods - as the IKnowledgeBase methods that they call are.
- Minor performance tweak in InvariantInspector. Pre-populate result cache with empty goal, instead of checking for it separately every time.
- Undid a frankly bizarre design decision in InvariantInspector: IKnowledgeBase ctor param is no longer optional - as the class can't do anything without it.
- Problem manipulation changes:
- Re-added support for functions to problem manipulation types. Was overzealous of me to remove them. If planning algorithms can't handle functions, the place to complain is in the algorithms themselves. I have however re-ordered some switch statements though - to shuffle functions to the end..
- Added IPlanningTask - IPlanners now use this instead of Task<Plan>. Added SteppablePlanningTask implementation - used by StateSpaceSearch and GoalSpaceSearch
- GraphPlan changes:
- PlanningGraph tweaks: LevelledOff renamed to IsLevelledOf (conventional for bool-valued props), and renamed GetSetLevel to GetLevelCost - yes, "set level" is the terminology, but GetSet.. is a rather confusing name, and note how calling this method with a single-entry enum will always give the same result as
GetLevelCost(Literal)
- so it makes sense as an overload. - Made GraphPlan class internal. Its not fully implemented yet - making it public was in error.
- PlanningGraph tweaks: LevelledOff renamed to IsLevelledOf (conventional for bool-valued props), and renamed GetSetLevel to GetLevelCost - yes, "set level" is the terminology, but GetSet.. is a rather confusing name, and note how calling this method with a single-entry enum will always give the same result as
- Upgraded SCGraphTheory.Search dependency to use some new stuff from it
- Type and member doc improvements
- Some static analysis fixes