Mostrar cómo funciona un sistema difuso para controlar un ventilador según la temperatura ambiente.
##
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
| Temperatura…C. | Frío | Templado | Caliente | Salida.estimada…. |
|---|---|---|---|---|
| 10 | 1.0 | 0.0 | 0.00 | 25.0 |
| 11 | 0.9 | 0.1 | 0.00 | 27.5 |
| 12 | 0.8 | 0.2 | 0.00 | 30.0 |
| 13 | 0.7 | 0.3 | 0.00 | 32.5 |
| 14 | 0.6 | 0.4 | 0.00 | 35.0 |
| 15 | 0.5 | 0.5 | 0.00 | 37.5 |
| 16 | 0.4 | 0.6 | 0.00 | 40.0 |
| 17 | 0.3 | 0.7 | 0.00 | 42.5 |
| 18 | 0.2 | 0.8 | 0.00 | 45.0 |
| 19 | 0.1 | 0.9 | 0.00 | 47.5 |
| 20 | 0.0 | 1.0 | 0.00 | 50.0 |
| 21 | 0.0 | 0.9 | 0.00 | 45.0 |
| 22 | 0.0 | 0.8 | 0.00 | 40.0 |
| 23 | 0.0 | 0.7 | 0.00 | 35.0 |
| 24 | 0.0 | 0.6 | 0.00 | 30.0 |
| 25 | 0.0 | 0.5 | 0.00 | 25.0 |
| 26 | 0.0 | 0.4 | 0.07 | 25.3 |
| 27 | 0.0 | 0.3 | 0.13 | 25.7 |
| 28 | 0.0 | 0.2 | 0.20 | 26.0 |
| 29 | 0.0 | 0.1 | 0.27 | 26.3 |
| 30 | 0.0 | 0.0 | 0.33 | 26.7 |
| 31 | 0.0 | 0.0 | 0.40 | 32.0 |
| 32 | 0.0 | 0.0 | 0.47 | 37.3 |
| 33 | 0.0 | 0.0 | 0.53 | 42.7 |
| 34 | 0.0 | 0.0 | 0.60 | 48.0 |
| 35 | 0.0 | 0.0 | 0.67 | 53.3 |
| 36 | 0.0 | 0.0 | 0.73 | 58.7 |
| 37 | 0.0 | 0.0 | 0.80 | 64.0 |
| 38 | 0.0 | 0.0 | 0.87 | 69.3 |
| 39 | 0.0 | 0.0 | 0.93 | 74.7 |
| 40 | 0.0 | 0.0 | 1.00 | 80.0 |
library(plotly)
## Cargando paquete requerido: ggplot2
##
## Adjuntando el paquete: 'plotly'
## The following object is masked from 'package:ggplot2':
##
## last_plot
## The following object is masked from 'package:stats':
##
## filter
## The following object is masked from 'package:graphics':
##
## layout
df <- data.frame(
temperatura = temps,
Frio = f,
Templado = m,
Caliente = c,
salida = salida
)
df_long <- df %>%
pivot_longer(cols = c("Frio", "Templado", "Caliente"),
names_to = "Etiqueta", values_to = "Grado") %>%
mutate(Etiqueta = factor(Etiqueta, levels = c("Frio", "Templado", "Caliente")),
y = as.numeric(Etiqueta) - 1)
plot_ly() %>%
add_trace(data = df_long,
x = ~temperatura, y = ~y, z = ~Grado, color = ~Etiqueta,
type = "scatter3d", mode = "lines", line = list(width = 6)) %>%
add_trace(data = df,
x = ~temperatura, y = rep(3, length(temps)), z = ~salida / 100,
type = "scatter3d", mode = "lines",
name = "Salida del ventilador",
line = list(color = "black", width = 5, dash = "dot")) %>%
layout(
title = "Sistema Difuso: Visualización 3D",
scene = list(
xaxis = list(title = "Temperatura (°C)"),
yaxis = list(title = "Etiqueta / Salida", tickvals = 0:3,
ticktext = c("Frío", "Templado", "Caliente", "Salida")),
zaxis = list(title = "Grado de pertenencia / Activación (%)")
)
)