Main > Reference Manual > Modeling > SetupMatrix

A setup matrix defines the time and cost of setup conversions on a resource. Within a setup matrix rules are used to define the changeover cost and duration.

To compute the time of a changeover the algorithm will evaluate all rules in sequence (in order of priority).
For a rule to match the changeover between the original setup X to a new setup Y, two conditions need to be fulfilled:

  • The original setup X must match with the fromsetup of the rule.
    If the fromsetup field is empty, it is considered a match.
  • The new setup Y must match with the tosetup of the rule.
    If the tosetup field is empty, it is considered a match.

The wildcard characters * and ? can be used in the fromsetup and tosetup fields.
As soon as a matching rule is found, it is applied and subsequent rules are not evaluated.
If no matching rule is found, the changeover is not allowed.

For instance, consider a setup matrix with the following rules:

PriorityFromToDurationCost
1*green*green010
2*red*red010
3*green*red1 day50
4*green 2 day50
5  3 day50

Based on this matrix:

  • A change from "lightgreen" to "darkgreen" takes no time, but costs 10. Rule 1 applies.
  • A change from "green" to "black" takes 2 days and costs 50. Rule 4 applies.
  • A change from "red" to "black" takes 3 days and costs 50. Rule 5 applies.
    Without rule 5 this changeover would not be allowed.

Fields

Field Type Description
name non-empty string

Name of the setup matrix.
This is the key field and a required attribute.

rules list of setup matrix rules

A read-only list of rules in this matrix.

action A
C
AC (default)
R

Type of action to be executed:

  • A: Add an new entity, and report an error if the entity already exists.
  • C: Change an existing entity, and report an error if the entity doesn't exist yet.
  • AC: Change an entity or create a new one if it doesn't exist yet.
  • R: Remove an entity, and report an error if the entity doesn't exist.
Method Description
addRule(priority=[integer], fromsetup=[string], tosetup=[string], duration=[timeperiod], cost=[number])

This method adds a new rule to the matrix.
Only the priority keyword is compulsary. The other arguments are optional.

Setup Rule

Within a setup matrix rules are used to define the changeover cost and duration.
The rules are evaluated in sequence, starting with the lowest priority number.

Field Type Description
priority integer

The priority of the rule. Rules are evaluated in the order of priority - lower numbers first.
This is the key field

fromsetup String

The previous setup.
If the field is empty the rules applies to any previous setup value.
Wildcard characters are allowed in this string:

  • * matches a sequence of characters
  • ? matches a single character
tosetup String

The new setup.
If the field is empty the rules applies to any new setup value.
Wildcard characters are allowed in this string, similar as in the fromsetup field.

duration timeperiod

Duration of the changeover.

cost double

Cost of the changeover.

Example XML structures

  • Adding or changing setup matrices
 <plan>
   <setupmatrtices>
      <setupmatrix name="Painting line changeover">
        <rules>
          <rule priority="1" 
             fromsetup="green" tosetup="red" 
             duration="P0D" cost="10" />
          <rule priority="2" 
             fromsetup="red" tosetup="green" 
             duration="P0D" cost="10" />
          <rule priority="3" 
             fromsetup="white" tosetup="black" 
             duration="P10D" cost="50"/>
          <rule priority="4" 
             fromsetup="black" tosetup="white" 
             duration="P10D" cost="50"/>
          <rule priority="5" fromsetup="yellow" 
             duration="P2D" cost="20"/>
          <rule priority="6" tosetup="yellow" 
             duration="P2D" cost="20"/>
          <rule priority="6" 
             duration="P3D" />
        </rules>
      </setupmatrix>
   </setupmatrtices>
 </plan>
  • Deleting a setup matrix
 <plan>
    <setupmatrtices>
       <setupmatrtix name="changovers" action="R"/>
    </setupmatrtices>
 </plan>

Example Python code

  • Adding or changing setup matrices
    matrix = frepple.setupmatrix(name="changeovers for paint line")
    matrix.addRule(priority=1, fromsetup="*green", cost=10) 
  • Deleting a setup matrix
    frepple.setupmatrix(name="changeovers for paint line", action="R")
  • Iterate over setup matrices and setup matrix rules
    for m in frepple.setupmatrices():
      print "Matrix '%s' has the following rules:" % m.name
      for i in m.rules:
        print " ", i.priority, i.tosetup, i.fromsetup, 
        print i.duration, i.cost