Anti-Dependencies

Anti-dependencies are used to resolve circular references. Imagine a scenario where a Stockpile Tunnel (an offshoot the main decline) has dependencies which tell the decline to stop advancing until the stockpile is finished. A typical way to do this is to use a Geometric Dependency which links the decline tunnel with the last node of the stockpile. The problem is that Geometric Dependencies do not discriminate between the thing they collide with, so we end up with multiple decline nodes being successors of the last stockpile node.

Due to the dependency structure, a circular dependency is created where the decline waits on the stockpile and the stockpile waits on the decline causing a deadlock. To solve this problem, we need a way to disable specific (geometric or other kinds of dependency links) that cause a deadlock. One way to achieve this is to create an anti-dependency link between two or more nodes.

An anti-dependency is essentially a link between two nodes which says the two can never be dependent on each other (in a particular predecessor-successor order). This means that any dependency links that cause deadlocks can effectively be ignored in the direction that the anti-dependency link faces (however a reversed link is still possible because direction matters).

When the schedule is run and anti-dependencies are able to solve deadlocks, anti-dependencies are automatically created and added to a "'Circular Reference Anti Dependency".

It is important to note, that each dependency, regardless of type has a Priority box. This box allows users to define which dependencies are more important and should be treated as a priority when conflicts are encountered. For example, if Range X has Priority 1 and Range Y has Priority 2, and there is a conflicting rule between the two ranges, the entry in Priority 2 that conflicts with the entry in Priority 1 will become circular and will be place in the circular reference anti dependency. This example assumes that there are no other interactions.

The following "Before and After" screenshots illustrate the practical effect of anti-dependency links.

  • Blue solid is the Decline;

  • Green solid is the Stockpile Tunnel;

  • Green dependency arrows show the Tunnel Sequence;

  • Yellow dependency arrow shows the Tunnel Intersection;

  • Orange dependency arrows are created by a Geometric Dependency;

  • Grey dependency arrows are those which have been disabled due to an anti-dependency link;