This report presents an analysis of production performance across
three production sites of Ahuja Radios:
- Sunwood
- Royal Industries
- Sigma Technologies
The goal is to evaluate productivity, utilization, and the impact of
recommended improvements.
The analysis is based on production data (monthly outputs, cycle times,
workforce, and utilization).
#
# Internship Project - Line Production Analysis
# Author: Rijul Bajaj
#
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.4.3
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.4.2
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(scales)
## Warning: package 'scales' was built under R version 4.4.3
# Monthly output and capacity
df<-data.frame(
site = c("Sunwood", "Royal Industries","Sigma Technologies"),
avg_monthly_output=c(9000,14000,13500), # units/month
monthly_capacity=c(15000,16000,15000), # capacity/month
shift_hours=c(200,220,210) # Total hours per month
)
df$units_per_hour<-df$avg_monthly_output/df$shift_hours
df$utilization_pct<-df$avg_monthly_output/df$monthly_capacity
print(df)
## site avg_monthly_output monthly_capacity shift_hours
## 1 Sunwood 9000 15000 200
## 2 Royal Industries 14000 16000 220
## 3 Sigma Technologies 13500 15000 210
## units_per_hour utilization_pct
## 1 45.00000 0.600
## 2 63.63636 0.875
## 3 64.28571 0.900
# Visual Representation
op<-par(mar=c(6,5,4,2)+0.1)
barplot(df$avg_monthly_output,
names.arg=df$site,
las=2, # vertical x labels
col="skyblue",
main="Monthly Output By Site",
ylab="Units Per Month")
bar_heights<-df$utilization_pct*100 # Bar Chart: Utilization % (actual/capacity)
bp<-barplot(bar_heights,
names.arg=df$site,
las=2,
col="lightgreen",
ylim=c(0,max(120,max(bar_heights)+10)),
main="Utilization By Site",
ylab="Utilization (%)")
text(x=bp,y=bar_heights+3,labels=paste0(round(bar_heights,1),"%"),cex=0.9)
# Scatterplot: Output VS Units per Hour
plot(df$units_per_hour,df$avg_monthly_output,
pch=19, col="black",
xlab="Units per Hour",
ylab="Monthly Output",
main="Output vs Productivity",
xlim = c(35,80))
text(df$units_per_hour,df$avg_monthly_output,labels=df$site, pos=4, cex=0.9)
# Bar Chart: Distribution of Productivity
barplot(df$units_per_hour,
names.arg = df$site,
col = "violet",
main = "Productivity (Units/Hour) by Site",
xlab = "Production Site",
ylab = "Units per Hour")
Based on production line observations and utilization levels, the following improvement assumptions were applied to simulate an after scenario:
These assumptions were used to project the after monthly output, productivity, and utilization figures presented in the following analysis.
# AFTER IMPROVEMENT SCENARIO
# Assumed improvements from recommendations (tune as needed)
# Sunwood: +20% (tracking + movers + staggered/rotating lines)
# Royal: +7% (live tracking + tighter QA discipline)
# Sigma: +5% (already efficient; small balancing + tracking)
improve_pct<-c(0.2,0.07,0.05)
output_after<-round(df$avg_monthly_output*(1+improve_pct)) # Computing After outputs
output_after<-pmin(output_after,df$monthly_capacity) # can't exceed capacity
units_per_hour_after<-output_after/df$shift_hours # Computing productivity and utilization AFTER
utilization_after_pct<-(output_after/df$monthly_capacity)*100
# BEFORE & AFTER Comparison table
comparison<-data.frame(
site=df$site,
output_before=df$avg_monthly_output,
output_after=output_after,
capacity=df$monthly_capacity,
hours_month=df$shift_hours,
units_per_hour_before=round(df$units_per_hour,2),
units_per_hour_after=round(units_per_hour_after,2),
utilization_pct_before=round(100*df$utilization_pct,1),
utilization_pct_after=round(utilization_after_pct,1)
)
cat("\n===BEFOR vs AFTER (from recommendations) ===\n")
##
## ===BEFOR vs AFTER (from recommendations) ===
print(comparison, row.names = FALSE)
## site output_before output_after capacity hours_month
## Sunwood 9000 10800 15000 200
## Royal Industries 14000 14980 16000 220
## Sigma Technologies 13500 14175 15000 210
## units_per_hour_before units_per_hour_after utilization_pct_before
## 45.00 54.00 60.0
## 63.64 68.09 87.5
## 64.29 67.50 90.0
## utilization_pct_after
## 72.0
## 93.6
## 94.5
# PLOTS: BEFORE vs AFTER
op2<-par(mar=c(8,5,4,2)+0.1)
mat_out<-rbind(df$avg_monthly_output,output_after)
bp1<-barplot(mat_out, # Grouped Bar: monthly output (Before vs After)
beside=TRUE,
names.arg = df$site,
las=2,
col=c("lightblue","steelblue"),
main="Monthly output by site (Before vs After)",
ylab="units (per month)",
ylim = c(0,16000))
legend("topleft",fill=c("lightblue","steelblue"),
legend = c("before","After"),bty = "n")
text(x=bp1,y=mat_out+300,labels=as.character(mat_out),cex=0.8)
# Grouped Bar: Utilization % (Before vs After)
mat_util<-rbind(100*df$utilization_pct,utilization_after_pct)
bp2<-barplot(mat_util,
beside=TRUE,
names.arg=df$site,
las=2,
col=c("palegreen3","darkgreen"),
ylim=c(0,max(120,max(mat_util)+10)),
main="Utilization by Site (Before vs After)",
ylab = "Utilization (%)")
legend("topleft",fill = c("palegreen3","darkgreen"),
legend = c("Before","After"),bty="n")
text(x=bp2,y=mat_util+3,labels = paste0(round(mat_util,1),"%"),cex = 0.8)
# Scatter: Output vs Units/Hour (Before vs After)
plot(df$units_per_hour,df$avg_monthly_output,
pch=19,col="tomato",
xlab="Units per Hour",
ylab = "Monthly Output",
main="Output vs Productivity (Before vs After)",
ylim = c(0,16000),
xlim = c(45,80))
text(df$units_per_hour,df$avg_monthly_output,labels=df$site,pos = 4,cex = 0.8, col="black")
points(units_per_hour_after,output_after,pch=17,col="royalblue")
text(units_per_hour_after,output_after,pch=17,col="black",labels=df$site,pos=4)
legend("bottomright",pch = c(19,17),col = c("tomato","royalblue"),
legend=c("Before","After"),bty="n")
par(op2)