Está en la página 1de 11

UNIVERSIDAD ESTATAL DE MILAGRO

Ingeniería en Software
7mo Semestre
Inteligencia Artificial

Tema:
Lógica Difusa

Alumno:
Allan Javier Coloma Orrala

Docente:
Ing. Jonny Ortiz

Fecha de entrega:
19/agosto/2021
Taller N. 3

Modelo para el ajuste de pronósticos agregados utilizando lógica difusa

Realice lo siguiente:

• Describa el problema que plantea el autor


Para una empresa es de suma importancia llevar un uso óptimo de sus
recursos para así poder satisfacer las necesidades de sus clientes
teniendo siempre disponibles sus productos o servicios.
Dichas necesidades se determinan mediante una Proyección de la
demanda la cual se realiza mediante una recolección de información
histórica de demandas que a tenido la empresa para así poder realizar un
pronostico de la demanda futura, el cual se puede realizar mediante
Regresión Lineal u otro método de series de tiempo.
Las variables que no se calculan usando estos métodos son los factores
que afectan la demanda en el mercado las cuales son: inflación, poder
adquisitivo, paridad de la moneda local con las monedas extranjeras, tasa
de crecimiento económico, nivel de ingresos de los clientes, turbulencia
política demanda total, época del año, satisfacción de los clientes, tasa de
empleo, entre otras

• Cuáles son las variables de entrada y salida del sistema


Variables de entrada
➢ Temporada
Se define con tres conjuntos difusos:
▪ Temporada baja
▪ Temporada media
▪ Temporada alta
➢ Competencia
Se define con tres conjuntos difusos:
▪ Bajo
▪ Medio
▪ Alto

➢ Percepción
Se define con tres conjuntos difusos:
▪ Percepción mala
▪ Percepción regular
▪ Percepción buena

Variables de salida
➢ Ajuste del pronostico
Se define con tres conjuntos difusos:
▪ Disminuir
▪ Disminuir un poco
▪ Mantener
▪ Incrementar un poco
▪ Incrementar

• Cuáles son las funciones de pertenencia


Función triangular, trapezoidal, hombro derecho y hombro izquierdo

• Gráfica en Python de las funciones de entrada y salida


Funciones

import numpy as np
import matplotlib.pyplot as plt
#Funcion triangulo
def trimf(x, param):
a = float(param[0])
b = float(param[1])
c = float(param[2])
if (a <= b) and (b <= c):
if (type(x) is int) or (type(x) is float):
if x <= a:
m = 0.0
elif (a <= x) and (x <= b):
m = (x - a)/(b - a)
elif (b <= x) and (x <= c):
m = (c - x)/(c - b)
else:
m = 0.0
return m
else:
m = np.zeros(x.size)
for i in range(x.size):
if x[i] <= a:
m[i] = 0.0
elif (a <= x[i]) and (x[i] <= b):
m[i] = (x[i] - a)/(b - a)
elif (b <= x[i]) and (x[i] <= c):
m[i] = (c - x[i])/(c - b)
else:
m[i] = 0.0
return m
else:
return -1

#Funcion Trapezoidal
def trapmf(x, param):
a = float(param[0])
b = float(param[1])
c = float(param[2])
d = float(param[3])
if (a <= b) and (b <= c) and (c <= d):
if (type(x) is int) or (type(x) is float):
if x <= a:
m = 0.0
elif (a <= x) and (x <= b):
m = (x - a)/(b - a)
elif (b <= x) and (x <= c):
m = 1.0
elif (c <= x) and (x <= d):
m = (d - x)/(d - c)
else:
m = 0.0
return m
else:
m = np.zeros(x.size)
for i in range(x.size):
if x[i] <= a:
m[i] = 0.0
elif (a <= x[i]) and (x[i] <= b):
m[i] = (x[i] - a)/(b - a)
elif (b <= x[i]) and (x[i] <= c):
m[i] = 1.0
elif (c <= x[i]) and (x[i] <= d):
m[i] = (d - x[i])/(d - c)

else:
m[i] = 0.0
return m
else:
return -1

#Funcion hombro izquierdo


def h_iz(x, param):
a = float(param[0])
b = float(param[1])
if (a <= b) :
if (type(x) is int) or (type(x) is float):
if x <= a:
m = 0.0
elif (a <= x) and (x <= b):
m = (x - a)/(b - a)
else:
m = 1.0
return m
else:
m = np.zeros(x.size)
for i in range(x.size):
if x[i] <= a:
m[i] = 0.0
elif (a <= x[i]) and (x[i] <= b):
m[i] = (x[i] - a)/(b - a)
else:
m[i] = 1.0
return m
else:
return -1

#Funcion hombro derecho


def h_de(x, param):
a = float(param[0])
b = float(param[1])
if (a <= b) and (b <= c):
if (type(x) is int) or (type(x) is float):
if x <= a:
m = 1.0
elif (a <= x) and (x <= b):
m = (b-x)/(b-a)
else:
m = 0.0
return m
else:
m = np.zeros(x.size)
for i in range(x.size):
if x[i] <= a:
m[i] = 1.0
elif (a <= x[i]) and (x[i] <= b):
m[i] = (b-x[i])/(b-a)
else:
m[i] = 0.0
return m
else:
return -1

Variables de entrada
Temporada

x = np.linspace(0, 4, 1001, endpoint=True)


a, b = 1, 2
m1 = h_de(x, [a, b])
xtest = 7.5
a, b, c = 1, 2, 3
xtest = 2.
m2 = trimf(x, [a, b, c])
a, b = 2, 3
m3 = h_iz(x, [a, b])
xtest = 7.5
plt.figure(figsize=(10,7))
plt.title('Temporada')
plt.plot(x, m1, x, m2,x,m3)
plt.legend(['Baja', 'Media', 'Alta'])
plt.grid()
Percepción

x = np.linspace(0, 10, 1001, endpoint=True)


a, b = 4, 6
m1 = h_de(x, [a, b])
xtest = 7.5
a, b, c, d = 4, 6, 7, 9
m2 = trapmf(x, [a, b, c, d])
a, b = 7, 9
m3 = h_iz(x, [a, b])
xtest = 7.5
plt.title('Percepción')
plt.plot(x, m1, x, m2,x,m3)
plt.legend(['Mala', 'Regular', 'Buena'])
plt.grid()
Competencia

x = np.linspace(0, 4, 1001, endpoint=True)


a, b = 1, 2
m1 = h_de(x, [a, b])
xtest = 7.5
a, b, c = 1, 2, 3
xtest = 2.
m2 = trimf(x, [a, b, c])
a, b = 2, 3
m3 = h_iz(x, [a, b])
xtest = 7.5
plt.figure(figsize=(10,7))
plt.title('Competencia')
plt.plot(x, m1, x, m2,x,m3)
plt.legend(['Baja', 'Media', 'Alta'])
plt.grid()

Variable de salida
Ajuste de pronóstico

x = np.linspace(-30, 30, 1001, endpoint=True)


a, b = -30, -15
m1 = h_de(x, [a, b])
a, b, c, d = -30, -15, -6, -1.5
m2 = trapmf(x, [a, b, c, d])
a, b, c, d = -6, -1.5, 1.5, 6
m3 = trapmf(x, [a, b, c, d])
plt.figure(figsize=(20,7))
a, b, c, d = 1.5, 6, 15, 30
m4 = trapmf(x, [a, b, c, d])
a, b = 15, 30
m5 = h_iz(x, [a, b])
plt.title('Ajuste de Demanda')
plt.plot(x, m1, x, m2, x, m3, x, m4, x, m5)
plt.legend(['Disminuir', 'Disminuir un poco', 'Mantener', 'In
crementar un poco', 'Incrementar'])
plt.grid()

• Sistema proporcional o inverso

En base a la tabla presentada en el documento anexo se logra apreciar


que se trata de un sistema proporcional, ya que al aumentar las
variables de entrada ocurre un aumento en la variable de salida.
• Cómo describiría el conjunto de reglas

Las reglas difusas se las puede representar del siguiente modo:

▪ SI TEMPORADA = BAJA AND COMPETENCIA = BAJA AND


PERCEPCION = MALA THEN AJUSTE DE DEMANDA =
DISMINUIR UN POCO
▪ SI TEMPORADA = MEDIA AND COMPETENCIA = BAJA AND
PERCEPCION = MALA THEN AJUSTE DE DEMANDA =
MANTENER
▪ SI TEMPORADA = ALTA AND COMPETENCIA = BAJA AND
PERCEPCION = MALA THEN AJUSTE DE DEMANDA =
MANTENER

• Resultados del sistema difuso


Bibliografía
SICHA CHACÓN, E. G. (2017). PROYECCIÓN DE LA DEMANDA APLICANDO LA FÓRMULA DEL
MONTO EN LA EMPRESA INNOVACIONES CORONEL HASTA EL AÑO 2020. Obtenido de
http://repositorio.utmachala.edu.ec:
http://repositorio.utmachala.edu.ec/bitstream/48000/10078/1/ECUACE-2017-AE-
CD00145.pdf

También podría gustarte