Chapter 4 The transmission loss and use profiles
4.1 The 2019 transmission loss and use profile
A transmissions loss profile is calculated from the difference between the EGAT net electricity generation and the EGAT electricity sale profile (see equation (4.1))
\[\begin{equation} LSS_{i,t,h} = EGTNETGEN_{i,t,h} - EGTSLE_{i,t,h} \tag{4.1} \end{equation}\]
Where,
\(LSS_{i,t,h}\) denotes a transmission loss profile in region \(i\) in year \(t\) at time stamp \(h\) (MW).
\(EGTNETGEN_{i,t,h}\) denotes a EGAT net generation profile in region \(i\) in year \(t\) at time stamp \(h\) (MW) (see equation (3.5)).
\(EGTSLE_{i,t,h}\) denotes the electricity EGAT sale (\(EGTSLE\)) profile in year \(t\) at time stamp \(h\) (MW) (see equation (3.4)).
profile <-
profiledata$`egt_netgen_2019` %>%
mutate(egt_sle = profiledata$egtsle_2019$egt_sle,
tran_loss = egt_netgen - egt_sle) %>%
select(-egt_netgen, -egt_sle)
# Summary data ####
maxv <- ceiling(max(profile$tran_loss)) # Get a peak MW
minv <- floor(min(profile$tran_loss)) # Get a min MW
energy <- sum(profile$tran_loss)/2000 # Calculate the energy
peak_day <- profile %>% #Find a peak day
group_by(year) %>%
filter(tran_loss == max(tran_loss)) %>%
pull(datetime)
min_day <- profile %>% #Find a min day
group_by(year) %>%
filter(tran_loss == min(tran_loss)) %>%
last() %>%
pull(datetime)
load_factor <- percent((energy*10^3)/(maxv*8760),
accuracy = 0.01,
decimal.mark = ".")
summary <- tibble(peak_day = peak_day,
min_day = min_day,
peak_mw = maxv,
min_mw = minv,
energy_gwh = energy,
load_factor = load_factor) # combine all data in 1 table
peak_day | min_day | peak_mw | min_mw | energy_gwh | load_factor |
---|---|---|---|---|---|
2019-06-22 19:00:00 | 2019-01-26 12:00:00 | 1666 | -1017 | 3005.719 | 20.60% |
profile_plot <-
ggplot() +
geom_line(data=profile,
aes(x = datetime,
y = tran_loss,
group = month,
color = as.factor(month)),
show.legend = FALSE) +
ThemeLine +
labs(x = NULL,
y = "Transmission loss & use (MW)")+
scale_x_datetime(breaks=date_breaks("1 month"),
labels=date_format("%b %y")) +
scale_y_continuous(breaks = seq(round(minv,-3), round(maxv,-3)*1.2,200),
limits = c(round(minv,-3)*1.1, round(maxv, -3)*1.1)) +
scale_color_manual(values = linepalette1) +
geom_point(data=summary,
aes(x = peak_day, y = peak_mw))+
geom_hline(yintercept = 0) +
geom_text(data = summary,
aes(x = peak_day, y = round(maxv, -3)*1.05),
label = glue("Peak {maxv} MW \n@ {peak_day}"),
hjust = 0.5) +
geom_point(data=summary,
aes(x = min_day, y = min_mw))+
geom_text(data = summary,
aes(x = min_day, y = round(minv, -3)*0.8),
label = glue("Minimum {minv} MW \n@ {min_day}"),
hjust = 0,
vjust = 0)
# Save the output ####
outputfigure <- paste0(outfigdir, "tran_loss_2019.png")
ggsave(profile_plot, file = outputfigure, dpi = 150, width = 15, height = 5, units = "in", limitsize = FALSE)
profiledata <- c(profiledata, list("tran_loss_2019" = profile))
profilefigure <- c(profilefigure, list("tran_loss_2019" = profile_plot))
summarydata <- c(summarydata, list("sum_tran_loss_2019" = summary))
The 2019 transmission loss profile is illustrated in Figure 4.1.
###The 2019 MEA transmission loss and use profile
profile <-
profiledata$mea_requirement_2019 %>%
mutate(mea_egt_sle = profiledata$mea_egtsle_2019$MEA,
mea_tran_loss = MAC - mea_egt_sle) %>%
select(-MAC, -mea_egt_sle)
# Summary data ####
maxv <- ceiling(max(profile$mea_tran_loss)) # Get a peak MW
minv <- floor(min(profile$mea_tran_loss)) # Get a min MW
energy <- sum(profile$mea_tran_loss)/2000 # Calculate the energy
peak_day <- profile %>% #Find a peak day
group_by(year) %>%
filter(mea_tran_loss == max(mea_tran_loss)) %>%
pull(datetime)
min_day <- profile %>% #Find a min day
group_by(year) %>%
filter(mea_tran_loss == min(mea_tran_loss)) %>%
last() %>%
pull(datetime)
load_factor <- percent((energy*10^3)/(maxv*8760),
accuracy = 0.01,
decimal.mark = ".")
summary <- tibble(peak_day = peak_day,
min_day = min_day,
peak_mw = maxv,
min_mw = minv,
energy_gwh = energy,
load_factor = load_factor) # combine all data in 1 table
peak_day | min_day | peak_mw | min_mw | energy_gwh | load_factor |
---|---|---|---|---|---|
2019-12-19 08:30:00 | 2019-07-01 | 1633 | 75 | 9319.783 | 65.15% |
profile_plot <-
ggplot() +
geom_line(data=profile,
aes(x = datetime,
y = mea_tran_loss,
group = month,
color = as.factor(month)),
show.legend = FALSE) +
ThemeLine +
labs(x = NULL,
y = "MEA transmission loss & use (MW)")+
scale_x_datetime(breaks=date_breaks("1 month"),
labels=date_format("%b %y")) +
scale_y_continuous(breaks = seq(round(minv,-3), round(maxv,-3)*1.2,200),
limits = c(round(minv,-3)*1.1, round(maxv, -3))) +
scale_color_manual(values = linepalette1) +
geom_point(data=summary,
aes(x = peak_day, y = peak_mw))+
# geom_hline(yintercept = 0) +
geom_text(data = summary,
aes(x = peak_day, y = round(maxv, -3)),
label = glue("Peak {maxv} MW \n@ {peak_day}"),
hjust = 0.8,
vjust = 1) +
geom_point(data=summary,
aes(x = min_day, y = min_mw))+
geom_text(data = summary,
aes(x = min_day, y = round(minv, -3)*0.8),
label = glue("Minimum {minv} MW \n@ {min_day}"),
hjust = 0,
vjust = 0)
# Save the output ####
outputfigure <- paste0(outfigdir, "mea_tran_loss_2019.png")
ggsave(profile_plot, file = outputfigure, dpi = 150, width = 15, height = 5, units = "in", limitsize = FALSE)
profiledata <- c(profiledata, list("mea_tran_loss_2019" = profile))
profilefigure <- c(profilefigure, list("mea_tran_loss_2019" = profile_plot))
summarydata <- c(summarydata, list("sum_mea_tran_loss_2019" = summary))
The 2019 MEA transmission loss and use profile is illustrated in Figure 4.2.
4.1.1 The 2019 PEA-R1 (Central region) transmission loss and use profile
profile <-
profiledata$r1_central_requirement_2019 %>%
mutate(r1_egt_sle = profiledata$`r1+dcr1_egtsle_2019`$r1_egt_sle,
r1_tran_loss = CAC - r1_egt_sle) %>%
select(-CAC, -r1_egt_sle)
# Summary data ####
maxv <- ceiling(max(profile$r1_tran_loss)) # Get a peak MW
minv <- floor(min(profile$r1_tran_loss)) # Get a min MW
energy <- sum(profile$r1_tran_loss)/2000 # Calculate the energy
peak_day <- profile %>% #Find a peak day
group_by(year) %>%
filter(r1_tran_loss == max(r1_tran_loss)) %>%
pull(datetime)
min_day <- profile %>% #Find a min day
group_by(year) %>%
filter(r1_tran_loss == min(r1_tran_loss)) %>%
last() %>%
pull(datetime)
load_factor <- percent((energy*10^3)/(maxv*8760),
accuracy = 0.01,
decimal.mark = ".")
summary <- tibble(peak_day = peak_day,
min_day = min_day,
peak_mw = maxv,
min_mw = minv,
energy_gwh = energy,
load_factor = load_factor)
peak_day | min_day | peak_mw | min_mw | energy_gwh | load_factor |
---|---|---|---|---|---|
2019-06-30 17:30:00 | 2019-04-08 17:00:00 | 195 | -1827 | -9010.143 | -527.46% |
profile_plot <-
ggplot() +
geom_line(data=profile,
aes(x = datetime,
y = r1_tran_loss,
group = month,
color = as.factor(month)),
show.legend = FALSE) +
ThemeLine +
labs(x = NULL,
y = "PEA R1 (Central region) transmission\n loss & use (MW)")+
scale_x_datetime(breaks=date_breaks("1 month"),
labels=date_format("%b %y")) +
scale_y_continuous(breaks = seq(round(minv,-3), round(maxv,-2)*1.1,200),
limits = c(round(minv,-2)*1.1, round(maxv, -2)*2)) +
scale_color_manual(values = linepalette1) +
geom_point(data=summary,
aes(x = peak_day, y = peak_mw))+
geom_hline(yintercept = 0) +
geom_text(data = summary,
aes(x = peak_day, y = round(maxv, -2)*1.4),
label = glue("Peak {maxv} MW \n@ {peak_day}"),
hjust = -0.1,
vjust = 1) +
geom_point(data=summary,
aes(x = min_day, y = min_mw))+
geom_text(data = summary,
aes(x = min_day, y = round(minv, -3)*0.8),
label = glue("Minimum {minv} MW \n@ {min_day}"),
hjust = 0,
vjust = 1.9)
# Save the output ####
outputfigure <- paste0(outfigdir, "r1_tran_loss_2019.png")
ggsave(profile_plot, file = outputfigure, dpi = 150, width = 15, height = 5, units = "in", limitsize = FALSE)
profiledata <- c(profiledata, list("r1_tran_loss_2019" = profile))
profilefigure <- c(profilefigure, list("r1_tran_loss_2019" = profile_plot))
summarydata <- c(summarydata, list("sum_r1_tran_loss_2019" = summary))
The 2019 PEA R1 transmission loss and use profile is illustrated in Figure 4.3.
4.1.2 The 2019 PEA-R2 (North Eastern region) transmission loss and use profile
profile <-
profiledata$`r2&export_EDL_requirement_2019` %>%
mutate(r2_egt_sle = profiledata$`r2+dcr2_egtsle_2019`$r2_egt_sle,
r2_tran_loss = r2_edl - r2_egt_sle) %>%
select(-r2_edl, -r2_egt_sle)
# Summary data ####
maxv <- ceiling(max(profile$r2_tran_loss)) # Get a peak MW
minv <- floor(min(profile$r2_tran_loss)) # Get a min MW
energy <- sum(profile$r2_tran_loss)/2000 # Calculate the energy
peak_day <- profile %>% #Find a peak day
group_by(year) %>%
filter(r2_tran_loss == max(r2_tran_loss)) %>%
pull(datetime)
min_day <- profile %>% #Find a min day
group_by(year) %>%
filter(r2_tran_loss == min(r2_tran_loss)) %>%
last() %>%
pull(datetime)
load_factor <- percent((energy*10^3)/(maxv*8760),
accuracy = 0.01,
decimal.mark = ".")
summary <- tibble(peak_day = peak_day,
min_day = min_day,
peak_mw = maxv,
min_mw = minv,
energy_gwh = energy,
load_factor = load_factor) # combine all data in 1 table
peak_day | min_day | peak_mw | min_mw | energy_gwh | load_factor |
---|---|---|---|---|---|
2019-08-27 15:00:00 | 2019-04-22 23:00:00 | 737 | -394 | 1430.883 | 22.16% |
profile_plot <-
ggplot() +
geom_line(data=profile,
aes(x = datetime,
y = r2_tran_loss,
group = month,
color = as.factor(month)),
show.legend = FALSE) +
ThemeLine +
labs(x = NULL,
y = "PEA R2 (North Eastern region) transmission\n loss & use (MW)")+
scale_x_datetime(breaks=date_breaks("1 month"),
labels=date_format("%b %y")) +
scale_y_continuous(breaks = seq(round(minv,-2), round(maxv,-2)*1.3,200),
limits = c(round(minv,-2)*1.1, round(maxv, -2)*1.2)) +
scale_color_manual(values = linepalette1) +
geom_point(data=summary,
aes(x = peak_day, y = peak_mw))+
geom_hline(yintercept = 0) +
geom_text(data = summary,
aes(x = peak_day, y = round(maxv, -2)*1.2),
label = glue("Peak {maxv} MW \n@ {peak_day}"),
# hjust = 1,
vjust = 0.5) +
geom_point(data=summary,
aes(x = min_day, y = min_mw))+
geom_text(data = summary,
aes(x = min_day, y = round(minv, -3)*0.8),
label = glue("Minimum {minv} MW \n@ {min_day}"),
# hjust = 0,
vjust = 8.5)
# Save the output ####
outputfigure <- paste0(outfigdir, "r2_tran_loss_2019.png")
ggsave(profile_plot, file = outputfigure, dpi = 150, width = 15, height = 5, units = "in", limitsize = FALSE)
profiledata <- c(profiledata, list("r2_tran_loss_2019" = profile))
profilefigure <- c(profilefigure, list("r2_tran_loss_2019" = profile_plot))
summarydata <- c(summarydata, list("sum_r2_tran_loss_2019" = summary))
The 2019 PEA R2 transmission loss and use profile is illustrated in Figure 4.4.
4.1.3 The 2019 PEA-R3 (Southern region) transmission loss and use profile
profile <-
profiledata$`r3&export_TNB_requirement_2019`%>%
mutate(r3_egt_sle = profiledata$`r3+dcr3_egtsle_2019`$r3_egt_sle,
r3_tran_loss = r3_tnb - r3_egt_sle) %>%
select(-r3_tnb, -r3_egt_sle)
# Summary data ####
maxv <- ceiling(max(profile$r3_tran_loss)) # Get a peak MW
minv <- floor(min(profile$r3_tran_loss)) # Get a min MW
energy <- sum(profile$r3_tran_loss)/2000 # Calculate the energy
peak_day <- profile %>% #Find a peak day
group_by(year) %>%
filter(r3_tran_loss == max(r3_tran_loss)) %>%
pull(datetime)
min_day <- profile %>% #Find a min day
group_by(year) %>%
filter(r3_tran_loss == min(r3_tran_loss)) %>%
last() %>%
pull(datetime)
load_factor <- percent((energy*10^3)/(maxv*8760),
accuracy = 0.01,
decimal.mark = ".")
summary <- tibble(peak_day = peak_day,
min_day = min_day,
peak_mw = maxv,
min_mw = minv,
energy_gwh = energy,
load_factor = load_factor) # combine all data in 1 table
peak_day | min_day | peak_mw | min_mw | energy_gwh | load_factor |
---|---|---|---|---|---|
2019-10-05 13:08:00 | 2019-10-31 11:30:00 | 413 | -112 | 510.5072 | 14.11% |
profile_plot <-
ggplot() +
geom_line(data=profile,
aes(x = datetime,
y = r3_tran_loss,
group = month,
color = as.factor(month)),
show.legend = FALSE) +
ThemeLine +
labs(x = NULL,
y = "PEA R3 (Southern region) transmission\n loss & use (MW)")+
scale_x_datetime(breaks=date_breaks("1 month"),
labels=date_format("%b %y")) +
scale_y_continuous(breaks = seq(round(minv,-2), round(maxv,-2)*2,200),
limits = c(round(minv,-2)*2, round(maxv, -2)*1.4)) +
scale_color_manual(values = linepalette1) +
geom_point(data=summary,
aes(x = peak_day, y = peak_mw))+
geom_hline(yintercept = 0) +
geom_text(data = summary,
aes(x = peak_day, y = round(maxv, -2)*1.2),
label = glue("Peak {maxv} MW \n@ {peak_day}"),
# hjust = 1,
vjust = 0.5) +
geom_point(data=summary,
aes(x = min_day, y = min_mw))+
geom_text(data = summary,
aes(x = min_day, y = round(minv, -3)*0.8),
label = glue("Minimum {minv} MW \n@ {min_day}"),
# hjust = 0,
vjust = 5)
# Save the output ####
outputfigure <- paste0(outfigdir, "r3_tran_loss_2019.png")
ggsave(profile_plot, file = outputfigure, dpi = 150, width = 15, height = 5, units = "in", limitsize = FALSE)
profiledata <- c(profiledata, list("r3_tran_loss_2019" = profile))
profilefigure <- c(profilefigure, list("r3_tran_loss_2019" = profile_plot))
summarydata <- c(summarydata, list("sum_r3_tran_loss_2019" = summary))
The 2019 PEA R3 transmission loss and use profile is illustrated in Figure 4.5.
4.1.4 The 2019 PEA-R4 (Northern region) transmission loss and use profile
profile <-
profiledata$r4_northern_requirement_2019%>%
mutate(r4_egt_sle = profiledata$`r4+dcr4_egtsle_2019`$r4_egt_sle,
r4_tran_loss = NAC - r4_egt_sle) %>%
select(-NAC, -r4_egt_sle)
# Summary data ####
maxv <- ceiling(max(profile$r4_tran_loss)) # Get a peak MW
minv <- floor(min(profile$r4_tran_loss)) # Get a min MW
energy <- sum(profile$r4_tran_loss)/2000 # Calculate the energy
peak_day <- profile %>% #Find a peak day
group_by(year) %>%
filter(r4_tran_loss == max(r4_tran_loss)) %>%
pull(datetime)
min_day <- profile %>% #Find a min day
group_by(year) %>%
filter(r4_tran_loss == min(r4_tran_loss)) %>%
last() %>%
pull(datetime)
load_factor <- percent((energy*10^3)/(maxv*8760),
accuracy = 0.01,
decimal.mark = ".")
summary <- tibble(peak_day = peak_day,
min_day = min_day,
peak_mw = maxv,
min_mw = minv,
energy_gwh = energy,
load_factor = load_factor) # combine all data in 1 table
peak_day | min_day | peak_mw | min_mw | energy_gwh | load_factor |
---|---|---|---|---|---|
2019-10-04 12:30:00 | 2019-01-07 07:30:00 | 565 | -417 | 754.6889 | 15.25% |
profile_plot <-
ggplot() +
geom_line(data=profile,
aes(x = datetime,
y = r4_tran_loss,
group = month,
color = as.factor(month)),
show.legend = FALSE) +
ThemeLine +
labs(x = NULL,
y = "PEA R4 (Northern region) transmission\n loss & use (MW)")+
scale_x_datetime(breaks=date_breaks("1 month"),
labels=date_format("%b %y")) +
scale_y_continuous(breaks = seq(round(minv,-2), round(maxv,-2)*2,200),
limits = c(round(minv,-2)*1.2, round(maxv, -2)*1.3)) +
scale_color_manual(values = linepalette1) +
geom_point(data=summary,
aes(x = peak_day, y = peak_mw))+
geom_hline(yintercept = 0) +
geom_text(data = summary,
aes(x = peak_day, y = round(maxv, -2)*1.2),
label = glue("Peak {maxv} MW \n@ {peak_day}"),
# hjust = 1,
vjust = 3) +
geom_point(data=summary,
aes(x = min_day, y = min_mw))+
geom_text(data = summary,
aes(x = min_day, y = round(minv, -3)*0.8),
label = glue("Minimum {minv} MW \n@ {min_day}"),
# hjust = 0,
vjust = 9)
# Save the output ####
outputfigure <- paste0(outfigdir, "r4_tran_loss_2019.png")
ggsave(profile_plot, file = outputfigure, dpi = 150, width = 15, height = 5, units = "in", limitsize = FALSE)
profiledata <- c(profiledata, list("r4_tran_loss_2019" = profile))
profilefigure <- c(profilefigure, list("r4_tran_loss_2019" = profile_plot))
summarydata <- c(summarydata, list("sum_r4_tran_loss_2019" = summary))
The 2019 PEA R4 transmission loss and use profile is illustrated in Figure 4.6.