## Uses of Interface
bdi4jade.plan.Plan

- Packages that use Plan
  Package | Description
  --- | ---
  bdi4jade.core |
  bdi4jade.extension.planselection.utilitybased |
  bdi4jade.plan | This package contains interfaces and classes that allows representation of plans of BDI agents.
  bdi4jade.plan.planbody | This package contains interfaces and classes that allows representation of plan body, which is an executable piece of code that is instantiated and executed to achieve goals.
  bdi4jade.reasoning | This package contains interfaces and classes to specify strategies associated with customization points of the BDI agent reasoning cycle.

- - ### Uses of Plan in bdi4jade.core

    Methods in bdi4jade.core that return Plan
    Modifier and Type | Method and Description
    --- | ---
    `protected Plan` | BDIAgent.`selectPlan(Goal goal, java.util.Map<Capability,java.util.Set<Plan>> capabilityPlans)` This method is responsible for selecting plans to achieve a goals of this agent.
    `protected Plan` | Capability.`selectPlan(Goal goal, java.util.Set<Plan> candidatePlans)` This method is responsible for selecting plans to achieve a goals of this agent.

    Method parameters in bdi4jade.core with type arguments of type Plan
    Modifier and Type | Method and Description
    --- | ---
    `protected Plan` | BDIAgent.`selectPlan(Goal goal, java.util.Map<Capability,java.util.Set<Plan>> capabilityPlans)` This method is responsible for selecting plans to achieve a goals of this agent.
    `protected Plan` | Capability.`selectPlan(Goal goal, java.util.Set<Plan> candidatePlans)` This method is responsible for selecting plans to achieve a goals of this agent.

    Constructor parameters in bdi4jade.core with type arguments of type Plan
    Constructor and Description
    `Capability(java.util.Set<Belief<?>> initialBeliefs, java.util.Set<Plan> initialPlans)` Creates a new capability.
    `Capability(java.lang.String id, Capability wholeCapability, java.util.Set<Belief<?>> initialBeliefs, java.util.Set<Plan> initialPlans)` Creates a new capability.
    `Capability(java.lang.String id, java.util.Set<Belief<?>> initialBeliefs, java.util.Set<Plan> initialPlans)` Creates a new capability.

  - ### Uses of Plan in bdi4jade.extension.planselection.utilitybased

    Fields in bdi4jade.extension.planselection.utilitybased declared as Plan
    Modifier and Type | Field and Description
    --- | ---
    `protected Plan` | PlanGoalDependency.`root`

    Methods in bdi4jade.extension.planselection.utilitybased that return Plan
    Modifier and Type | Method and Description
    --- | ---
    `Plan` | PlanGoalDependency.`getRoot()` Returns the plan that is the root of the plan-goal dependency, i.e.
    `Plan` | UtilityBasedPlanSelectionStrategy.`selectPlan(Goal goal, java.util.Set<Plan> plans)`

    Method parameters in bdi4jade.extension.planselection.utilitybased with type arguments of type Plan
    Modifier and Type | Method and Description
    --- | ---
    `Plan` | UtilityBasedPlanSelectionStrategy.`selectPlan(Goal goal, java.util.Set<Plan> plans)`

    Constructors in bdi4jade.extension.planselection.utilitybased with parameters of type Plan
    Constructor and Description
    `AndPlanGoalDependency(Plan root)`
    `AndPlanGoalDependency(Plan root, java.util.List<Goal> goals)`
    `OrPlanGoalDependency(Plan root)`
    `OrPlanGoalDependency(Plan root, java.util.Map<Goal,java.lang.Double> goals)`
    `PlanGoalDependency(Plan root)`

  - ### Uses of Plan in bdi4jade.plan

    Classes in bdi4jade.plan that implement Plan
    Modifier and Type | Class and Description
    --- | ---
    `class` | `AbstractPlan` This class represents the plan abstraction, being an abstract implementation of the `Plan` interface.
    `class` | `DefaultPlan` This class represents a plan whose plan body is a class that can be instantiated by invoking the `Class.newInstance()` method.

    Methods in bdi4jade.plan that return types with arguments of type Plan
    Modifier and Type | Method and Description
    --- | ---
    `java.util.Set<Plan>` | PlanLibrary.`canAchievePlans(Goal goal)` Returns the set of plans that can achieve the given goal.
    `java.util.Set<Plan>` | PlanLibrary.`getPlans()` Returns the set of plans that are part of this plan library.

    Methods in bdi4jade.plan with parameters of type Plan
    Modifier and Type | Method and Description
    --- | ---
    `void` | PlanLibrary.`addPlan(Plan plan)` Adds a plan to the plan library.
    `boolean` | PlanLibrary.`hasPlan(Plan plan)` Checks if a plan is part of the plan library.
    `boolean` | PlanLibrary.`removePlan(Plan plan)` Removes a plan from the plan library.

    Constructor parameters in bdi4jade.plan with type arguments of type Plan
    Constructor and Description
    `PlanLibrary(Capability capability, java.util.Set<Plan> plans)` Creates a plan library base associated with a capability and adds the plans in the provided set.

  - ### Uses of Plan in bdi4jade.plan.planbody

    Methods in bdi4jade.plan.planbody that return Plan
    Modifier and Type | Method and Description
    --- | ---
    `Plan` | SequentialActionPlanBody.`getPlan()`
    `Plan` | PlanBody.`getPlan()` Returns the `Plan` that is associated with this plan instance.
    `Plan` | ParallelActionPlanBody.`getPlan()`
    `Plan` | FSMPlanBody.`getPlan()`
    `Plan` | AbstractPlanBody.`getPlan()` Returns the `Plan` that is associated with this plan body.

    Methods in bdi4jade.plan.planbody with parameters of type Plan
    Modifier and Type | Method and Description
    --- | ---
    `void` | SequentialActionPlanBody.`init(Plan plan, Intention intention)`
    `void` | PlanBody.`init(Plan plan, Intention intention)` Initializes this plan body.
    `void` | ParallelActionPlanBody.`init(Plan plan, Intention intention)`
    `void` | FSMPlanBody.`init(Plan plan, Intention intention)`
    `void` | AbstractPlanBody.`init(Plan plan, Intention intention)` Initializes this plan body.

  - ### Uses of Plan in bdi4jade.reasoning

    Methods in bdi4jade.reasoning that return Plan
    Modifier and Type | Method and Description
    --- | ---
    `Plan` | PlanSelectionStrategy.`selectPlan(Goal goal, java.util.Set<Plan> candidatePlans)` Selects a plan to be executed to achieve the given goal, given a set of candidate plans.
    `Plan` | DefaultPlanSelectionStrategy.`selectPlan(Goal goal, java.util.Set<Plan> candidatePlans)` Selects the first plan of the set of candidate plans, if any.

    Method parameters in bdi4jade.reasoning with type arguments of type Plan
    Modifier and Type | Method and Description
    --- | ---
    `Plan` | PlanSelectionStrategy.`selectPlan(Goal goal, java.util.Set<Plan> candidatePlans)` Selects a plan to be executed to achieve the given goal, given a set of candidate plans.
    `Plan` | DefaultPlanSelectionStrategy.`selectPlan(Goal goal, java.util.Set<Plan> candidatePlans)` Selects the first plan of the set of candidate plans, if any.