scheduling
I have a set of activities, each of which has a duration, and a list of other activities that must complete before it can begin. (Of course it needs to be an acyclic DAG or it makes no sense.) Can I use Analytica to get a schedule of which activity begins when, the way project management software does?
I think maybe I can do it by putting the activities in the index in order that I know won't be incorrect, and running Dynamic over that index.
I've attached a model that illustrates one approach to this. The approach is to draw the activity DAG as an influence diagram. To indicate that the node is an activity, you define it using a UDF:
Function Activity( dependsOn: optional ...Variable ; duration: number )
For example, activity C is defined as:
Activity(duration:2,    dependsOn:A,B )
This example computes the start time for each activity as the earliest start time possible given sufficient parallelism to carry out all ready activities concurrently. The example includes a Gantt Chart.Â
One downside with this approach is that it cannot automatically detect when you make a structural change to the activity DAG, such as adding or removing a task. If you do so, you'll have to press the [Refresh activity list] button so the Activity_idx index refreshes. The Gantt chart needs this index of all activities.
The calculations will support uncertain durations just fine, but one would need to think through good representations for visualizing these, which I have not done. I tried it with distributions for the durations and could view CDFs, etc., for Earliest_start_time and Gantt_chart (which is the end time). The Prob bands graph of the Gantt chart (with Vertical=Activity_idx, Origin=Earliest_start_time and Key=.Probability), and with bar overlap in Graph Setup changed to 0% is an interesting depiction of the ranges (each quantile bar appearing separately). The problem here is just that the 5% percentile start is paired with the 5% percentile stop time, etc. At first I thought what you probably want is for the 5% percentile start to be paired with the 95% percentile stop, but that doesn't actually work right once you pair the 95% start with the 5% stop (the ordering is backwards). I didn't go further down that road.
Â
Wow, this is lovely. Thanks Lonnie!
Thanks Lonnie! I dropped your scheduler module into my model, and it did what I laboriously done, but much cleaner. When I run Gantt chart, the bars are out of order, which I suppose is legal because it's an (unordered) set that gets coerced into an index. But for tornados, there is a hidden parameter in the chart specifications that sorts it in order of bar size. Is there a charting parameter to specify that the activities are ordered by start date, or middle date, or something like that?
Currently viewing this topic 1 guest.
- 4 Forums
- 87 Topics
- 283 Posts
- 2 Online
- 1,874 Members