library(ggplot2)
urgencia <- seq(0, 10, by = 0.05)
# Funções de pertinência da saída
mu_mod <- pmax(0, pmin((urgencia - 3)/2, (8 - urgencia)/2, 1))
mu_alta <- pmax(0, pmin((urgencia - 6)/1.5, 1))
# Graus de ativação das regras
a_R1 <- 0.25; a_R2 <- 0.40
# Consequentes truncados
tronc_mod <- pmin(mu_mod, a_R1)
tronc_alta <- pmin(mu_alta, a_R2)
# Agregação: máximo ponto a ponto
agregado <- pmax(tronc_mod, tronc_alta)
# Original (sem truncamento): referência visual
original <- pmax(mu_mod, mu_alta)
df <- data.frame(
x = rep(urgencia, 3),
mu = c(tronc_mod, tronc_alta, agregado),#, original),
tipo = rep(c("R1 truncada (mod, \u03b1=0.25)",
"R2 truncada (alta, \u03b1=0.40)",
"Agregado (m\u00e1ximo)"),#,
#"Original (sem truncamento)"),
each = length(urgencia))
)
ggplot(df, aes(x = x, y = mu, color = tipo, linetype = tipo)) +
geom_line(linewidth = 1.1) +
scale_color_manual(values = c(
"Agregado (m\u00e1ximo)" = "#a8f77e",
#"Original (sem truncamento)" = "#c87ef7",
"R1 truncada (mod, \u03b1=0.25)" = "#7ecff7",
"R2 truncada (alta, \u03b1=0.40)" = "#f07050"
)) +
scale_linetype_manual(values = c(
"Agregado (m\u00e1ximo)" = "solid",
#"Original (sem truncamento)" = "dashed",
"R1 truncada (mod, \u03b1=0.25)" = "dashed",
"R2 truncada (alta, \u03b1=0.40)" = "dashed"
)) +
labs(title = "Agregação Mamdani — Função de Saída Combinada",
x = "Urgência (0–10)", y = "Grau de pertinência",
color = "", linetype = "") +
theme_minimal(base_size = 13) +
theme(legend.position = "bottom")