ix.iplan
Class Slip

java.lang.Object
  extended by ix.icore.IXAgent
      extended by ix.ip2.Ip2
          extended by ix.iplan.IPlan
              extended by ix.iplan.PlannerBase
                  extended by ix.iplan.Slip
All Implemented Interfaces:
Planner, ServiceSymbols

public class Slip
extends PlannerBase
implements ServiceSymbols

Semi-linear planner.


Nested Class Summary
(package private) static class Slip.HavePlanException
           
(package private) static interface Slip.ParameterMaker
           
(package private)  class Slip.ReplanStep
           
(package private) static class Slip.StepLimitException
           
 
Nested classes/interfaces inherited from class ix.ip2.Ip2
Ip2.AddHandlersHandler
 
Field Summary
(package private)  LListCollector alternatives
           
(package private)  DomainAnalyser analysis
           
(package private)  ContextBoolean contextIsPoisoned
           
(package private)  int hardStepLimit
           
(package private)  java.lang.Runnable invalidStep
           
(package private)  IPlanModelManager iplanMM
           
(package private) static Keyword K_ALL
           
(package private) static Keyword K_NONE
           
(package private)  Slip.ParameterMaker makeInput
           
(package private)  Slip.ParameterMaker makeOutput
           
(package private)  ContextHashMap nodeEndStatusMap
           
(package private)  ContextGensym.Generator objectNameGenerator
           
(package private) static Symbol S_ACHIEVABLE_CONDS
           
(package private) static Symbol S_ACHIEVE_GOAL
           
(package private) static Symbol S_ACHIEVE_PV
           
(package private) static Symbol S_EQL
           
(package private) static Symbol S_TRUE
           
(package private) static Symbol S_USE_FOR_EFFECTS
           
(package private)  java.util.Map savedInitialWorldState
           
(package private)  boolean singleStep
           
(package private)  SlipStats stats
           
(package private)  int stepLimit
           
(package private)  SlipSingleStepper stepper
           
(package private)  java.lang.Runnable testStep
           
(package private)  boolean useDomainAnalysis
           
(package private)  ContextHashMap waitingForAchieveTable
           
 
Fields inherited from class ix.ip2.Ip2
activityViewer, agentTypeName, annotationViewer, controller, domain, frame, issueViewer, logoImage, logoLine1, logoLine2, modelManager, optionManager, resetHooks, showOptions, stateViewer
 
Fields inherited from class ix.icore.IXAgent
contactManager, displayName, eventLogger, exitHooks, initialDisplayName, ipcName, ipcStrategyName, iSimTimer, knownAgents, nameListeners, startupDate, startupHooks, symbolName, textFrame, thisAgent
 
Fields inherited from interface ix.iplan.ServiceSymbols
S_INPUT_OBJECTS, S_INPUTS, S_NAME_MAP, S_OUTPUT_OBJECTS, S_OUTPUTS, S_OWL_S_PROCESS, S_TYPE
 
Constructor Summary
Slip(boolean standAlone)
           
 
Method Summary
protected  void addHandlers()
          Install any built-in issue and activity handlers.
(package private)  void allComputeStatus(java.util.List nodeEnds)
           
(package private)  boolean allHaveStatus(java.util.List nodeEnds, Status status)
           
(package private) static boolean canBeUsedForEffect(LList pattern, Refinement r)
           
(package private)  void computeProperStatus(PNodeEnd end)
           
(package private)  void computeProperStatusValues()
           
(package private)  void computeStatus(PNodeEnd end)
           
(package private)  void createPlanContext()
           
(package private)  void describeAlternative(Alternative alt)
           
(package private)  void describeAlternatives()
           
(package private)  void describeLinks(PNodeEnd at, java.lang.String relation, java.util.List nodeEnds)
           
(package private)  void describeNodeEnd(PNodeEnd end)
           
(package private)  void describeNodeEnds()
           
(package private)  void describeNodeEnds(java.util.List nodeEnds)
           
(package private)  boolean domainSays(java.lang.String propname)
           
(package private)  boolean existsAchieversForCond(PatternAssignment pv)
           
(package private)  PNodeEnd findExecutable()
           
(package private)  PNodeEnd findExecutable(java.util.Iterator i)
           
(package private)  boolean findFirstPlan()
           
(package private)  boolean findNextPlan()
           
(package private)  void finishedPlanning(boolean success)
           
(package private)  Symbol generateObjectName(Symbol typeName)
           
(package private)  java.util.List getAchieversForCond(PatternAssignment pv)
          Returns a list of ways to achieve a condition.
(package private)  java.util.List getGoalAchievers(PNode goalNode)
           
(package private)  PatternAssignment getGoalCond(PNodeEnd ne)
           
 PlanStats getStatistics()
          Returns statistics gathered by the most recent Planner.plan() or Planner.replan().
(package private)  Status getStatus(PNodeEnd end)
           
(package private)  void initStatusTable()
           
(package private) static boolean isAchievableCond(LList pattern, Annotated decider)
           
(package private)  boolean isGoalNode(PNodeEnd ne)
           
(package private)  boolean isWaitingForAchieve(PNode node)
           
static void main(java.lang.String[] argv)
          Standalone main program.
(package private)  ActivityItem makeGoalNode(PatternAssignment goalCond, java.util.List achievers)
           
(package private)  java.util.List makeParameters(java.util.List patternAssignments, MatchEnv env, Slip.ParameterMaker m)
           
(package private)  IPlanModelManager MM()
           
(package private)  void normalizeGoalNode(ActivityItem goalNode)
           
(package private)  Alternative pickAlternative()
           
 void plan()
          Finds a plan that is a completion of this planner's current plan and makes it the new current plan.
(package private)  boolean planIsComplete()
           
(package private)  void planLoop()
           
(package private)  Poison poison(java.lang.Object reason)
           
(package private)  void postAlternative(Alternative alt)
           
protected  void processCommandLineArguments()
          Command-line argument processing for arguments used by all versions of I-P2.
(package private)  void recordAsWaitingForAchieve(PNode node)
           
(package private)  void recordInputsAndOutputs()
           
(package private)  void recordInputsAndOutputs(Activity act)
           
 void replan()
          Finds the next in a series of plans that are completions of the plan that was current when Planner.plan() was most recently called.
 void reset()
          Called to restore the initial state.
 void setDomain(Domain dom)
          Sets this planner's domain.
(package private)  void setNextStep(java.lang.Runnable r)
           
(package private)  void setProperStatus(PNode node)
           
(package private)  void setProperStatus(PNodeEnd end, Status status)
           
(package private)  void setStatus(PNodeEnd end, Status status)
           
 void setStepLimit(int limit)
           
 void startup()
          Completes setup and initialization.
(package private)  void stepLimitReached(boolean isHardLimit)
           
(package private)  void testStatusPropagation()
           
 
Methods inherited from class ix.iplan.PlannerBase
completeStartup, handleInput, initOptions, isStandAlone, makeInstance, outputOwlSPlan, outputPlan, outputPlanPSGraphData, startServer
 
Methods inherited from class ix.iplan.IPlan
makeDefaultPlanner, makeIp2Frame, makeModelManager
 
Methods inherited from class ix.ip2.Ip2
addAboutInfo, addForwardingHandler, addHandlers, addResetHook, addTest, addTestMenuItems, addTool, clearAllButState, clearModel, do_reloadViewers, ensureTool, exit, getActivityPatternSyntaxes, getAgentTypeName, getController, getDomain, getFrame, getIp2ModelManager, getModelManager, getOptionManager, getPlan, handleInputDirectly, handleNewActivity, handleNewChatMessage, handleNewConstraint, handleNewIssue, handleNewReport, isReloadingViewers, loadDomain, loadInitialPlan, loadPlan, loadPlan, loadPlan, makeActivityViewer, makeAnnotationViewer, makeController, makeIssueViewer, makeLogoPanel, makeStateViewer, makeViewer, readDomain, readDomain, reloadViewers, resetAllButState, resetViewers, savePlanAs
 
Methods inherited from class ix.icore.IXAgent
addAgentNameListener, addExitHook, addStartupHook, displayMessage, do_mainStartup, fireSymbolNameChanged, getAgent, getAgentDisplayName, getAgentIPCName, getAgentStartupDate, getAgentSymbolName, getContactManager, getEventLogger, getISimTimer, getKnownAgents, handleReceivedReport, installAgentExtensions, log, mainStartup, notePossibleNewContact, pre_handleInput, preprocessInput, reportInputException, setAgentSymbolName, setupISimTimer
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface ix.iplan.Planner
getPlan, loadPlan
 

Field Detail

iplanMM

IPlanModelManager iplanMM

analysis

DomainAnalyser analysis

useDomainAnalysis

boolean useDomainAnalysis

alternatives

LListCollector alternatives

contextIsPoisoned

ContextBoolean contextIsPoisoned

nodeEndStatusMap

ContextHashMap nodeEndStatusMap

savedInitialWorldState

java.util.Map savedInitialWorldState

stats

SlipStats stats

objectNameGenerator

ContextGensym.Generator objectNameGenerator

stepLimit

int stepLimit

hardStepLimit

int hardStepLimit

stepper

SlipSingleStepper stepper

singleStep

boolean singleStep

invalidStep

java.lang.Runnable invalidStep

testStep

java.lang.Runnable testStep

S_TRUE

static final Symbol S_TRUE

K_ALL

static final Keyword K_ALL

K_NONE

static final Keyword K_NONE

S_ACHIEVABLE_CONDS

static final Symbol S_ACHIEVABLE_CONDS

S_USE_FOR_EFFECTS

static final Symbol S_USE_FOR_EFFECTS

makeInput

Slip.ParameterMaker makeInput

makeOutput

Slip.ParameterMaker makeOutput

S_ACHIEVE_GOAL

static final Symbol S_ACHIEVE_GOAL

S_ACHIEVE_PV

static final Symbol S_ACHIEVE_PV

S_EQL

static final Symbol S_EQL

waitingForAchieveTable

ContextHashMap waitingForAchieveTable
Constructor Detail

Slip

public Slip(boolean standAlone)
Method Detail

MM

IPlanModelManager MM()

main

public static void main(java.lang.String[] argv)
Standalone main program. One plan in, one plan out; To specify the initial plan, use the plan command-line argument. The result will be written to the file specified by the output argument. If no output is specified, the user is asked by a dialog.


startup

public void startup()
Completes setup and initialization.

Overrides:
startup in class PlannerBase

processCommandLineArguments

protected void processCommandLineArguments()
Description copied from class: Ip2
Command-line argument processing for arguments used by all versions of I-P2.

Overrides:
processCommandLineArguments in class Ip2
See Also:
IFUtil.adjustLookAndFeel(), IPC.makeCommunicationStrategy(String methodName), ContactManager.processCommandLineArguments(), Debug.on, Parameters

reset

public void reset()
Called to restore the initial state.

Overrides:
reset in class Ip2

getStatistics

public PlanStats getStatistics()
Description copied from interface: Planner
Returns statistics gathered by the most recent Planner.plan() or Planner.replan().

Specified by:
getStatistics in interface Planner
Overrides:
getStatistics in class PlannerBase

generateObjectName

Symbol generateObjectName(Symbol typeName)

setStepLimit

public void setStepLimit(int limit)

setDomain

public void setDomain(Domain dom)
Description copied from interface: Planner
Sets this planner's domain. This is normally done before plan() or replan() are called. The consequences of calling this method at other times are unspecified.

Specified by:
setDomain in interface Planner
Overrides:
setDomain in class IPlan

addHandlers

protected void addHandlers()
Install any built-in issue and activity handlers.

Overrides:
addHandlers in class PlannerBase

setNextStep

void setNextStep(java.lang.Runnable r)

plan

public void plan()
Description copied from interface: Planner
Finds a plan that is a completion of this planner's current plan and makes it the new current plan. The precise meaning of "completion" depends on the planner in question, but typically it will mean that all activities in the initial plan that might be expanded into subactions, using refinements in this planner's domain, will be expanded, and that all constraints in the initial plan or introduced by expansion will be satisfied. (Here, the initial plan is the plan that was current when plan() was called.)

A successful call to plan() leaves this planner in a state in which Planner.replan() can be called.

Specified by:
plan in interface Planner

replan

public void replan()
Description copied from interface: Planner
Finds the next in a series of plans that are completions of the plan that was current when Planner.plan() was most recently called. That completion then becomes the new current plan. You can think of this as reconsidering some choice made when producing earlier plans in the sequence and making different decision at that point. However, it is not guaranteed that the plan found in this way will be interestingly different from all of the earlier plans in the sequence.

The replan() method should not be called if plan() has not been called or if this planner has thrown an exception.

A successful call to replan() leaves this planner in a state in which Planner.replan() can be called again. plan() may be called instead, but this will begin a new sequence of plans based on this planner's now current plan, rather than on the plan that was the base for the previous sequence.

Specified by:
replan in interface Planner
Overrides:
replan in class PlannerBase

findFirstPlan

boolean findFirstPlan()

findNextPlan

boolean findNextPlan()

planLoop

void planLoop()

stepLimitReached

void stepLimitReached(boolean isHardLimit)

finishedPlanning

void finishedPlanning(boolean success)

createPlanContext

void createPlanContext()

postAlternative

void postAlternative(Alternative alt)

pickAlternative

Alternative pickAlternative()

poison

Poison poison(java.lang.Object reason)

domainSays

boolean domainSays(java.lang.String propname)

isAchievableCond

static boolean isAchievableCond(LList pattern,
                                Annotated decider)

canBeUsedForEffect

static boolean canBeUsedForEffect(LList pattern,
                                  Refinement r)

testStatusPropagation

void testStatusPropagation()

findExecutable

PNodeEnd findExecutable()

findExecutable

PNodeEnd findExecutable(java.util.Iterator i)

planIsComplete

boolean planIsComplete()

getStatus

Status getStatus(PNodeEnd end)

setStatus

void setStatus(PNodeEnd end,
               Status status)

computeStatus

void computeStatus(PNodeEnd end)

allComputeStatus

void allComputeStatus(java.util.List nodeEnds)

allHaveStatus

boolean allHaveStatus(java.util.List nodeEnds,
                      Status status)

initStatusTable

void initStatusTable()

computeProperStatusValues

void computeProperStatusValues()

computeProperStatus

void computeProperStatus(PNodeEnd end)

setProperStatus

void setProperStatus(PNodeEnd end,
                     Status status)

setProperStatus

void setProperStatus(PNode node)

recordInputsAndOutputs

void recordInputsAndOutputs()

recordInputsAndOutputs

void recordInputsAndOutputs(Activity act)

makeParameters

java.util.List makeParameters(java.util.List patternAssignments,
                              MatchEnv env,
                              Slip.ParameterMaker m)

isGoalNode

boolean isGoalNode(PNodeEnd ne)

getGoalCond

PatternAssignment getGoalCond(PNodeEnd ne)

makeGoalNode

ActivityItem makeGoalNode(PatternAssignment goalCond,
                          java.util.List achievers)

getGoalAchievers

java.util.List getGoalAchievers(PNode goalNode)

normalizeGoalNode

void normalizeGoalNode(ActivityItem goalNode)

recordAsWaitingForAchieve

void recordAsWaitingForAchieve(PNode node)

isWaitingForAchieve

boolean isWaitingForAchieve(PNode node)

getAchieversForCond

java.util.List getAchieversForCond(PatternAssignment pv)
Returns a list of ways to achieve a condition.


existsAchieversForCond

boolean existsAchieversForCond(PatternAssignment pv)

describeAlternatives

void describeAlternatives()

describeAlternative

void describeAlternative(Alternative alt)

describeNodeEnds

void describeNodeEnds()

describeNodeEnds

void describeNodeEnds(java.util.List nodeEnds)

describeNodeEnd

void describeNodeEnd(PNodeEnd end)

describeLinks

void describeLinks(PNodeEnd at,
                   java.lang.String relation,
                   java.util.List nodeEnds)