Skip to content

0.6.0

Pre-release
Pre-release
Compare
Choose a tag to compare
@sdcondon sdcondon released this 10 Dec 15:18
· 239 commits to main since this 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 to Planning.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.
  • Upgraded SCGraphTheory.Search dependency to use some new stuff from it
  • Type and member doc improvements
  • Some static analysis fixes