Ejercicio 3

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 10

func.devuelve.

funcPertenencia <- function( tipo, arrDatos, a, c, b )

arr.pertenencia <- rep (0, length( arrDatos ) )

if( tipo == "triangular" )

arr.pertenencia[ arrDatos >= a & T <= c ] <- ( arrDatos [arrDatos >= a &
arrDatos <= c] - a ) / ( c - a )

arr.pertenencia[ arrDatos >= c & arrDatos <= b ] <- ( b - arrDatos[ arrDatos >= c
& arrDatos <= b ] ) / ( b - c )

} else {

if( tipo == "trapezoide" )

if( c < a )

arr.pertenencia[ arrDatos < c] <- 1

arr.pertenencia[ arrDatos >= c & arrDatos <= a ] <- ( a -


arrDatos[ arrDatos >= c & arrDatos <= a ] ) / ( a - c )

} else {

arr.pertenencia[ arrDatos <= a ] <- 0

arr.pertenencia[ arrDatos >= a & T <= c ] <- (( arrDatos[arrDatos


>= a & arrDatos <= c] - a ) / ( c - a ) )

arr.pertenencia[ arrDatos >= c ] <- 1

return(arr.pertenencia)

func.devuelve.funcPert <- function( tipo, arrDatos, a, c, b )

arr.pertenencia <- rep (0, length( arrDatos ) )

if( tipo == "triangular" )


{

arr.pertenencia[ arrDatos >= a & H <= c ] <- ( arrDatos [arrDatos >= a &
arrDatos <= c] - a ) / ( c - a )

arr.pertenencia[ arrDatos >= c & arrDatos <= b ] <- ( b - arrDatos[ arrDatos >= c
& arrDatos <= b ] ) / ( b - c )

} else {

if( tipo == "trapezoide" )

if( c < a )

arr.pertenencia[ arrDatos < c] <- 1

arr.pertenencia[ arrDatos >= c & arrDatos <= a ] <- ( a -


arrDatos[ arrDatos >= c & arrDatos <= a ] ) / ( a - c )

} else {

arr.pertenencia[ arrDatos <= a ] <- 0

arr.pertenencia[ arrDatos >= a & H <= c ] <- ((


arrDatos[arrDatos >= a & arrDatos <= c] - a ) / ( c - a ) )

arr.pertenencia[ arrDatos >= c ] <- 1

return(arr.pertenencia)

func.devuelve.funcPertenen <- function( tipo, arrDatos, a, c, b )

arr.pertenencia <- rep (0, length( arrDatos ) )

if( tipo == "triangular" )

arr.pertenencia[ arrDatos >= a & W <= c ] <- ( arrDatos [arrDatos >= a &
arrDatos <= c] - a ) / ( c - a )

arr.pertenencia[ arrDatos >= c & arrDatos <= b ] <- ( b - arrDatos[ arrDatos >= c
& arrDatos <= b ] ) / ( b - c )
} else {

if( tipo == "trapezoide" )

if( c < a )

arr.pertenencia[ arrDatos < c] <- 1

arr.pertenencia[ arrDatos >= c & arrDatos <= a ] <- ( a -


arrDatos[ arrDatos >= c & arrDatos <= a ] ) / ( a - c )

} else {

arr.pertenencia[ arrDatos <= a ] <- 0

arr.pertenencia[ arrDatos >= a & W <= c ] <- ((


arrDatos[arrDatos >= a & arrDatos <= c] - a ) / ( c - a ) )

arr.pertenencia[ arrDatos >= c ] <- 1

return(arr.pertenencia)

}
r = data.frame(40,50,60,70,80,90,100,110,120)

T <- seq(40, 120, by=0.1)

Talta <- func.devuelve.funcPertenencia("trapezoide", T, 80, 100)

Tmedia <- func.devuelve.funcPertenencia("triangular", T, 60, 80, 100)

Tbaja <- func.devuelve.funcPertenencia("trapezoide", T, 80, 60)

plot(T, Tbaja, col="grey", xlab="r", ylab="y", main="Temperatura")

points(T, Tmedia, col="purple")

points(T, Talta, col="blue")


H <- seq(0, 100, by=0.1)

Hbaja <- func.devuelve.funcPert("trapezoide", H, 50, 22)

Hmedia <- func.devuelve.funcPert("triangular", H, 22, 50, 76)

Halta <- func.devuelve.funcPert("trapezoide", H, 50, 76)

plot(H, Hbaja, col="purple", xlab="x", ylab="y", main="Humedad")

points(H, Hmedia, col="grey")

points(H, Halta, col="blue")


W <- seq(0, 1000, by=1)

Wbaja <- func.devuelve.funcPertenen("trapezoide", W, 500, 240)

Wmedia <- func.devuelve.funcPertenen("triangular", W, 240, 500, 760)

Walta <- func.devuelve.funcPertenen("trapezoide", W, 760, 500)

Walta <- func.devuelve.funcPertenen("trapezoide", W, 500, 760)

plot(W, Wbaja, col="blue", xlab="x", ylab="y", main="Revoluciones")

points(W, Wmedia, col="purple")

points(W, Walta, col="grey")


Matriz1 <- c(Tbaja, Hbaja, Wbaja)

Matriz2 <- c(Tmedia, Hbaja, Wmedia)

Matriz3 <- c(Talta, Hbaja, Wmedia)

Matriz4 <- c(Tbaja, Hmedia, Wbaja)

Matriz5 <- c(Tmedia, Hmedia, Wmedia)

Matriz6 <- c(Talta, Hmedia, Walta)

Matriz7 <- c(Tbaja, Halta, Wmedia)

Matriz8 <- c(Tmedia, Halta, Wmedia)

Matriz9 <- c(Talta, Halta, Walta)

todas.columnas <- rbind(Matriz1, Matriz2, Matriz3, Matriz4, Matriz5, Matriz6, Matriz7,


Matriz8, Matriz9)

orden.T <- order(abs(T-60))

orden.H <- order(abs(H-40))

columna.T <- orden.T[1]

columna.H <- orden.H[1]

columna.H <- columna.H + length(T)

columna.W <- length(H) + length(T) + length(W)

w.principio <- length(H) + length(T) +1

w.final <- length(H) + length(T) + length(W)

tabla.T.60 <- todas.columnas[,columna.T]

tabla.H.40 <- todas.columnas[, columna.H]

tabla.T.H.W <- todas.columnas[, w.principio:w.final]

tabla.final <- tabla.T.60 * tabla.H.40 * tabla.T.H.W

tabla.prima <- apply(tabla.final, MARGIN=2, FUN='max')


plot(W, tabla.prima, col="orange", xlab="x", ylab="y", main="Funcion de pertenencia")
indice.T <- seq( from=40, to=120, by=1 )

indice.H <- seq( from=0, to=100, by=1 )

W.principio <- length(H)+ length(T) + 1

W.final <- length(H) + length(T) + length(W)

tabla.H.W <- todas.columnas[,W.principio:W.final]

malla.T.H <- matrix( nrow=81, ncol=101 )

for(i in indice.T)

for(j in indice.H)

order.T <- order( abs( T-i ) )

order.H <- order( abs( H-j ) )

col.T <- order.T[1]

col.H <- order.H[1]

col.H <- col.H + length(T)

tabla.H.T.indiceT <- todas.columnas[,col.T]

tabla.H.H.indiceH <- todas.columnas[, col.H]

tabla.H.Producto <- tabla.H.T.indiceT * tabla.H.H.indiceH * tabla.H.W

tabla.H.Producto.prima <- apply( tabla.H.Producto , MARGIN=2, FUN='max')

malla.T.H[i-40, j] <- sum(W*tabla.H.Producto.prima*1)/sum(tabla.H.Producto.prima*1)

}
persp(indice.T, indice.H ,malla.T.H, col="green")

También podría gustarte