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 theoriginal setup X to a new setup Y, two conditions need to be fulfilled:
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:
Priority | From | To | Duration | Cost |
---|---|---|---|---|
1 | *green | *green | 0 | 10 |
2 | *red | *red | 0 | 10 |
3 | *green | *red | 1 day | 50 |
4 | *green | 2 day | 50 | |
5 | 3 day | 50 |
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.
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/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. This is the default.
R: Remove an entity, and report an error if the entity
doesn’t exist.
|
Methods
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 compulsory. The other arguments are optional. |
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.
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, and ? 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>
<setupmatrices>
<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>
</setupmatrices>
</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