NASA-AMMOS / NASA-AMMOS/plandev

Give constraints/expressions an explicit temporal domain/dependency

Open
#750 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

performance scheduling
Dominant language
Java
Stars
128
Forks
33
Avg merge
1d 17h
Merged PRs (30d)
12

Description

This ticket builds towards the effort of reducing the number of simulations during scheduling.

What forces us to re simulate a lot in the scheduler is basically the lack of information. Whether it is information about activities themselves (their duration type other than controllable or non controllable) or about resources/expressions.
This ticket advocates for attaching and processing explicit temporal domains to expressions to avoid needing simulations of the whole planning horizon every time we want to evaluate an expression (between goals for example).

Two examples:

  • The value of the parameter of an activity can now be whatever expression you want. So maybe it is the value of a resource at the end of the planning horizon. And we don't know what it is before we instantiate it because we do not have this notion of temporal dependency/temporal domain. Resource("...").valueAt(t) has a temporal dependency on time t, it is undefined outside of t by definition. So it means that whatever I do, when I want to instantiate an activity, I have to get the simulation results for the whole plan. That forces us to resimulate a lot.

  • The value of an activity parameter can be the parameter of an anchor activity. This value will not be known before the anchor activity has been determined by the Goal. Let's say that by default, the temporal domain of the aggregation of activity parameters would be the disjunctive expression of domains of their sub-expressions. The relative parameter would have a domain equal to the total horizon UNTIL we know what anchor activity it is going to be. We would need to "replace" the parameter expression by a fixed expression and then this would modify the "temporal" domain of the activity creation.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

No files or tests are identified. Start by tracing how expressions, resources, activity parameters, and scheduler evaluations represent temporal dependencies and domains. Done would require an agreed design and implementation that processes explicit temporal domains without repeatedly simulating the whole planning horizon.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
backend
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.