1 Technical Appendix

Clear environment and load libraries

# Clear environment of variables and functions
rm(list = ls(all = TRUE)) 

# Clear environmet of packages
if(is.null(sessionInfo()$otherPkgs) == FALSE)lapply(paste("package:", names(sessionInfo()$otherPkgs), sep=""), detach, character.only = TRUE, unload = TRUE)
# Load lpSolve package to demonstrate simple LP
library(lpSolve)
library(lpSolveAPI)
library(tidyverse)
## ── Attaching packages ──────────────────────────────────────────────────────────────────────────────────────────────────────── tidyverse 1.2.1 ──
## ✔ ggplot2 3.2.1     ✔ purrr   0.3.2
## ✔ tibble  2.1.3     ✔ dplyr   0.8.3
## ✔ tidyr   1.0.0     ✔ stringr 1.4.0
## ✔ readr   1.3.1     ✔ forcats 0.4.0
## ── Conflicts ─────────────────────────────────────────────────────────────────────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
`%>%` <- magrittr::`%>%`
library(knitr)
library(kableExtra)
## 
## Attaching package: 'kableExtra'
## The following object is masked from 'package:dplyr':
## 
##     group_rows
library(nloptr)
library(patchwork)
library(queueing)
#import data
df <- read.csv(file = 'Data.csv')
head(df)
##     Artist            Piece
## 1 Nicholas       Perfection
## 2 Nicholas           Burden
## 3 Nicholas        Emergence
## 4     Rita           Beyond
## 5     Rita Who Has Control?
## 6     Rita    Domestication
##                                                   Description.of.Piece
## 1                              A wire mesh sculpture of the human body
## 2                                      A wire mesh sculpture of a mule
## 3                                       A wire mesh sculpture of a man
## 4                              A series of computer-generated drawings
## 5 A computer-generated drawing intermeshed with lines of computer code
## 6                                     A pen-and-ink drawing of a house
##   Gender  Price Painting       Medium.Style
## 1      M 300000        N          Wire Mesh
## 2      M 250000        N          Wire Mesh
## 3      M 125000        N          Wire Mesh
## 4      F 400000        N Computer-generated
## 5      F 500000        N Computer-generated
## 6      F 400000        N            Drawing

1.1 4 - Basis of comparison by evaluating the status quo

To provide a basis of comparison for Seymore, begin by evaluating the status quo. Determine the expected amount of in-process steady state inventory at the presses and at the inspection station. Then calculate the expected total cost per hour when considering all of the following: the cost of the in-process inventory, the cost of running the presses, and the cost of the inspector.

1.1.1 Set up problem

In-process Inventory: Posters -> Press -> Print -> Inspection Station

Press

  • 10 presses

  • Arrival rate: mean 7/hr

  • Each poster takes and exponential distribution 1/hr to complete

Inspection Station

  • 1 inspector

  • Arrival rate: mean 7/hr

  • Each print takes 8/hr to complete

Cost

  • $8/hr for each poster sheet at the presses or each print at the inspection station

  • Cost of the power for running each press $7/hr

  • Cost of inspector $17/hr

1.1.2 Presses

# Set up problem with initial criteria
lam = 7 # The poster sheets arrive randomly to the group of presses at a mean rate of 7 per hour 
mu = 1  #The time required to make a print has an exponential distribution with a mean of 1 hour
n <- 15 

# Minimum number of servers so queue not grow to infinity, ceiling rounds up to next integer
int <- ceiling(lam/mu) +1

# cost of in-process inventory is estimated to be $8 per hour for each poster sheet at the presses or each print at the inspection station
cost <- 8 

# cost of the power for running each press $7.00
p <- 7 

# Build a table of results
prob4_p <- as.data.frame(matrix(0, n+1-int, 9))
# Loop to build table of results
for (s in int:n){

  # Using "queueing" package
  sm_c <- NewInput.MMC(lambda = lam, mu = mu, c = s, n = n)
  smc <- QueueingModel.i_MMC(sm_c)

  #Cost in-process inventory in queue
  cpq <- smc$Lq * cost
  
  #Cost in-process inventory
  cp <- smc$L * cost
  
  #cost of running the presses
  sp <- s*p

  # Total cost
  tc <- cp + sp
  
  # Place results as a row in a table
  # Multiply wait by 60 minutes in an hour to convert time from hours to minutes
  prob4_p[s+1-int,] <- round(c(s, smc$L, smc$Lq, smc$W*60, smc$Wq*60, cpq, cp, sp, tc), 2) 
}
# Add column names
colnames(prob4_p) <- c("Servers", "L", "Lq", "W (mins)", "Wq (mins)", "Cost in-process inventory in q", "Cost in-process inventory", "Cost of Servers","Total Cost")

# Show results, note that L, Lq, W, Wq remain constant
prob4_p %>% 
  kable() %>%
  kable_styling(bootstrap_options = c("striped", "bordered"))
Servers L Lq W (mins) Wq (mins) Cost in-process inventory in q Cost in-process inventory Cost of Servers Total Cost
8 11.45 4.45 98.12 38.12 35.58 91.58 56 147.58
9 8.35 1.35 71.55 11.55 10.78 66.78 63 129.78
10 7.52 0.52 64.43 4.43 4.14 60.14 70 130.14
11 7.21 0.21 61.82 1.82 1.70 57.70 77 134.70
12 7.09 0.09 60.75 0.75 0.70 56.70 84 140.70
13 7.04 0.04 60.31 0.31 0.29 56.29 91 147.29
14 7.01 0.01 60.12 0.12 0.11 56.11 98 154.11
15 7.01 0.01 60.05 0.05 0.04 56.04 105 161.04

1.1.3 Inspection Station

# Set up problem with initial criteria and 10 customers
lam = 7 # The poster sheets arrive randomly to the group of presses at a mean rate of 7 per hour 
mu = 8  #Each inspection takes him 7.5 minutes, so he can insepct 8 prints a hour 
n <- 3

# Minimum number of servers so queue not grow to infinity, ceiling rounds up to next integer
int <- ceiling(lam/mu)

# cost of in-process inventory is estimated to be $8 per hour for each poster sheet at the presses or each print at the inspection station
cost <- 8 

# cost of inspector
p <- 17

# Build a table of results
prob4_i <- as.data.frame(matrix(0, n+1-int, 9))
# Loop to build table of results
for (s in int:n){

  # Using "queueing" package
  sm_c <- NewInput.MMC(lambda = lam, mu = mu, c = s, n = n)
  smc <- QueueingModel.i_MMC(sm_c)

  #Cost in-process inventory in queue
  cpq <- smc$Lq * cost
  
  #Cost in-process inventory
  cp <- smc$L * cost
  
  #cost of inspector
  sp <- s*p

  # Total cost
  tc <- cp + sp
  
  # Place results as a row in a table
  # Multiply wait by 60 minutes in an hour to convert time from hours to minutes
  prob4_i[s+1-int,] <- round(c(s, smc$L, smc$Lq, smc$W*60, smc$Wq*60, cpq, cp, sp, tc), 2) 
}
# Add column names
colnames(prob4_i) <- c("Servers", "L", "Lq", "W (mins)", "Wq (mins)", "Cost in-process inventory in q", "Cost in-process inventory", "Cost of Servers","Total Cost")

# Show results, note that L, Lq, W, Wq remain constant
prob4_i %>% 
  kable() %>%
  kable_styling(bootstrap_options = c("striped", "bordered"))
Servers L Lq W (mins) Wq (mins) Cost in-process inventory in q Cost in-process inventory Cost of Servers Total Cost
1 7.00 6.12 60.00 52.50 49.00 56.00 17 73.00
2 1.08 0.21 9.28 1.78 1.66 8.66 34 42.66
3 0.90 0.03 7.73 0.23 0.21 7.21 51 58.21

1.1.4 Result

prob4 <- as.data.frame(rbind(prob4_p[3,], prob4_i[1,]))

colnames(prob4) <- c("Presses/ Inspector", "L", "Lq", "W (mins)", "Wq (mins)", "Cost in-process inventory in q", "Cost in-process inventory", "Cost of Presses/ Inspector","Total Cost ($/hr)")

prob4 <- rbind(prob4, c(colSums(prob4[,1:9])))
rownames(prob4) <- c("Printing Presses", "Inspection Station","Total")

prob4 %>% 
  kable(caption = "Table 1: Total cost for status quo is $203.14 per hour") %>%
  kable_styling(bootstrap_options = c("striped", "bordered")) %>%
  column_spec(ncol(prob4)+1, bold = T, color = "white", background = "green") %>%
row_spec(3, bold = T) 

Table 1: Total cost for status quo is \(203.14 per hour</caption> <thead> <tr> <th style="text-align:left;"> </th> <th style="text-align:right;"> Presses/ Inspector </th> <th style="text-align:right;"> L </th> <th style="text-align:right;"> Lq </th> <th style="text-align:right;"> W (mins) </th> <th style="text-align:right;"> Wq (mins) </th> <th style="text-align:right;"> Cost in-process inventory in q </th> <th style="text-align:right;"> Cost in-process inventory </th> <th style="text-align:right;"> Cost of Presses/ Inspector </th> <th style="text-align:right;"> Total Cost (\)/hr)

Printing Presses 10 7.52 0.52 64.43 4.43 4.14 60.14 70 130.14
Inspection Station 1 7.00 6.12 60.00 52.50 49.00 56.00 17 73.00
Total 11 14.52 6.64 124.43 56.93 53.14 116.14 87 203.14
  • The total cost for 10 presses is $130.14 per hour, and the total cost for 1 inspector is $73.00 per hour.

  • The expected total cost of in-process steady state inventory at the presses and at the inspection station is $203.14 per hour.

1.2 5 - The effect of proposal 4

What would be the effect of proposal 4? Why? Make specific comparisons to the results from part 4 above. Explain this outcome to Seymore, who does NOT understand technical terms from queueing theory.

1.2.1 Increasing print time

# Set up problem with initial criteria and 10 customers
lam = 7 # The poster sheets arrive randomly to the group of presses at a mean rate of 7 per hour 
mu = 1/1.2  #The time required to make a print has an exponential distribution with a mean of 1.2 hour
n <- 15 

# Minimum number of servers so queue not grow to infinity, ceiling rounds up to next integer
int <- ceiling(lam/mu) 

# cost of in-process inventory is estimated to be $8 per hour for each poster sheet at the presses or each print at the inspection station
cost <- 8 

# cost of the power for running each press changge to $6.5
p <- 6.5

# Build a table of results
prob5_asc <- as.data.frame(matrix(0, n+1-int, 9))
# Loop to build table of results
for (s in int:n){

  # Using "queueing" package
  sm_c <- NewInput.MMC(lambda = lam, mu = mu, c = s, n = n)
  smc <- QueueingModel.i_MMC(sm_c)

  #Cost in-process inventory in queue
  cpq <- smc$Lq * cost
  
  #Cost in-process inventory
  cp <- smc$L * cost
  
  #cost of running the presses
  sp <- s*p

  # Total cost
  tc <- cp + sp
  
  # Place results as a row in a table
  # Multiply wait by 60 minutes in an hour to convert time from hours to minutes
  prob5_asc[s+1-int,] <- round(c(s, smc$L, smc$Lq, smc$W*60, smc$Wq*60, cpq, cp, sp, tc), 2) 
}
# Add column names
colnames(prob5_asc) <- c("Presses", "L", "Lq", "W (mins)", "Wq (mins)", "Cost in-process inventory in q", "Cost in-process inventory", "Cost of Presses","Total Cost")

# Show results, note that L, Lq, W, Wq remain constant
prob5_asc %>% 
  kable() %>%
  kable_styling(bootstrap_options = c("striped", "bordered"))
Presses L Lq W (mins) Wq (mins) Cost in-process inventory in q Cost in-process inventory Cost of Presses Total Cost
9 19.36 10.96 165.94 93.94 87.68 154.88 58.5 213.38
10 11.05 2.65 94.69 22.69 21.18 88.38 65.0 153.38
11 9.41 1.01 80.62 8.62 8.05 75.25 71.5 146.75
12 8.83 0.43 75.68 3.68 3.43 70.63 78.0 148.63
13 8.59 0.19 73.62 1.62 1.51 68.71 84.5 153.21
14 8.48 0.08 72.72 0.72 0.67 67.87 91.0 158.87
15 8.44 0.04 72.31 0.31 0.29 67.49 97.5 164.99

1.2.2 Decreasing print time

# Set up problem with initial criteria and 10 customers
lam = 7 # The poster sheets arrive randomly to the group of presses at a mean rate of 7 per hour 
mu = 1/0.8  #The time required to make a print has an exponential distribution with a mean of 0.8 hour
n <- 15 

# Minimum number of servers so queue not grow to infinity, ceiling rounds up to next integer
int <- ceiling(lam/mu) 

# cost of in-process inventory is estimated to be $8 per hour for each poster sheet at the presses or each print at the inspection station
cost <- 8 

# cost of the power for running each press changge to $7.5
p <- 7.5

# Build a table of results
prob5_desc <- as.data.frame(matrix(0, n+1-int, 9))
# Loop to build table of results
for (s in int:n){

  # Using "queueing" package
  sm_c <- NewInput.MMC(lambda = lam, mu = mu, c = s, n = n)
  smc <- QueueingModel.i_MMC(sm_c)

  #Cost in-process inventory in queue
  cpq <- smc$Lq * cost
  
  #Cost in-process inventory
  cp <- smc$L * cost
  
  #cost of running the presses
  sp <- s*p

  # Total cost
  tc <- cp + sp
  
  # Place results as a row in a table
  # Multiply wait by 60 minutes in an hour to convert time from hours to minutes
  prob5_desc[s+1-int,] <- round(c(s, smc$L, smc$Lq, smc$W*60, smc$Wq*60, cpq, cp, sp, tc), 2) 
}
# Add column names
colnames(prob5_desc) <- c("Presses", "L", "Lq", "W (mins)", "Wq (mins)", "Cost in-process inventory in q", "Cost in-process inventory", "Cost of Presses","Total Cost")

# Show results, note that L, Lq, W, Wq remain constant
prob5_desc %>% 
  kable() %>%
  kable_styling(bootstrap_options = c("striped", "bordered"))
Presses L Lq W (mins) Wq (mins) Cost in-process inventory in q Cost in-process inventory Cost of Presses Total Cost
6 17.12 11.52 146.73 98.73 92.15 136.95 45.0 181.95
7 7.54 1.94 64.66 16.66 15.55 60.35 52.5 112.85
8 6.23 0.63 53.41 5.41 5.05 49.85 60.0 109.85
9 5.83 0.23 50.00 2.00 1.87 46.67 67.5 114.17
10 5.69 0.09 48.76 0.76 0.71 45.51 75.0 120.51
11 5.63 0.03 48.28 0.28 0.26 45.06 82.5 127.56
12 5.61 0.01 48.10 0.10 0.10 44.90 90.0 134.90
13 5.60 0.00 48.04 0.04 0.03 44.83 97.5 142.33
14 5.60 0.00 48.01 0.01 0.01 44.81 105.0 149.81
15 5.60 0.00 48.00 0.00 0.00 44.80 112.5 157.30

1.2.3 Result

prob5 <- as.data.frame(rbind(prob5_asc[2,], prob5_desc[5,]))
prob5 <- as.data.frame(rbind(prob5, c(10,7.52,0.52, 64.43, 4.43,4.14,60.14,70,130.14)))

colnames(prob5) <- c("Presses", "L", "Lq", "W (mins)", "Wq (mins)", "Cost in-process inventory in q", "Cost in-process inventory", "Cost of Presses","Total Cost ($/hr)")

rownames(prob5) <- c("Increasing print time", "Decreasing print time","Status Quo")


prob5 %>% 
  kable(caption = "Table 2: Comparison of increasing and decreasing the print time") %>%
  kable_styling(bootstrap_options = c("striped", "bordered")) %>%
  column_spec(ncol(prob5)+1, bold = T, color = "white", background = "green") 
Table 2: Comparison of increasing and decreasing the print time
Presses L Lq W (mins) Wq (mins) Cost in-process inventory in q Cost in-process inventory Cost of Presses Total Cost ($/hr)
Increasing print time 10 11.05 2.65 94.69 22.69 21.18 88.38 65 153.38
Decreasing print time 10 5.69 0.09 48.76 0.76 0.71 45.51 75 120.51
Status Quo 10 7.52 0.52 64.43 4.43 4.14 60.14 70 130.14
  • Increasing print time will increase total cost by $23.24 per hour.

  • Decreasing print time will decraese total cost by $9.63 per hour.

1.3 6 - The effect of proposal 5

Determine the effect of proposal 5. Make specific comparisons to the results from part 4 above. Explain this outcome to Seymore, who still does NOT understand technical terms.

1.3.1 Set up the model

# Set up problem with initial criteria and 10 customers
lam = 7 # The poster sheets arrive randomly to the group of presses at a mean rate of 7 per hour 
mu = 60/7  #She is somewhat faster at 7 minutes per poster

n <- 3

# Minimum number of servers so queue not grow to infinity, ceiling rounds up to next integer
int <- ceiling(lam/mu)

# cost of in-process inventory is estimated to be $8 per hour for each poster sheet at the presses or each print at the inspection station
cost <- 8 

# cost of inspector increase
p <- 19

# Build a table of results
prob6 <- as.data.frame(matrix(0, n+1-int, 9))
# Loop to build table of results
for (s in int:n){

  # Using "queueing" package
  sm_c <- NewInput.MMC(lambda = lam, mu = mu, c = s, n = n)
  smc <- QueueingModel.i_MMC(sm_c)

  #Cost in-process inventory in queue
  cpq <- smc$Lq * cost
  
  #Cost in-process inventory
  cp <- smc$L * cost
  
  #cost of inspector
  sp <- s*p

  # Total cost
  tc <- cp + sp
  
  # Place results as a row in a table
  # Multiply wait by 60 minutes in an hour to convert time from hours to minutes
  prob6[s+1-int,] <- round(c(s, smc$L, smc$Lq, smc$W*60, smc$Wq*60, cpq, cp, sp, tc), 2) 
}
# Add column names
colnames(prob6) <- c("Inspetor", "L", "Lq", "W (mins)", "Wq (mins)", "Cost in-process inventory in q", "Cost in-process inventory", "Cost of Inspetor","Total Cost")

# Show results, note that L, Lq, W, Wq remain constant
prob6 %>% 
  kable() %>%
  kable_styling(bootstrap_options = c("striped", "bordered"))
Inspetor L Lq W (mins) Wq (mins) Cost in-process inventory in q Cost in-process inventory Cost of Inspetor Total Cost
1 4.45 3.64 38.18 31.18 29.10 35.64 19 54.64
2 0.98 0.16 8.40 1.40 1.31 7.84 38 45.84
3 0.84 0.02 7.18 0.18 0.16 6.70 57 63.70

1.3.2 Result

print(list(prob4_i[1,]))
## [[1]]
##   Servers L   Lq W (mins) Wq (mins) Cost in-process inventory in q
## 1       1 7 6.12       60      52.5                             49
##   Cost in-process inventory Cost of Servers Total Cost
## 1                        56              17         73
#combine with current one (prob4_i[1,])
prob6 <- as.data.frame(rbind(prob6[1,], c(1,7,6.12,60, 52.5,49,56,17,73)))

colnames(prob6) <- c("Inspector", "L", "Lq", "W (mins)", "Wq (mins)", "Cost in-process inventory in q", "Cost in-process inventory", "Cost of Inspector","Total Cost ($/hr)")

rownames(prob6) <- c("Experienced Inspector","Status Quo")

prob6 %>% 
  kable(caption = "Table 3: Comparision of Experienced Inspector and Status Quo") %>%
  kable_styling(bootstrap_options = c("striped", "bordered")) %>%
  column_spec(ncol(prob6)+1, bold = T, color = "white", background = "green") 
Table 3: Comparision of Experienced Inspector and Status Quo
Inspector L Lq W (mins) Wq (mins) Cost in-process inventory in q Cost in-process inventory Cost of Inspector Total Cost ($/hr)
Experienced Inspector 1 4.45 3.64 38.18 31.18 29.1 35.64 19 54.64
Status Quo 1 7.00 6.12 60.00 52.50 49.0 56.00 17 73.00
  • An experienced inspector with higher compensation, but faster in the inspectiing the print could reduce the total cost by $18.36 per hour.

1.4 7 - Recommendations for reducing the average level of in-process inventory

Make your recommendations for reducing the average level of in-process inventory at the inspection station and at the group of machines. Be specific in your recommendations, and support them with quantitative analysis like that done in part 4. Make specific comparisons to the results from parts 5 and 6, and cite the improvements that your recommendations would yield.

#prepare table for my recommendation
prob5_desc_t <- as.data.frame(t(prob5_desc))
prob4_i_t <- as.data.frame(t(prob4_i))
recom <- as.data.frame(cbind(prob5_desc_t[,3],prob4_i_t[,2])) 
recom$Total = rowSums(recom)
print(recom)
##       V1    V2  Total
## 1   8.00  2.00  10.00
## 2   6.23  1.08   7.31
## 3   0.63  0.21   0.84
## 4  53.41  9.28  62.69
## 5   5.41  1.78   7.19
## 6   5.05  1.66   6.71
## 7  49.85  8.66  58.51
## 8  60.00 34.00  94.00
## 9 109.85 42.66 152.51
#prepare table for current status
prob7 <- as.data.frame(rbind(prob4_p[3,],prob4_i[1,])) 
prob7 <- as.data.frame(t(prob7))
prob7$Total = rowSums(prob7)
print(prob7)
##                                     3     1  Total
## Servers                         10.00  1.00  11.00
## L                                7.52  7.00  14.52
## Lq                               0.52  6.12   6.64
## W (mins)                        64.43 60.00 124.43
## Wq (mins)                        4.43 52.50  56.93
## Cost in-process inventory in q   4.14 49.00  53.14
## Cost in-process inventory       60.14 56.00 116.14
## Cost of Servers                 70.00 17.00  87.00
## Total Cost                     130.14 73.00 203.14
#combine two tables
prob7 <- as.data.frame(cbind(prob7[,1:3],recom[1:3])) 

rownames(prob7) <- c("Servers", "L", "Lq", "W (mins)", "Wq (mins)", "Cost in-process inventory in q", "Cost in-process inventory", "Cost of Servers","Total Cost ($/hr)")

colnames(prob7) <- c("Printing Press","Inspection Station","Total","Printing Press","Inspection Station","Total")

prob7 %>% 
  kable(caption = "Table 4: Comparison of Status Quo and Improved Recommendation") %>%
  kable_styling(bootstrap_options = c("striped", "bordered")) %>%
  row_spec(9, bold = T) %>%
  column_spec(4,color = "white", background = "green")%>%
  column_spec(7,color = "white", background = "green")%>%
  row_spec(1:8,color = "black", background = "white")%>%
  add_header_above(c(" ", "Status Quo" = 3, "Improved Recommendation" = 3))
Table 4: Comparison of Status Quo and Improved Recommendation
Status Quo
Improved Recommendation
Printing Press Inspection Station Total Printing Press Inspection Station Total
Servers 10.00 1.00 11.00 8.00 2.00 10.00
L 7.52 7.00 14.52 6.23 1.08 7.31
Lq 0.52 6.12 6.64 0.63 0.21 0.84
W (mins) 64.43 60.00 124.43 53.41 9.28 62.69
Wq (mins) 4.43 52.50 56.93 5.41 1.78 7.19
Cost in-process inventory in q 4.14 49.00 53.14 5.05 1.66 6.71
Cost in-process inventory 60.14 56.00 116.14 49.85 8.66 58.51
Cost of Servers 70.00 17.00 87.00 60.00 34.00 94.00
Total Cost ($/hr) 130.14 73.00 203.14 109.85 42.66 152.51
  • 8 presses with decreasing print time by 12 mins, and 2 inspectors can reduce the total cost $50.64 per hour.

  • The waiting time in the queue of the inspection station can be reduced to 1.78 minutes.

2 Memo

To: Seymore

From: Yun Tzu (Gloria) Chen

Date: 06/08/2020

RE: Analysis of two proposals to reduce the average level of in-process inventory


Dear Seymore,

Regarding the issue from the printing process, I’ve analyzed the two alternative proposals that you made and provided my recommended solution. In order to reduce the average level of in-process inventory, the two proposals are addressing to adjust the time required to make the print, and hire an experienced inspector to speed up the time on inspecting the print. However, the expected cost of these proposals will be changed accordingly. In the following, the detail of the comparisons of the status quo and the result of proposals are presented.

2.1 Status Quo Evaluation

Currently, the print shop has 10 presses and one inspector to process the printing. As table 1 shown, there are an average 7.52 of posters in a printing press (L) and an average 7 of prints in the inspection station (L). The average time waiting in the queue of the printing press is 4.43 minutes (Wq), the average time waiting in the queue of the inspection station is 52.5 minutes (Wq), and average 6.12 of prints are in the queue (Lq). Apparently, this is an issue that we need to fix to reduce the waiting time at the inspection station. As a result, the cost of processing in the printing press is $103.14 per hour, including the hourly cost of the power for running each press, and the cost of processing in the inspection station is $73 per hour, including the hourly compensation of an inspector. Overall, the expected total cost of this in-process inventory is estimated to be $203.14 per hour.

Table 1: Total cost for status quo is \(203.14 per hour</caption> <thead> <tr> <th style="text-align:left;"> </th> <th style="text-align:right;"> Presses/ Inspector </th> <th style="text-align:right;"> L </th> <th style="text-align:right;"> Lq </th> <th style="text-align:right;"> W (mins) </th> <th style="text-align:right;"> Wq (mins) </th> <th style="text-align:right;"> Cost in-process inventory in q </th> <th style="text-align:right;"> Cost in-process inventory </th> <th style="text-align:right;"> Cost of Presses/ Inspector </th> <th style="text-align:right;"> Total Cost (\)/hr)

Printing Presses 10 7.52 0.52 64.43 4.43 4.14 60.14 70 130.14
Inspection Station 1 7.00 6.12 60.00 52.50 49.00 56.00 17 73.00
Total 11 14.52 6.64 124.43 56.93 53.14 116.14 87 203.14

2.2 Proposal 4 - Increasing/ Decreasing Print Time

This proposal is addressing to adjust the time required to complete the prints. Increasing print time to 1.2 hours to make a print would reduce the cost of power running the press to $6.5, by contrast, decreasing print time would increase to 0.8 hours will increase the cost to $7.50 per hour. As table 2 shown, the expected cost for increasing print time at printing press would become $153.38 per hour, and the expected cost for decreasing print time at printing press would become $120.51 per hour. Comparing with the status quo, increasing print time would impact the time that poster waiting in the queue, even though the cost of the power for running each press decrease, this proposal still increase the cost by $23.24 per hour. However, decreasing print time could reduce the waiting time in queue, it, therefore, reduces cost by $9.63 per hour.

Table 2: Comparison of increasing and decreasing the print time
Presses L Lq W (mins) Wq (mins) Cost in-process inventory in q Cost in-process inventory Cost of Presses Total Cost ($/hr)
Increasing print time 10 11.05 2.65 94.69 22.69 21.18 88.38 65 153.38
Decreasing print time 10 5.69 0.09 48.76 0.76 0.71 45.51 75 120.51
Status Quo 10 7.52 0.52 64.43 4.43 4.14 60.14 70 130.14

2.3 Proposal 5 - Experienced Inspector

The second proposal is addressing to substitute a more experienced inspector for inspecting the prints. The experienced inspector can process faster at 7 minutes per poster. However, the experienced inspector costs $19 per hour instead of the current compensation of $17 per hour. In table 3, comparing with status quo, the result shows that the average time of waiting in the queue of the inspection station could be reduced to 31.18 minutes, and there are an average 3.64 of prints in the queue. The expected cost can be reduced by $18.36 per hour.

Table 3: Comparision of Experienced Inspector and Status Quo
Inspector L Lq W (mins) Wq (mins) Cost in-process inventory in q Cost in-process inventory Cost of Inspector Total Cost ($/hr)
Experienced Inspector 1 4.45 3.64 38.18 31.18 29.1 35.64 19 54.64
Status Quo 1 7.00 6.12 60.00 52.50 49.0 56.00 17 73.00

2.4 Recommendations

The improved recommendation is based on the most cost-effective solution. As Table 4 shown, the optimal solution shows that the print shop should have 8 presses, and decrease print time by 12 minutes, meaning the average time required to complete each poster is 0.8 hours. Moreover, we should hire one more inspector instead of hiring an experienced inspector. As a result, the waiting time in the queue of the inspection station can be reduced to 1.78 minutes, and less than one poster and print in the queue of the printing press and inspection station. The expected total cost of the recommendation is $152.51 per hour, which can help print shop save $50.63 per hour.

Table 4: Comparison of Status Quo and Improved Recommendation
Status Quo
Improved Recommendation
Printing Press Inspection Station Total Printing Press Inspection Station Total
Servers 10.00 1.00 11.00 8.00 2.00 10.00
L 7.52 7.00 14.52 6.23 1.08 7.31
Lq 0.52 6.12 6.64 0.63 0.21 0.84
W (mins) 64.43 60.00 124.43 53.41 9.28 62.69
Wq (mins) 4.43 52.50 56.93 5.41 1.78 7.19
Cost in-process inventory in q 4.14 49.00 53.14 5.05 1.66 6.71
Cost in-process inventory 60.14 56.00 116.14 49.85 8.66 58.51
Cost of Servers 70.00 17.00 87.00 60.00 34.00 94.00
Total Cost ($/hr) 130.14 73.00 203.14 109.85 42.66 152.51

Above are the analysis and the results based on two proposals. The recommended solution is also provided. I’d like to discuss further if anything is not clear or needs to be elaborated more. Please feel free to contact me through my email: . Thank you!

Best regards,

Gloria