Source Scheduling #7: Constraints

Click to Print

Conceptual

In Dependencies we look at how to make one Task or a range of Tasks wait on the completion of other/s. This helps to control the specific order of events regardless of when they appear in the eventual schedule but what if you have something that is time dependent such as environment approval on a new area to work? Or if you have a commodity target per month that you don’t have the processing resources to exceed? That is when you apply a Constraint. There are four kinds of Constraint currently implemented in Spry: Capacity, Time, Proximity and Inventory.

A Capacity Constraint applies a limit to any value over a certain period of time. For example, if you didn’t want to exceed more than 50,000t of Coal per month, or needed to limit the amount of waste heading to a certain dump every day you could apply a Capacity Constraint. It can be based off of your Calendar Table, or manually entered at whatever time frame suits your scheduling.

A Time Constraint applies a limit to the times that a Source or Destination Task is available to be worked.

A Proximity Constraint applies a limit to the number of pieces of Equipment that can work a Leaf or group of Leaves at any one point in time.

An Inventory Constraint creates a virtual container that can be added to, and removed from. Once a container is full it can no longer be added to (thus Constraining the adding Tasks) and once empty it can no longer be removed from (Constraining the removing Tasks).

Practical

Capacity Constraint

Create a new Capacity Constraint by right-clicking “Constraints” and choosing Add – > New Capacity Constraint

Capacity Constraint

  • Capacity Type: Either Manually Specified (as above) or based off your Calendar
  • Constraint Type: Source, Destination or Both
  • Source/Destination Range: The ranges across which the Constraint will be applied. Note that a Source and Destination Range will combine their filters
  • Processes and Equipment: Filter the Tasks that the Constraint Applies to
  • Value: Generally SourceQuantity or DestinationQuantity but can be any value that is calculated internally by Spry (check the Variables in the Expression Editor)
  • Capacities (Manual Only): Use either the source3processes2 or Wizard to create Start and End Dates and a Quantity to limit by
  • Capacity Field (Calendar Only): The Calendar Table Field to draw the limiting Quantity from.
  • Aggregation Level (Calendar Only): A common Calendar setup involves Year and Month. By selecting any level above the lowest Level Spry will attempt to aggregate the values and apply them over the longer period

Time Constraint

Create a new Time Constraint by right-clicking “Constraints” and choosing Add – > New Time Constraint

Time Constraint

  • Constraint Type: Source, Destination or Both
  • Source/Destination Range: The ranges across which the Constraint will be applied. Note that a Source and Destination Range will combine their filters.
  • Equipment: Filters the Tasks that the Constraint Applies to.
  • Exclude When: Between, Before, After or Before & After. Sets how the Constraint is applied regarding the dates in the following field.
  • Start Time/End Time: Sets the dates the Constraint applies to.

Proximity Constraint

Create a new Proximity Constraint by right-clicking “Constraints” and choosing Add – > New Proximity Constraint

prox1 prox2 prox3

  • Constraint Type: Source, Destination or Both
  • Source/Destination Range: The ranges across which the Constraint will be applied. Note that a Source and Destination Range will combine their filters.
  • Processes and Equipment: Filters the Tasks that the Constraint Applies to.
  • Value Expression: Applies a weight to each piece of Equipment. Can be complex and apply additional weight to larger equipment with IF(Equipment=EquipmentEX3600, 2, 1) for example
  • Maximum Expression: The maximum total of Values from each piece of Equipment (set in Value Expression above)
  • Start/End Time: Sets the dates the Constraint applies to.
  • Distance Limiting: Requires a Process Centroid field to be set. Applies to results within a Group only

Inventory

Create a new Inventory Constraint by right-clicking “Constraints” and choosing Add – > New Inventory Constraint

Before assigning settings, Inventory Constraints will almost always involve the creation of new Positions, Leaves, Fields, Processes AND Equipment to manage the Inventory. For example if you wished to create a Coal Stockpile that processed Coal at a fixed rate, steps involved might be:

  1. Create a new Position (normally at the highest Level) called Stockpile.
  2. Create a new Field on your Source table called Stockpile.
  3. Create a single Leaf on your Table against the new Stockpile Position
  4. Unlock the Table and manually enter a value in this new Leaf that is at least a large as your Coal Source Quantity
  5. Create a new Process that references the new Field
  6. Create a new piece of Equipment that works your new Process at your desired Hourly Rate (* Source Path)
  7. Ensure that your Dependencies and Constraints ignore the new Process

The reason for this setup is that in this example you already have a Process set up to add to the virtual container (Inventory) but you need some way to take Inventory away which you haven’t done yet.

InventoryConstraint

  • Capacity Type: Either Manually Specified (as above) or based off your Calendar
  • Initial Value: How much is in the Inventory container to begin with
  • Constraint Type: Source, Destination or Both
  • Source/Destination Range: The ranges across which the Constraint will be applied. Note that a Source and Destination Range will combine their filters
  • Processes and Equipment: Filter the Tasks that the Constraint Applies to
  • Value: Generally SourceQuantity or DestinationQuantity but there may be use in Operating or CalendarHours
  • Capacities (Manual Only): Use either the source3processes2 or Wizard to create Start and End Dates and a Quantity (size) to set your virtual container to be.
  • Capacity Field (Calendar Only): The Calendar Table Field to draw the limiting Quantity from.
  • Aggregation Level (Calendar Only): A common Calendar setup involves Year and Month. By selecting any level above the lowest Level Spry will attempt to aggregate the values and apply them over the longer period