PLanning and Acting with TImeliNes under Uncertainty
PLATINUm is an open-source framework for timeline-based AI planning and execution under temporal uncertainty.
It provides a modular architecture for defining domains, synthesizing flexible plans, and executing them while handling uncertain durations and dynamic environments.
The framework is designed for robotics, human-robot collaboration, manufacturing, logistics, and autonomous systems.
- Timeline-Based Planning: Model domains with state variables, tokens, timelines, and synchronization rules.
- Execution Under Uncertainty: Dynamic dispatch with flexibility based on temporal networks.
- Heuristics & Search Algorithms: Built-in strategies for efficient plan generation.
- Extensible Architecture: Add new heuristics, planners, temporal reasoners, or resource models.
- Resource Management: Support for discrete and reservoir resources.
- Open Source (Apache 2.0)
The diagram below summarizes PLATINUm’s high-level architecture and module interactions.
+-----------------------------+
| User / Domain |
| - Domain Models |
| - Synchronization Rules |
| - Resources |
+---------------+-------------+
|
v
+-----------------------+-----------------------+
| Planner |
|-----------------------------------------------|
| Search Engine | Heuristics |
| Temporal Checkers | Resource Constraints |
+-----------+-------------------------+---------+
| |
v v
+------------+-----------+ +---------+-------------+
| Temporal Reasoner | | Resource Manager |
| (STN, flexible bounds) | | (discrete/reservoir) |
+------------+-----------+ +---------+-------------+
| |
+-----------+-------------+
|
v
+----------------+-----------------+
| Plan |
| - Timelines |
| - Tokens & ordering |
| - Temporal flexibility windows |
+----------------+-----------------+
|
v
+---------------------+----------------------+
| Executor |
|--------------------------------------------|
| Dispatcher | Monitoring | Reactions |
| (executes tokens respecting temporal |
| flexibility and uncertain durations) |
+--------------------------------------------+
- Java 8+
- Maven 3.6+
git clone https://github.com/pstlab/PLATINUm.git
cd PLATINUm
mvn clean install
You you can include PLATINUm library into your project as Maven package.
Add the following dependency to the pom.xml file of your project to get the latest distributed version
<dependency>
<groupId>it.uniroma3.platinum</groupId>
<artifactId>platinum</artifactId>
<version>[1.0.0,)</version>
</dependency>
PLATINUm
├── etc
│ ├── agent.properties
│ ├── deliberative.properties
│ └── executive.properties
├── pom.xml
└── src
├── main
│ └── java
│ └── it
│ └── cnr
│ └── istc
│ └── pst
│ └── platinum
│ ├── ai
│ │ ├── deliberative
│ │ │ ├── heuristic
│ │ │ │ ├── CompleteFlawSelectionHeuristic.java
│ │ │ │ ├── FlawSelectionHeuristic.java
│ │ │ │ ├── HierarchicalFlawSelectionHeuristic.java
│ │ │ │ ├── pipeline
│ │ │ │ │ ├── FailFirstFlawInspector.java
│ │ │ │ │ ├── FlawInspector.java
│ │ │ │ │ ├── HierarchicalPlanFlawInspector.java
│ │ │ │ │ ├── HierarchyFlawInspector.java
│ │ │ │ │ ├── PipelineFlawSelectionHeuristic.java
│ │ │ │ │ ├── PreferenceFlawInspector.java
│ │ │ │ │ └── ReverseHierarchyFlawInspector.java
│ │ │ │ ├── RandomFlawSelectionHeuristic.java
│ │ │ │ └── ReverseHierarchicalFlawSelectionHeuristic.java
│ │ │ ├── PlannerBuilder.java
│ │ │ ├── Planner.java
│ │ │ ├── solver
│ │ │ │ ├── Operator.java
│ │ │ │ ├── PseudoControllabilityAwareSolver.java
│ │ │ │ ├── SearchSpaceNode.java
│ │ │ │ └── Solver.java
│ │ │ └── strategy
│ │ │ ├── CostDepthSearchStrategy.java
│ │ │ ├── DepthFirstSearchStrategy.java
│ │ │ ├── ex
│ │ │ │ └── EmptyFringeException.java
│ │ │ ├── GreedyDepthSearchStrategy.java
│ │ │ ├── SearchStrategy.java
│ │ │ ├── StandardDeviationMinimizationSearchStrategy.java
│ │ │ └── WeightedAStarSearchStrategy.java
│ │ ├── executive
│ │ │ ├── AtomicClockManager.java
│ │ │ ├── ClockManager.java
│ │ │ ├── dispatcher
│ │ │ │ ├── ConditionCheckingDispatcher.java
│ │ │ │ └── Dispatcher.java
│ │ │ ├── ExecutionManager.java
│ │ │ ├── ExecutionStatus.java
│ │ │ ├── ExecutiveBuilder.java
│ │ │ ├── Executive.java
│ │ │ ├── lang
│ │ │ │ ├── ex
│ │ │ │ │ ├── ExecutionException.java
│ │ │ │ │ ├── ExecutionPreparationException.java
│ │ │ │ │ ├── NodeDispatchingException.java
│ │ │ │ │ ├── NodeExecutionErrorException.java
│ │ │ │ │ └── NodeObservationException.java
│ │ │ │ ├── ExecutionFeedback.java
│ │ │ │ ├── ExecutionFeedbackType.java
│ │ │ │ └── failure
│ │ │ │ ├── ExecutionFailureCause.java
│ │ │ │ ├── ExecutionFailureCauseType.java
│ │ │ │ ├── NodeDurationOverflow.java
│ │ │ │ ├── NodeExecutionError.java
│ │ │ │ ├── NodeStartOverflow.java
│ │ │ │ └── PlanRepairInformation.java
│ │ │ ├── monitor
│ │ │ │ ├── ConditionCheckingMonitor.java
│ │ │ │ └── Monitor.java
│ │ │ ├── pdb
│ │ │ │ ├── ControllabilityType.java
│ │ │ │ ├── ExecutionNode.java
│ │ │ │ ├── ExecutionNodeStatus.java
│ │ │ │ ├── ExecutivePlanDataBaseBuilder.java
│ │ │ │ ├── ExecutivePlanDataBase.java
│ │ │ │ ├── ExecutivePlanDataBaseType.java
│ │ │ │ └── NodePredicate.java
│ │ │ └── PlanExecutionObserver.java
│ │ ├── framework
│ │ │ ├── domain
│ │ │ │ ├── component
│ │ │ │ │ ├── ComponentValue.java
│ │ │ │ │ ├── ComponentValueType.java
│ │ │ │ │ ├── Constraint.java
│ │ │ │ │ ├── Decision.java
│ │ │ │ │ ├── DomainComponent.java
│ │ │ │ │ ├── DomainComponentType.java
│ │ │ │ │ ├── ex
│ │ │ │ │ │ ├── DecisionNotFoundException.java
│ │ │ │ │ │ ├── DecisionPropagationException.java
│ │ │ │ │ │ ├── FlawSolutionApplicationException.java
│ │ │ │ │ │ ├── RelationPropagationException.java
│ │ │ │ │ │ ├── ResourceProfileComputationException.java
│ │ │ │ │ │ └── TransitionNotFoundException.java
│ │ │ │ │ ├── ParameterPlaceHolder.java
│ │ │ │ │ ├── pdb
│ │ │ │ │ │ ├── DecisionVariable.java
│ │ │ │ │ │ ├── ParameterSynchronizationConstraint.java
│ │ │ │ │ │ ├── PlanDataBaseComponent.java
│ │ │ │ │ │ ├── PlanDataBaseEvent.java
│ │ │ │ │ │ ├── PlanDataBaseEventType.java
│ │ │ │ │ │ ├── PlanDataBaseObserver.java
│ │ │ │ │ │ ├── SynchronizationConstraint.java
│ │ │ │ │ │ ├── SynchronizationRule.java
│ │ │ │ │ │ ├── TemporalSynchronizationConstraint.java
│ │ │ │ │ │ └── TokenVariable.java
│ │ │ │ │ ├── PlanDataBase.java
│ │ │ │ │ ├── PlanElementStatus.java
│ │ │ │ │ ├── Predicate.java
│ │ │ │ │ ├── resource
│ │ │ │ │ │ ├── discrete
│ │ │ │ │ │ │ ├── DiscreteResource.java
│ │ │ │ │ │ │ ├── DiscreteResourceProfile.java
│ │ │ │ │ │ │ ├── RequirementResourceEvent.java
│ │ │ │ │ │ │ ├── RequirementResourceProfileSample.java
│ │ │ │ │ │ │ └── RequirementResourceValue.java
│ │ │ │ │ │ ├── reservoir
│ │ │ │ │ │ │ ├── ConsumptionResourceEvent.java
│ │ │ │ │ │ │ ├── ProductionResourceEvent.java
│ │ │ │ │ │ │ ├── ReservoirResource.java
│ │ │ │ │ │ │ ├── ReservoirResourceProfile.java
│ │ │ │ │ │ │ ├── ResourceConsumptionValue.java
│ │ │ │ │ │ │ ├── ResourceProductionValue.java
│ │ │ │ │ │ │ ├── ResourceUsageProfileSample.java
│ │ │ │ │ │ │ └── ResourceUsageValue.java
│ │ │ │ │ │ ├── ResourceEvent.java
│ │ │ │ │ │ ├── ResourceEventType.java
│ │ │ │ │ │ ├── Resource.java
│ │ │ │ │ │ ├── ResourceProfile.java
│ │ │ │ │ │ └── ResourceProfileSample.java
│ │ │ │ │ ├── sv
│ │ │ │ │ │ ├── ExternalStateVariable.java
│ │ │ │ │ │ ├── FunctionalStateVariable.java
│ │ │ │ │ │ ├── PrimitiveStateVariable.java
│ │ │ │ │ │ ├── RequirementStateVariableResourceEvent.java
│ │ │ │ │ │ ├── StateVariable.java
│ │ │ │ │ │ ├── StateVariableResourceProfile.java
│ │ │ │ │ │ ├── StateVariableValue.java
│ │ │ │ │ │ ├── Transition.java
│ │ │ │ │ │ └── ValuePath.java
│ │ │ │ │ └── Token.java
│ │ │ │ ├── DomainComponentBuilder.java
│ │ │ │ ├── knowledge
│ │ │ │ │ ├── DomainKnowledge.java
│ │ │ │ │ ├── DomainKnowledgeType.java
│ │ │ │ │ ├── ex
│ │ │ │ │ │ └── HierarchyCycleException.java
│ │ │ │ │ └── StaticDomainKnowledge.java
│ │ │ │ └── PlanDataBaseBuilder.java
│ │ │ ├── microkernel
│ │ │ │ ├── annotation
│ │ │ │ │ ├── cfg
│ │ │ │ │ │ ├── deliberative
│ │ │ │ │ │ │ ├── FlawSelectionHeuristicsConfiguration.java
│ │ │ │ │ │ │ ├── PipelineConfiguration.java
│ │ │ │ │ │ │ ├── PlannerSolverConfiguration.java
│ │ │ │ │ │ │ └── SearchStrategyConfiguration.java
│ │ │ │ │ │ ├── executive
│ │ │ │ │ │ │ ├── DispatcherConfiguration.java
│ │ │ │ │ │ │ └── MonitorConfiguration.java
│ │ │ │ │ │ ├── framework
│ │ │ │ │ │ │ ├── DomainComponentConfiguration.java
│ │ │ │ │ │ │ ├── DomainKnowledgeConfiguration.java
│ │ │ │ │ │ │ ├── ParameterFacadeConfiguration.java
│ │ │ │ │ │ │ └── TemporalFacadeConfiguration.java
│ │ │ │ │ │ └── FrameworkLoggerConfiguration.java
│ │ │ │ │ ├── inject
│ │ │ │ │ │ ├── deliberative
│ │ │ │ │ │ │ ├── FlawSelectionHeuristicPlaceholder.java
│ │ │ │ │ │ │ ├── PipelinePlaceholder.java
│ │ │ │ │ │ │ ├── PlannerPlaceholder.java
│ │ │ │ │ │ │ ├── PlannerSolverPlaceholder.java
│ │ │ │ │ │ │ └── SearchStrategyPlaceholder.java
│ │ │ │ │ │ ├── executive
│ │ │ │ │ │ │ ├── DispatcherPlaceholder.java
│ │ │ │ │ │ │ ├── ExecutivePlaceholder.java
│ │ │ │ │ │ │ ├── ExecutivePlanDataBasePlaceholder.java
│ │ │ │ │ │ │ └── MonitorPlaceholder.java
│ │ │ │ │ │ ├── framework
│ │ │ │ │ │ │ ├── DomainComponentPlaceholder.java
│ │ │ │ │ │ │ ├── DomainKnowledgePlaceholder.java
│ │ │ │ │ │ │ ├── ParameterFacadePlaceholder.java
│ │ │ │ │ │ │ ├── ParameterSolverPlaceholder.java
│ │ │ │ │ │ │ ├── PlanDataBasePlaceholder.java
│ │ │ │ │ │ │ ├── ResolverListPlaceholder.java
│ │ │ │ │ │ │ ├── TemporalFacadePlaceholder.java
│ │ │ │ │ │ │ ├── TemporalNetworkPlaceholder.java
│ │ │ │ │ │ │ └── TemporalSolverPlaceholder.java
│ │ │ │ │ │ └── FrameworkLoggerPlaceholder.java
│ │ │ │ │ └── lifecycle
│ │ │ │ │ └── PostConstruct.java
│ │ │ │ ├── ConstraintCategory.java
│ │ │ │ ├── ExecutiveObject.java
│ │ │ │ ├── FrameworkObject.java
│ │ │ │ ├── lang
│ │ │ │ │ ├── ex
│ │ │ │ │ │ ├── ConsistencyCheckException.java
│ │ │ │ │ │ ├── ConstraintPropagationException.java
│ │ │ │ │ │ ├── DomainComponentNotFoundException.java
│ │ │ │ │ │ ├── NoFlawFoundException.java
│ │ │ │ │ │ ├── NoSolutionFoundException.java
│ │ │ │ │ │ ├── OperatorPropagationException.java
│ │ │ │ │ │ ├── PlanRefinementException.java
│ │ │ │ │ │ ├── ProblemInitializationException.java
│ │ │ │ │ │ └── SynchronizationCycleException.java
│ │ │ │ │ ├── flaw
│ │ │ │ │ │ ├── FlawCategoryType.java
│ │ │ │ │ │ ├── Flaw.java
│ │ │ │ │ │ ├── FlawSolution.java
│ │ │ │ │ │ └── FlawType.java
│ │ │ │ │ ├── plan
│ │ │ │ │ │ ├── Agenda.java
│ │ │ │ │ │ ├── PlanControllabilityType.java
│ │ │ │ │ │ ├── Plan.java
│ │ │ │ │ │ ├── Profile.java
│ │ │ │ │ │ ├── SolutionPlan.java
│ │ │ │ │ │ └── Timeline.java
│ │ │ │ │ ├── problem
│ │ │ │ │ │ ├── ParameterProblemConstraint.java
│ │ │ │ │ │ ├── ProblemConstraint.java
│ │ │ │ │ │ ├── ProblemFact.java
│ │ │ │ │ │ ├── ProblemFluent.java
│ │ │ │ │ │ ├── ProblemFluentType.java
│ │ │ │ │ │ ├── ProblemGoal.java
│ │ │ │ │ │ ├── Problem.java
│ │ │ │ │ │ └── TemporalProblemConstraint.java
│ │ │ │ │ └── relations
│ │ │ │ │ ├── parameter
│ │ │ │ │ │ ├── BindParameterRelation.java
│ │ │ │ │ │ ├── EqualParameterRelation.java
│ │ │ │ │ │ ├── NotEqualParameterRelation.java
│ │ │ │ │ │ └── ParameterRelation.java
│ │ │ │ │ ├── Relation.java
│ │ │ │ │ ├── RelationType.java
│ │ │ │ │ └── temporal
│ │ │ │ │ ├── AfterRelation.java
│ │ │ │ │ ├── BeforeRelation.java
│ │ │ │ │ ├── ContainsRelation.java
│ │ │ │ │ ├── DuringRelation.java
│ │ │ │ │ ├── EndEndRelation.java
│ │ │ │ │ ├── EndsDuringRelation.java
│ │ │ │ │ ├── EqualsRelation.java
│ │ │ │ │ ├── MeetsRelation.java
│ │ │ │ │ ├── MetByRelation.java
│ │ │ │ │ ├── StartsDuringRelation.java
│ │ │ │ │ ├── StartStartRelation.java
│ │ │ │ │ └── TemporalRelation.java
│ │ │ │ ├── query
│ │ │ │ │ ├── ParameterQueryFactory.java
│ │ │ │ │ ├── ParameterQuery.java
│ │ │ │ │ ├── ParameterQueryType.java
│ │ │ │ │ ├── Query.java
│ │ │ │ │ ├── QueryManager.java
│ │ │ │ │ ├── TemporalQueryFactory.java
│ │ │ │ │ ├── TemporalQuery.java
│ │ │ │ │ └── TemporalQueryType.java
│ │ │ │ └── resolver
│ │ │ │ ├── ex
│ │ │ │ │ ├── InvalidBehaviorException.java
│ │ │ │ │ ├── NotFeasibleExpansionException.java
│ │ │ │ │ ├── NotFeasibleGapCompletionException.java
│ │ │ │ │ ├── NotFeasibleUnificationException.java
│ │ │ │ │ └── UnsolvableFlawException.java
│ │ │ │ ├── FlawManager.java
│ │ │ │ ├── plan
│ │ │ │ │ ├── GoalExpansion.java
│ │ │ │ │ ├── Goal.java
│ │ │ │ │ ├── GoalJustification.java
│ │ │ │ │ ├── GoalSchedule.java
│ │ │ │ │ ├── GoalUnification.java
│ │ │ │ │ ├── PlanRefinementResolver.java
│ │ │ │ │ └── TimelineAwarePlanRefinementResolver.java
│ │ │ │ ├── ResolverBuilder.java
│ │ │ │ ├── Resolver.java
│ │ │ │ ├── ResolverType.java
│ │ │ │ ├── resource
│ │ │ │ │ ├── discrete
│ │ │ │ │ │ ├── CriticalSet.java
│ │ │ │ │ │ ├── DiscreteResourceSchedulingResolver.java
│ │ │ │ │ │ └── PrecedenceConstraint.java
│ │ │ │ │ └── reservoir
│ │ │ │ │ ├── ReservoirOverflow.java
│ │ │ │ │ ├── ReservoirResourceSchedulingResolver.java
│ │ │ │ │ └── ResourceEventSchedule.java
│ │ │ │ └── timeline
│ │ │ │ ├── behavior
│ │ │ │ │ ├── checking
│ │ │ │ │ │ ├── IncompleteBehavior.java
│ │ │ │ │ │ ├── InvalidTransition.java
│ │ │ │ │ │ ├── MissingObservation.java
│ │ │ │ │ │ ├── ObservationBehaviorCheckingResolver.java
│ │ │ │ │ │ └── TimelineBehaviorCheckingResolver.java
│ │ │ │ │ └── planning
│ │ │ │ │ ├── GapCompletion.java
│ │ │ │ │ ├── Gap.java
│ │ │ │ │ ├── GapType.java
│ │ │ │ │ └── TimelineBehaviorPlanningResolver.java
│ │ │ │ └── scheduling
│ │ │ │ ├── OverlappingSet.java
│ │ │ │ ├── OverlappingSetSchedule.java
│ │ │ │ ├── PrecedenceConstraint.java
│ │ │ │ └── TimelineSchedulingResolver.java
│ │ │ ├── parameter
│ │ │ │ ├── csp
│ │ │ │ │ ├── event
│ │ │ │ │ │ ├── AddConstraintParameterNotification.java
│ │ │ │ │ │ ├── AddParameterNotification.java
│ │ │ │ │ │ ├── DelConstraintParameterNotification.java
│ │ │ │ │ │ ├── DelParameterNotification.java
│ │ │ │ │ │ ├── ParameterNotificationFactory.java
│ │ │ │ │ │ ├── ParameterNotification.java
│ │ │ │ │ │ ├── ParameterNotificationObserver.java
│ │ │ │ │ │ └── ParameterNotificationType.java
│ │ │ │ │ └── solver
│ │ │ │ │ ├── choco
│ │ │ │ │ │ └── v4
│ │ │ │ │ │ └── ChocoSolver.java
│ │ │ │ │ ├── ParameterSolver.java
│ │ │ │ │ └── ParameterSolverType.java
│ │ │ │ ├── ex
│ │ │ │ │ ├── ParameterConsistencyException.java
│ │ │ │ │ ├── ParameterConstraintNotFoundException.java
│ │ │ │ │ ├── ParameterConstraintPropagationException.java
│ │ │ │ │ ├── ParameterCreationException.java
│ │ │ │ │ └── ParameterNotFoundException.java
│ │ │ │ ├── lang
│ │ │ │ │ ├── constraints
│ │ │ │ │ │ ├── BinaryParameterConstraint.java
│ │ │ │ │ │ ├── BindParameterConstraint.java
│ │ │ │ │ │ ├── EqualParameterConstraint.java
│ │ │ │ │ │ ├── ExcludeParameterConstraint.java
│ │ │ │ │ │ ├── NotEqualParameterConstraint.java
│ │ │ │ │ │ ├── ParameterConstraintFactory.java
│ │ │ │ │ │ ├── ParameterConstraint.java
│ │ │ │ │ │ └── ParameterConstraintType.java
│ │ │ │ │ ├── EnumerationParameterDomain.java
│ │ │ │ │ ├── EnumerationParameter.java
│ │ │ │ │ ├── NumericParameterDomain.java
│ │ │ │ │ ├── NumericParameter.java
│ │ │ │ │ ├── ParameterDomain.java
│ │ │ │ │ ├── ParameterDomainType.java
│ │ │ │ │ ├── Parameter.java
│ │ │ │ │ ├── ParameterType.java
│ │ │ │ │ └── query
│ │ │ │ │ ├── CheckValuesParameterQuery.java
│ │ │ │ │ └── ComputeSolutionParameterQuery.java
│ │ │ │ ├── ParameterFacadeBuilder.java
│ │ │ │ └── ParameterFacade.java
│ │ │ ├── protocol
│ │ │ │ ├── lang
│ │ │ │ │ ├── ParameterDescriptor.java
│ │ │ │ │ ├── ParameterTypeDescriptor.java
│ │ │ │ │ ├── PlanProtocolDescriptor.java
│ │ │ │ │ ├── ProtocolLanguageFactory.java
│ │ │ │ │ ├── relation
│ │ │ │ │ │ ├── AfterRelationProtocolDescriptor.java
│ │ │ │ │ │ ├── BeforeRelationProtocolDescriptor.java
│ │ │ │ │ │ ├── ContainsRelationProtocolDescriptor.java
│ │ │ │ │ │ ├── DuringRelationProtocolDescriptor.java
│ │ │ │ │ │ ├── EndEndRelationProtocolDescriptor.java
│ │ │ │ │ │ ├── EndsDuringRelationProtocolDescriptor.java
│ │ │ │ │ │ ├── EqualsRelationProtocolDescriptor.java
│ │ │ │ │ │ ├── MeetsRelationProtocolDescriptor.java
│ │ │ │ │ │ ├── MetByRelationProtocolDescriptor.java
│ │ │ │ │ │ ├── OverlappedByRelationProtocolDescriptor.java
│ │ │ │ │ │ ├── RelationProtocolDescriptor.java
│ │ │ │ │ │ ├── RelationProtocolLanguageFactory.java
│ │ │ │ │ │ ├── StartsDuringRelationProtocolDescriptor.java
│ │ │ │ │ │ ├── StartsRelationProtocolDescriptor.java
│ │ │ │ │ │ └── StartStartRelationProtocolDescriptor.java
│ │ │ │ │ ├── TimelineProtocolDescriptor.java
│ │ │ │ │ ├── TokenProtocolDescriptor.java
│ │ │ │ │ └── UnallocatedTokenDescription.java
│ │ │ │ └── query
│ │ │ │ ├── get
│ │ │ │ │ ├── GetFlexibleTimelinesProtocolQuery.java
│ │ │ │ │ ├── GetPlanProtocolQuery.java
│ │ │ │ │ └── GetSingleFlexibleTimelineProtocolQuery.java
│ │ │ │ ├── ProtocolQueryFactory.java
│ │ │ │ ├── ProtocolQuery.java
│ │ │ │ ├── ProtocolQueryType.java
│ │ │ │ └── show
│ │ │ │ └── ShowComponentProtocolQuery.java
│ │ │ ├── time
│ │ │ │ ├── ex
│ │ │ │ │ ├── InconsistentIntervaEndTimeException.java
│ │ │ │ │ ├── InconsistentIntervalDurationException.java
│ │ │ │ │ ├── InconsistentIntervalStartTimeException.java
│ │ │ │ │ ├── PseudoControllabilityException.java
│ │ │ │ │ ├── TemporalConsistencyException.java
│ │ │ │ │ ├── TemporalConstraintPropagationException.java
│ │ │ │ │ ├── TemporalIntervalCreationException.java
│ │ │ │ │ └── TimePointCreationException.java
│ │ │ │ ├── lang
│ │ │ │ │ ├── allen
│ │ │ │ │ │ ├── AfterIntervalConstraint.java
│ │ │ │ │ │ ├── BeforeIntervalConstraint.java
│ │ │ │ │ │ ├── ContainsIntervalConstraint.java
│ │ │ │ │ │ ├── DuringIntervalConstraint.java
│ │ │ │ │ │ ├── EndsDuringIntervalConstraint.java
│ │ │ │ │ │ ├── EqualsIntervalConstraint.java
│ │ │ │ │ │ ├── MeetsIntervalConstraint.java
│ │ │ │ │ │ ├── MetByIntervalConstraint.java
│ │ │ │ │ │ └── StartsDuringIntervalConstraint.java
│ │ │ │ │ ├── BinaryTemporalConstraint.java
│ │ │ │ │ ├── FixIntervalDurationConstraint.java
│ │ │ │ │ ├── FixTimePointConstraint.java
│ │ │ │ │ ├── query
│ │ │ │ │ │ ├── IntervalDistanceQuery.java
│ │ │ │ │ │ ├── IntervalOverlapQuery.java
│ │ │ │ │ │ ├── IntervalPseudoControllabilityQuery.java
│ │ │ │ │ │ ├── IntervalScheduleQuery.java
│ │ │ │ │ │ └── TemporalIntervalQuery.java
│ │ │ │ │ ├── TemporalConstraintFactory.java
│ │ │ │ │ ├── TemporalConstraint.java
│ │ │ │ │ ├── TemporalConstraintType.java
│ │ │ │ │ └── UnaryTemporalConstraint.java
│ │ │ │ ├── solver
│ │ │ │ │ ├── apsp
│ │ │ │ │ │ ├── APSPTemporalSolver.java
│ │ │ │ │ │ └── DistanceGraph.java
│ │ │ │ │ ├── TemporalSolver.java
│ │ │ │ │ └── TemporalSolverType.java
│ │ │ │ ├── TemporalFacadeBuilder.java
│ │ │ │ ├── TemporalFacade.java
│ │ │ │ ├── TemporalInterval.java
│ │ │ │ └── tn
│ │ │ │ ├── ex
│ │ │ │ │ ├── DistanceConstraintNotFoundException.java
│ │ │ │ │ ├── InconsistentDistanceConstraintException.java
│ │ │ │ │ ├── InconsistentTpValueException.java
│ │ │ │ │ ├── IntervalDisjunctionException.java
│ │ │ │ │ ├── NotCompatibleConstraintsFoundException.java
│ │ │ │ │ ├── TemporalNetworkTransactionFailureException.java
│ │ │ │ │ ├── TimePointNotFoundException.java
│ │ │ │ │ └── UnableToHandleContingentConstraintsException.java
│ │ │ │ ├── lang
│ │ │ │ │ ├── event
│ │ │ │ │ │ ├── AddRelationTemporalNetworkNotification.java
│ │ │ │ │ │ ├── AddTimePointTemporalNetworkNotification.java
│ │ │ │ │ │ ├── DelRelationTemporalNetworkNotification.java
│ │ │ │ │ │ ├── DelTimePointTemporalNetworkNotification.java
│ │ │ │ │ │ ├── ex
│ │ │ │ │ │ │ └── NotificationPropagationFailureException.java
│ │ │ │ │ │ ├── InitializationTemporalNetworkNotifaction.java
│ │ │ │ │ │ ├── TemporalNetworkNotificationFactory.java
│ │ │ │ │ │ ├── TemporalNetworkNotification.java
│ │ │ │ │ │ ├── TemporalNetworkNotificationTypes.java
│ │ │ │ │ │ └── TemporalNetworkObserver.java
│ │ │ │ │ └── query
│ │ │ │ │ ├── TimePointDistanceQuery.java
│ │ │ │ │ ├── TimePointDistanceToHorizonQuery.java
│ │ │ │ │ ├── TimePointQuery.java
│ │ │ │ │ └── TimePointScheduleQuery.java
│ │ │ │ ├── SimpleTemporalNetworkWithUncertainty.java
│ │ │ │ ├── TemporalData.java
│ │ │ │ ├── TemporalNetwork.java
│ │ │ │ ├── TemporalNetworkType.java
│ │ │ │ ├── TimePointDistanceConstraint.java
│ │ │ │ └── TimePoint.java
│ │ │ └── utils
│ │ │ ├── log
│ │ │ │ ├── FrameworkLogger.java
│ │ │ │ └── FrameworkLoggingLevel.java
│ │ │ ├── properties
│ │ │ │ └── FilePropertyReader.java
│ │ │ ├── reflection
│ │ │ │ └── FrameworkReflectionUtils.java
│ │ │ └── view
│ │ │ ├── component
│ │ │ │ ├── ComponentViewFactory.java
│ │ │ │ ├── ComponentView.java
│ │ │ │ ├── ComponentViewType.java
│ │ │ │ └── gantt
│ │ │ │ └── GanttComponentView.java
│ │ │ └── executive
│ │ │ └── ExecutiveWindow.java
│ │ └── lang
│ │ └── ddl
│ │ ├── DomainCompilerFactory.java
│ │ ├── DomainCompiler.java
│ │ ├── DomainCompilerType.java
│ │ ├── ex
│ │ │ └── PDLFileMissingException.java
│ │ └── v3
│ │ ├── ddl3.g
│ │ ├── ddl3.tokens
│ │ ├── DDLv3Compiler.java
│ │ └── parser
│ │ ├── ddl3Lexer.java
│ │ ├── ddl3Parser.java
│ │ ├── DDLComponentDecision.java
│ │ ├── DDLComponentDecisionType.java
│ │ ├── DDLComponent.java
│ │ ├── DDLComponentType.java
│ │ ├── DDLConsumableResourceComponentDecision.java
│ │ ├── DDLConsumableResourceComponentType.java
│ │ ├── DDLDomain.java
│ │ ├── DDLEnumerationParameterConstraint.java
│ │ ├── DDLEnumerationParameterType.java
│ │ ├── DDLGenerator.java
│ │ ├── DDLInstantiatedComponentDecision.java
│ │ ├── DDLNumericParameterConstraint.java
│ │ ├── DDLNumericParameterType.java
│ │ ├── DDLParameterConstraint.java
│ │ ├── DDLParameterConstraintType.java
│ │ ├── DDLParameterSet.java
│ │ ├── DDLParameterType.java
│ │ ├── DDLProblem.java
│ │ ├── DDLRange.java
│ │ ├── DDLRenewableResourceComponentDecision.java
│ │ ├── DDLRenewableResourceComponentType.java
│ │ ├── DDLSimpleGroundStateVariableComponentDecision.java
│ │ ├── DDLSimpleGroundStateVariableComponentDecisionType.java
│ │ ├── DDLSimpleGroundStateVariableComponentType.java
│ │ ├── DDLSimpleGroundStateVariableTransitionConstraint.java
│ │ ├── DDLSingletonStateVariableComponentDecision.java
│ │ ├── DDLSingletonStateVariableComponentDecisionType.java
│ │ ├── DDLSingletonStateVariableComponentType.java
│ │ ├── DDLSingletonStateVariableTransitionConstraint.java
│ │ ├── DDLSynchronization.java
│ │ ├── DDLTemporalModule.java
│ │ ├── DDLTemporalRelation.java
│ │ ├── DDLTemporalRelationType.java
│ │ ├── DDLTimeline.java
│ │ ├── DDLTimelineSynchronization.java
│ │ └── PDLGenerator.java
│ ├── control
│ │ ├── acting
│ │ │ ├── ActingAgentStatus.java
│ │ │ ├── ContingencyHandlerProcess.java
│ │ │ ├── DeliberativeProcess.java
│ │ │ ├── ExecutiveProcess.java
│ │ │ └── GoalOrientedActingAgent.java
│ │ ├── lang
│ │ │ ├── AgentTaskDescription.java
│ │ │ ├── ex
│ │ │ │ ├── PlatformCommunicationException.java
│ │ │ │ └── PlatformException.java
│ │ │ ├── Goal.java
│ │ │ ├── GoalStatus.java
│ │ │ ├── PlatformCommandDescription.java
│ │ │ ├── PlatformCommand.java
│ │ │ ├── PlatformFeedback.java
│ │ │ ├── PlatformFeedbackType.java
│ │ │ ├── PlatformMessage.java
│ │ │ ├── PlatformObservation.java
│ │ │ └── TokenDescription.java
│ │ └── platform
│ │ ├── PlatformObserver.java
│ │ ├── PlatformProxyBuilder.java
│ │ ├── PlatformProxy.java
│ │ └── RunnablePlatformProxy.java
│ ├── executive
│ │ └── dc
│ │ ├── DCDispatcher.java
│ │ ├── DCExecutive.java
│ │ ├── DCMonitor.java
│ │ ├── DCResult.java
│ │ ├── DCResultType.java
│ │ ├── DispatchDCResult.java
│ │ ├── FailureDCResult.java
│ │ ├── PlanExecutionStatus.java
│ │ ├── strategy
│ │ │ ├── clock
│ │ │ │ ├── ClockRelation.java
│ │ │ │ └── ClockSet.java
│ │ │ ├── ListStrategy.java
│ │ │ ├── loader
│ │ │ │ └── StrategyLoader.java
│ │ │ ├── result
│ │ │ │ ├── Action.java
│ │ │ │ ├── Transition.java
│ │ │ │ └── Wait.java
│ │ │ ├── State.java
│ │ │ ├── StateSet.java
│ │ │ ├── StateStrategy.java
│ │ │ ├── Strategy.java
│ │ │ ├── TreeNodeState.java
│ │ │ └── TreeStrategy.java
│ │ └── WaitDCResult.java
│ └── stats
│ ├── ModelDataset.java
│ ├── mongo
│ │ └── MongoModelDataset.java
│ └── TokenExecutionData.java
└── test
└── java
└── it
└── cnr
└── istc
└── pst
└── platinum
├── domain
│ └── component
│ ├── pdb
│ │ └── PlanDataBaseTestCase.java
│ ├── resource
│ │ └── DiscreteResourceComponentTestCase.java
│ └── sv
│ ├── ExternalStateVariableComponentTestCase.java
│ └── StateVariableComponentTestCase.java
├── parameter
│ ├── csp
│ │ └── v4
│ │ ├── ChochoSolverUnitTest.java
│ │ └── ParameterTestFactory.java
│ └── facade
│ └── CSPParameterDataBaseFacadeTest.java
├── stats
│ └── mongo
│ └── MongoModelDatasetTest.java
├── testing
│ └── executive
│ └── dc
│ └── strategy
│ ├── TestListStrategy.java
│ └── TestTreeStrategy.java
└── time
├── facade
│ └── UncertaintyTemporalDataBaseFacadeTestCase.java
├── reasoner
│ └── apsp
│ └── APSPSolverTestCase.java
└── tn
├── SimpleTemporalNetworkTestCase.java
└── SimpleTemporalNetworkWithUncertaintyTestCaseTest.java