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:
| 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.
- 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. |
| 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:
|
| Method | Description |
| addRule(priority=[integer], fromsetup=[string], tosetup=[string], duration=[timeperiod], cost=[number]) |
This method adds a new rule to the matrix. |
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. |
| fromsetup | String |
The previous setup.
|
| tosetup | String |
The new setup. |
| 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
