# Optimizing Workflow in Cell-Based Slaughtering and Cutting of Pigs

Johan Oppen

► To cite this version:

Johan Oppen. Optimizing Workflow in Cell-Based Slaughtering and Cutting of Pigs. IFIP International Conference on Advances in Production Management Systems (APMS), Sep 2019, Austin, TX, United States. pp.223-230, 10.1007/978-3-030-29996-5_26. hal-02460529

HAL Id: hal-02460529

https://inria.hal.science/hal-02460529

Submitted on 30 Jan 2020

HAL is a multi-disciplinary open access
archive for the deposit and dissemination of sci-
entific research documents, whether they are pub-
lished or not. The documents may come from
teaching and research institutions in France or
abroad, or from public or private research centers.

L'archive ouverte pluridisciplinaire HAL, est
destinée au dépôt et à la diffusion de documents
scientifiques de niveau recherche, publiés ou non,
émanant des établissements d'enseignement et de
recherche français ou étrangers, des laboratoires
publics ou privés.

<figure><img src="image_1.png" /></figure>

Distributed under a Creative Commons Attribution 4.0 International License
# Optimizing workflow in cell-based slaughtering and cutting of pigs

Johan Oppen

Møreforsking Molde, 6410 Molde, Norway

johan.oppen@himolde.no

**Abstract.** In this paper we describe and solve a scheduling problem taken from the slaughterhouse industry. In an on-going research project, a new concept for slaughtering and cutting of pigs is developed. The idea is to replace the traditional production line with a number of *meat factory cells*, where an operator slaughters and rough-cuts the pig, assisted by a robot. In order to minimize non-productive operator time, a solution approach is presented together with computational results.

**Keywords:** Production Planning · Scheduling · Optimization · Meat Industry · Meat Factory Cell.

## 1 Introduction

The meat industry, like most other industries, is constantly searching for decreased costs and increased revenues. Cost savings have mainly been achieved through centralization, with fewer, larger and more specialized and automated factories and increased transport distances. This has resulted in very large plants with a slaughter capacity of up to 1 400 pigs per hour in the Netherlands [2], and 5 000 smallstock (lambs/sheep) per day in Bordertown, Australia [1]. Also in Norway, many small slaughterhouses have been closed down and replaced by larger and more automated plants during the last decades. However, long distances and relatively few livestock in Norway makes it impossible to decrease the number and increase the size of slaughterhouses further. The transportation time for livestock from many farms to the closest slaughterhouse is already close to eight hours, which is the longest time allowed for transportation of live animals in Norway. This means that a more efficient meat production must be sought in other ways than by replacing relatively small plants by larger ones with increased capacity and more automation.

Nortura [3], which is the largest meat company in Norway, is currently running a research project called Meat 2.0 to find out if a new way of organizing slaughtering and rough-cutting can give benefits in terms of increased flexibility, improved hygiene and better utilization of edible offals, so-called *plus products*, without losing efficiency compared to today's assembly line-like production system. The basic idea is to replace the traditional production line, where each
worker performs a small operation before the carcass continues to the next sta-
tion, with a number of *Meat Factory Cells*, where one animal at the time is
slaughtered and rough-cut by an operator assisted by a robot.

In the project, parts of the Meat Factory Cell concept is tested on pigs at
Nortura's plant in Tønsberg, Norway. The focus in this paper is how the work
in the cell is organized, so we will just give a brief overview of the whole process
before looking at the operations in the cell and how these can be optimized.

The pigs are first stunned, put to death, emptied for blood, skalded, dehaired and disinfected. Up to this point, the process is the same as in today's production line system. Each pig is then transported to a cell, where an operator, assisted by a robot, slaughters and rough-cuts the pig and places the parts on a rack or trolley. When all the parts are on the rack, the rack is transported via meat control to sorting and further processing of the parts. The equipment in the cell is cleaned, and the next pig is placed in the cell for processing.

The equipment and operations in the cell are still being developed and tested,
but it is already clear that both an operator and a machine or robot will be
working in the cell, so we have enough information to look at how the work in
the cell should be optimized. Each operator will be working in more than one,
most likely two, cells in parallel. This is to avoid unnecessary waiting when the
robot works in the cell, as the operator must keep a certain distance to a working
robot. In addition to choosing which cell to work in at a given time, the operator
can also sometimes choose between different operations to carry out, this adds
to the complexity of the planning problem. The time needed for the operator
to complete all operations to slaughter and rough-cut each pig is assumed to be
constant and known, so the goal is to minimize the amount of time the operator
spends waiting for the robot and moving between cells.

The problem has many similarities to scheduling problems, see, e.g. [5], as
we are looking for the best ordering or sequence of operations or tasks. In most
scheduling problems in food processing [4], “industry-specific characteristics in-
duce specific and complex scheduling problems” [4, p. 1]. This is also the case
here, and we have not been able to find similar problems in the literature. The
option for the operator to stay in the current cell and wait for the robot to finish
its current task, or move to another cell, seems to be unique. We have tried a
few modeling and solution approaches from the operations research literature to
handle the problem.

The remainder of the paper is organized as follows. The problem is presented
in more detail in Section 2. A heuristic solution method is described in Section
3. Computational testing is described in Section 4, followed by conclusions in
Section 5.

## 2 Problem description

When a pig arrives in the cell, it is placed on a table and kept in place by four
grippers, each of them holding one leg. The operator cuts off the pig's head and
the four legs, the parts are lifted onto a rack by the robot. The grippers “hand over” the legs to the robot.

After the head and the legs have been cut off and removed, the pig is turned around on the table, now with the back up. The operator uses a saw to open the carcass by performing one cut on each side of the spine, the robot then lifts the neck/back over to the rack. While the robot is lifting, the operator cuts the back/neck free from the carcass. This means that in this so-called *combined task*, the operator is assisted by the robot, and the robot is active while the operator is working in the cell. During the other robot operations the operator has to keep a certain distance to the robot and can therefore not do operations on the pig.

Next, the operator removes the intestines (heart, lungs, liver, stomach etc), which are also placed on the rack. When all the inner organs are removed, the robot lifts the belly part over to the rack. The table is then cleaned before the next pig arrives.

An overview of operator, robot and combined tasks is given in Table 1. The times needed to perform the different tasks, and to move between cells, are supposed to be known. The times given in Table 1 are preliminary estimates which will become more precise as more testing is performed in the project.

<table><caption>**Table 1.** Operations in the cell</caption><thead><tr><th>Task</th><th>Description</th><th>Predecessors</th><th>Est. time</th></tr></thead><tbody><tr><td>Ot1</td><td>Place pig on table</td><td></td><td>60 sec</td></tr><tr><td>Ot2</td><td>Cut off head</td><td>Ot1</td><td>20 sec</td></tr><tr><td>Ot3</td><td>Cut off legs</td><td>Rt1</td><td>100 sec</td></tr><tr><td>Ot4</td><td>Turn pig on table</td><td>Rt2</td><td>20 sec</td></tr><tr><td>Ot5</td><td>Saw both sides of back</td><td>Ot4</td><td>40 sec</td></tr><tr><td>Ot6</td><td>Remove intestines</td><td>Ct1</td><td>120 sec</td></tr><tr><td>Ot7</td><td>Clean table</td><td>Rt3</td><td>90 sec</td></tr><tr><td>Om</td><td>Move between cells</td><td></td><td>15 sec</td></tr><tr><td>Rt1</td><td>Lift head to rack</td><td>Ot2</td><td>20 sec</td></tr><tr><td>Rt2</td><td>Lift legs to rack</td><td>Ot3</td><td>60 sec</td></tr><tr><td>Rt3</td><td>Lift belly to rack</td><td>Ot6</td><td>20 sec</td></tr><tr><td>Ct1</td><td>Cut loose and lift back/neck</td><td>Ot5</td><td>30 sec</td></tr></tbody></table>

Operators can work in multiple (normally two) cells at the time, and must choose what to do while the robot works. In general, the operator will wait in the cell if the robot task is short, and go to the neighboring cell and work there if the robot task is long. Depending on the duration of tasks and when the operator moves between cells, it may happen that the robot is still working when the operator returns to a cell, forcing the operator to wait. The time estimates given in Table 1 will not lead to such situations, as the longest robot task (except the task where the operator and the robot works together) does not last longer than the shortest operator task. We nevertheless want to consider this as a
possibility in case time estimates change, and because time estimates may be
different for different animal types. If the project shows that the Meat Factory
Cell concept should be used in production, both bovine and smallstock may also
be slaughtered using this method.

3 Modeling and solution approaches

When studying a new and unknown optimization problem, we have often found
it useful to start by writing down a mathematical model and try to find optimal
solutions using traditional algorithms. This was also the first approach for the
problem presented here. The model was a mixed integer model with indicator
variables α<sub>otpct<sup>t</sup>p<sup>t</sup>c<sup>t</sup></sub> equal to 1 if operator *o* performs task *t*′ on pig *p*′ in cell *c*′
immediately after performing task *t* on pig *p* in cell *c*, and 0 otherwise. The model
also has variables telling when the operator starts performing the different tasks,
and variables for moving and waiting times between operations. The constraints
in the model ensure that all tasks are performed in the correct order, and that all
time variables are computed correctly. The model is relatively easy to understand
and straightforward to write down, but it turns out to be very hard to solve by
standard solvers like Gurobi, and not even the smallest instances included in
the computational experiments in Section 4 could be solved to optimality in
reasonable time. We therefore do not present this model in detail.

**3.1 A construction heuristic**

Because solving a standard mathematical model turned out to be impossible
in reasonable time for realistically sized instances, a heuristic approach seemed
natural. We have developed a simple heuristic which finds good solutions in
short time for problem instances of reasonable size. The solution method builds
schedules for one operator working in two cells in parallel, and works as follows.

- An initially empty vector P of partial schedules is constructed. An empty
  schedule is created, the first operator task in cell 1 is added, cell 1 is set as
  the current cell (the cell where the operator is currently staying), and the
  schedule is added to P.

- Whenever P is not empty, a partial schedule is picked from P, extended in all feasible ways, the resulting schedules are then put back into P. When all tasks in both cells are added to a schedule, the completion time is compared to the best so far, and the schedule with the earliest completion time is kept.

- When a partial schedule is extended, an operator task, a robot task or a
combined task is added to the schedule. The previous task in the current
cell must have the new task as a successor, and all predecessors of the new
task must already be added for the current cell. If the added task is an
operator task or a combined task, the current cell does not change.

- If the added task is a robot task, the current cell may change. If the robot task lasts no longer than the time it takes for the operator to move to the
other cell, the operator stays in the cell and thus the current cell is not changed. If the robot task lasts longer than the operator move time, the time it takes before the operator can start working in the current or the other cell is computed and compared.

* If the difference is at most equal to the operator move time, both changing and not changing the current cell is considered by making two copies of the schedule.

* If the difference is larger, the alternative where the operator can start working first is chosen.

# 4 Computational experiments

In order to find out how well the heuristic performs, both in terms of run time and solution quality, we have conducted computational experiments. In the following subsections, we describe the test instances used and the test results.

## 4.1 Test instances

We have created 60 test instances, based on five different problem sizes. The smallest instances have three operator tasks, two robot tasks and one combined task, and are small enough to allow us to check that solutions are correct, and even optimal, by inspection. The largest instances have more operator and robot tasks than we consider in the problem presented here, in addition there are up to five successor tasks. Instance 9 represents the real-world problem described in Section 2 with tasks listed in Table 1. For each problem size, we create instances with two different sets of task durations, one where most operator tasks are longer than the longest robot task (instances with odd numbered IDs), and one with shorter operator tasks and longer robot tasks (instances with even numbered IDs). Each instance is then replicated with one and two pigs per cell, and with three different operator move times. An overview of the instances is given in Table 2, and a graphical view of instance 3 is given in Figure 1.

## 4.2 Results

The heuristic outlined in Section 3 was implemented in C++, and tests are run on an Intel(R) Core(TM) i7-4600U CPU @ 2.10 Ghz 2.70 Ghz with 8.00 GB of RAM. Results are shown in Table 3.

From the results in Table 3, it is evident that the real-world instances (instance 9 and 10) are easy to solve, even if the number of tasks is quite high. Especially instance 7 and 8 are hard to solve, these have both the largest number of tasks and the largest complexity in terms of many possible successors for some of the tasks. This means the number of possible paths through the network of tasks is quite high, and thus finding the best one takes time. Even though the problem studied here normally does not have that many options, we find it useful
<table><caption>**Table 2.** Problem instances. “Inst” refers to instance numbers, the columns under “Size” give the number of operator, robot and combined tasks, and the maximum number of successors for a task, respectively. The ranges for task durations are given in the columns under “Duration”, and in the last two columns we give the total operator and robot time needed per pig.</caption><thead><tr><th rowspan="2">Inst</th><th colspan="4">Size</th><th colspan="3">Duration</th><th colspan="2">Time per pig</th></tr><tr><th>Op tasks</th><th>R tasks</th><th>C tasks</th><th>Succ</th><th>Op tasks</th><th>R tasks</th><th>C tasks</th><th>Operator</th><th>Robot</th></tr></thead><tbody><tr><td>1</td><td>3</td><td>2</td><td>1</td><td>2</td><td>6-16</td><td>2-10</td><td>12</td><td>46</td><td>20</td></tr><tr><td>2</td><td>3</td><td>2</td><td>1</td><td>2</td><td>2-10</td><td>6-20</td><td>12</td><td>34</td><td>40</td></tr><tr><td>3</td><td>5</td><td>2</td><td>1</td><td>3</td><td>6-16</td><td>2-10</td><td>14</td><td>64</td><td>30</td></tr><tr><td>4</td><td>5</td><td>2</td><td>1</td><td>3</td><td>2-10</td><td>6-20</td><td>14</td><td>38</td><td>42</td></tr><tr><td>5</td><td>6</td><td>3</td><td>1</td><td>3</td><td>6-16</td><td>2-10</td><td>14</td><td>74</td><td>36</td></tr><tr><td>6</td><td>6</td><td>3</td><td>1</td><td>3</td><td>2-10</td><td>6-20</td><td>14</td><td>46</td><td>52</td></tr><tr><td>7</td><td>9</td><td>6</td><td>1</td><td>5</td><td>6-16</td><td>2-10</td><td>14</td><td>112</td><td>46</td></tr><tr><td>8</td><td>9</td><td>6</td><td>1</td><td>5</td><td>2-10</td><td>6-20</td><td>14</td><td>90</td><td>74</td></tr><tr><td>9</td><td>7</td><td>3</td><td>1</td><td>1</td><td>4-24</td><td>4-12</td><td>6</td><td>90</td><td>20</td></tr><tr><td>10</td><td>7</td><td>3</td><td>1</td><td>1</td><td>2-16</td><td>8-16</td><td>6</td><td>58</td><td>32</td></tr></tbody></table>

<figure><img src="image_2.png" /><figcaption>**Fig. 1.** Instance 3 with five operator tasks (in blue), two robot tasks (in red), and one combined task (in green). Durations for each task are given, and the arrows indicate possible orderings of tasks. In this instance, Ot3 has the highest number of possible successors (three).</figcaption></figure>
<table><caption>**Table 3.** Test results. Explanation of column headers: "Instance" refer to instances, where the three numbers refer to instance number, the number of pigs processed in each cell and the operator move time, respectively. "Op time" is the total operator time needed to perform the operator and combined tasks. "Obj" is the best solution found in terms of completion time. "Move" and "Wait" are the number of time units the operator spends moving and waiting in the best found solution, and "Time" is the time (in seconds) the algorithm needs to solve the problem. A * in the time column means the algorithm ran out of memory before it completed, and the solution given is the best solution found before this occurred.</caption><thead><tr><th>Instance</th><th>Op time</th><th>Obj</th><th>Move</th><th>Wait</th><th>Time</th><th>Instance</th><th>Op time</th><th>Obj</th><th>Move</th><th>Wait</th><th>Time</th></tr></thead><tbody><tr><td>1-1-1</td><td>92</td><td>97</td><td>5</td><td>0</td><td>0.00</td><td>2-1-1</td><td>68</td><td>81</td><td>5</td><td>8</td><td>0.00</td></tr><tr><td>1-1-2</td><td>92</td><td>102</td><td>6</td><td>4</td><td>0.00</td><td>2-1-2</td><td>68</td><td>84</td><td>10</td><td>6</td><td>0.00</td></tr><tr><td>1-1-5</td><td>92</td><td>111</td><td>15</td><td>4</td><td>0.00</td><td>2-1-5</td><td>68</td><td>93</td><td>25</td><td>0</td><td>0.00</td></tr><tr><td>1-2-1</td><td>184</td><td>193</td><td>9</td><td>0</td><td>0.00</td><td>2-2-1</td><td>136</td><td>155</td><td>9</td><td>10</td><td>0.00</td></tr><tr><td>1-2-2</td><td>184</td><td>202</td><td>10</td><td>8</td><td>0.00</td><td>2-2-2</td><td>136</td><td>160</td><td>18</td><td>6</td><td>0.00</td></tr><tr><td>1-2-5</td><td>184</td><td>217</td><td>25</td><td>8</td><td>0.00</td><td>2-2-5</td><td>136</td><td>181</td><td>45</td><td>0</td><td>0.00</td></tr><tr><td>3-1-1</td><td>128</td><td>133</td><td>5</td><td>0</td><td>0.00</td><td>4-1-1</td><td>76</td><td>91</td><td>5</td><td>10</td><td>0.00</td></tr><tr><td>3-1-2</td><td>128</td><td>138</td><td>10</td><td>0</td><td>0.00</td><td>4-1-2</td><td>76</td><td>94</td><td>10</td><td>8</td><td>0.00</td></tr><tr><td>3-1-5</td><td>128</td><td>151</td><td>15</td><td>8</td><td>0.00</td><td>4-1-5</td><td>76</td><td>103</td><td>25</td><td>2</td><td>0.00</td></tr><tr><td>3-2-1</td><td>256</td><td>265</td><td>9</td><td>0</td><td>0.01</td><td>4-2-1</td><td>152</td><td>171</td><td>9</td><td>10</td><td>0.01</td></tr><tr><td>3-2-2</td><td>256</td><td>274</td><td>18</td><td>0</td><td>0.01</td><td>4-2-2</td><td>152</td><td>178</td><td>18</td><td>8</td><td>0.01</td></tr><tr><td>3-2-5</td><td>256</td><td>297</td><td>25</td><td>16</td><td>0.01</td><td>4-2-5</td><td>152</td><td>199</td><td>45</td><td>2</td><td>0.01</td></tr><tr><td>5-1-1</td><td>148</td><td>155</td><td>7</td><td>0</td><td>0.01</td><td>6-1-1</td><td>92</td><td>103</td><td>7</td><td>4</td><td>0.01</td></tr><tr><td>5-1-2</td><td>148</td><td>162</td><td>14</td><td>0</td><td>0.02</td><td>6-1-2</td><td>92</td><td>108</td><td>14</td><td>2</td><td>0.02</td></tr><tr><td>5-1-5</td><td>148</td><td>181</td><td>25</td><td>8</td><td>0.01</td><td>6-1-5</td><td>92</td><td>127</td><td>35</td><td>0</td><td>0.02</td></tr><tr><td>5-2-1</td><td>296</td><td>309</td><td>13</td><td>0</td><td>8.91</td><td>6-2-1</td><td>184</td><td>201</td><td>13</td><td>4</td><td>8.97</td></tr><tr><td>5-2-2</td><td>296</td><td>322</td><td>26</td><td>0</td><td>14.63</td><td>6-2-2</td><td>184</td><td>212</td><td>26</td><td>2</td><td>18.20</td></tr><tr><td>5-2-5</td><td>296</td><td>357</td><td>45</td><td>16</td><td>6.18</td><td>6-2-5</td><td>184</td><td>249</td><td>65</td><td>0</td><td>25.80</td></tr><tr><td>7-1-1</td><td>224</td><td>237</td><td>13</td><td>0</td><td>36.10</td><td>8-1-1</td><td>180</td><td>203</td><td>11</td><td>12</td><td>21.56</td></tr><tr><td>7-1-2</td><td>224</td><td>250</td><td>18</td><td>8</td><td>30.10</td><td>8-1-2</td><td>180</td><td>212</td><td>26</td><td>6</td><td>49.25</td></tr><tr><td>7-1-5</td><td>224</td><td>275</td><td>35</td><td>16</td><td>16.21</td><td>8-1-5</td><td>180</td><td>245</td><td>65</td><td>0</td><td>108.47</td></tr><tr><td>7-2-1</td><td>448</td><td>475</td><td>23</td><td>4</td><td>*</td><td>8-2-1</td><td>360</td><td>407</td><td>21</td><td>26</td><td>*</td></tr><tr><td>7-2-2</td><td>448</td><td>498</td><td>34</td><td>16</td><td>*</td><td>8-2-2</td><td>360</td><td>424</td><td>46</td><td>18</td><td>*</td></tr><tr><td>7-2-5</td><td>448</td><td>545</td><td>65</td><td>32</td><td>*</td><td>8-2-5</td><td>360</td><td>487</td><td>115</td><td>12</td><td>*</td></tr><tr><td>9-1-1</td><td>192</td><td>199</td><td>7</td><td>0</td><td>0.01</td><td>10-1-1</td><td>128</td><td>137</td><td>7</td><td>2</td><td>0.00</td></tr><tr><td>9-1-2</td><td>192</td><td>206</td><td>14</td><td>0</td><td>0.01</td><td>10-1-2</td><td>128</td><td>142</td><td>14</td><td>0</td><td>0.01</td></tr><tr><td>9-1-5</td><td>192</td><td>223</td><td>15</td><td>16</td><td>0.01</td><td>10-1-5</td><td>128</td><td>163</td><td>35</td><td>0</td><td>0.01</td></tr><tr><td>9-2-1</td><td>384</td><td>397</td><td>13</td><td>0</td><td>0.02</td><td>10-2-1</td><td>256</td><td>273</td><td>13</td><td>4</td><td>0.01</td></tr><tr><td>9-2-2</td><td>384</td><td>410</td><td>26</td><td>0</td><td>0.02</td><td>10-2-2</td><td>256</td><td>282</td><td>26</td><td>0</td><td>0.01</td></tr><tr><td>9-2-5</td><td>384</td><td>441</td><td>25</td><td>32</td><td>0.02</td><td>10-2-5</td><td>256</td><td>321</td><td>65</td><td>0</td><td>0.01</td></tr></tbody></table>
to test some instances with more successors, as there may be other application
of this problem with a different structure.

It is not obvious that running instances with two pigs in each cell is needed, as we expect the same pattern of movements between cells and waiting for the robot to be repeated, but we wanted to see how much harder the instances become with two pigs. In addition, it may be beneficial to use different cutting patterns to get more flexibility for how the carcasses are utilized, and thus the ordering and duration of tasks may change from one pig to the next, and between cells.

From Table 3, we also see that the time spent moving and waiting varies with different move times and different task durations. For the odd numbered instances with long operator tasks and short robot tasks (the left half of Table 3), waiting occurs when moving takes more time than waiting for the robot task to complete, and this never happens with short move times. For the even numbered instances with short operator tasks and long robot tasks (the right half of Table 3), waiting may occur also with short move times, as it may happen that waiting is needed when the operator comes back after working in the other cell, because the robot may still be working and thus forces the operator to wait.

## 5 Conclusions

We have described and solved a scheduling problem in cell-based slaughtering and rough-cutting of pigs, based on a new concept which is currently being tested in a research project. Using standard software to solve a traditional mathematical model is not feasible, so we have developed a simple heuristic to solve the problem. Computational testing shows that this method gives good results in very short time for realistically sized problem instances.

## Acknowledgements

This work is funded by the Norwegian Research Council, grant 256266.

## References

1. Jbs bordertown plant (2013), http://www.jbssa.com.au/ourfacilities/processingfacilities/Bordertown/default.aspx, accessed 3. Jan 2019

2. F-line marel meat (2019), https://marel.com/meat-processing/systems-and-equipment/slaughter-robotization/pig-slaughter-line-robotization/f-line/1763, accessed 3. Jan 2019

3. Nortura (2019), http://www.nortura.no/, accessed 3. Jan 2019

4. Akkerman, R., Donk, D.P.V.: Analyzing scheduling in the food-processing industry: structure and tasks. Cognition Technology and Work 11(3), 215–226 (Sep 2009)

5. Nahmias, S.: Production and Operations Analysis. McGraw-Hill, 6 edn. (2009)