Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Facultad
de
Ciencias y
Sistemas
(FCyS)
Ingeniería de Sistemas
Departamento de Informática
Inteligencia Artificial
Integrantes:
Docente:
Grupo:
4N1-IS
Managua, 24 de noviembre, 2022
2
ÍNDICE
INTRODUCCIÓN 5
OBJETIVOS 6
Objetivo General 6
Objetivos Específicos 6
JUSTIFICACIÓN 8
3
2.2.1.2 Diagrama de secuencia de la gestion de ventas 31
2.2.1.3 Diagrama de colaboracion de la gestion de ventas 31
4
4.9.5.4 Regresión polinomial de grado 5 79
4.9.5.5 Regresión polinomial de grado 6 79
4.9.6 Comparación de los modelos 79
CONCLUSIONES 80
RECOMENDACIONES 81
REFERENCIAS BIBLIOGRÁFICAS 82
ANEXOS 83
ANEXO 1. COCOMO y Viabilidad 83
Punto de Función 83
Cálculo del MF 83
Factores del COCOMO 83
Costo de fuerza de trabajo 84
Costo de utilización de los medios técnicos 85
Costo total del proyecto 85
Flujos de efectivo 85
Viabilidad 86
5
INTRODUCCIÓN
6
OBJETIVOS
Objetivo General
Objetivos Específicos
7
PLANTEAMIENTO DEL PROBLEMA
8
JUSTIFICACIÓN
Llevar un control de inventarios en una empresa ayuda a que las operaciones sean
flexibles y se puedan realizar compras o ajustes al mismo dependiendo de los
productos con mayor rotación. Por eso es que con este proyecto se pretende
encontrar una solución viable al problema por el que afronta Orbitech.
Por lo que, este proyecto es de suma importancia para que Orbitech sea
competente en el mercado de artículos de computadora y esta propuesta ayudará
con la creación del sistema experto con un análisis exhaustivo del comportamiento
de la organización.
9
Capítulo 1 - NIVEL DE CONTEXTO
Modelo de
Problemas y oportunidades
organización
PROBLEMAS:
Falta de planeación y estrategia del negocio para poder
1 evaluar la condición financiera del negocio para proyectar
las ventas.
oportunidades 5 clientes.
Desconocimiento sobre las tendencias y preferencias de los
OPORTUNIDADES:
10
Mejorar los procesos de ventas y evitar la pérdida de
4
información.
MISIÓN DE LA ORGANIZACIÓN
VISIÓN DE LA ORGANIZACIÓN
organización 1
Apoyar y asesorar a nuestros Clientes en la selección más
rentable para su inversión en Tecnología y Computación.
ESTRATEGIAS DE LA ORGANIZACIÓN
11
Identificar aquellos productos que puedan tener una mayor
3
demanda
SOLUCIONES
12
1.1.2 OM-2 Aspectos a considerar
1 Gerente
2 Gerente de recursos Humanos
3 Gerente de ventas
4 Jefe de bodega
Personal
5 Cajero
6 Contador
7 Jefe de compras
Equipos y materiales
1 Computadoras
Recursos 2 Impresoras
3 Scanners
13
1.1.3 OM-3 Descomposición de los procesos
No Tarea Realizada Donde Fondo de Intensiv Importancia
por conocimie o
nto
1 Registro Jefe de Bodega Datos del Si Vital para poder
de bodega producto llevar un control de
productos registro de
productos y el total
de existencias
2 Registro Gerente de Recurs Datos del Si Fundamental para
de recursos os empleado llevar un registro en
empleado humanos Human nómina
s os
3 Facturació Cajero Caja Datos del Si Vital para poder
n producto pronosticar las
Datos del futuras ventas de la
cliente empresa
4 Realizar Jefe de Compra Datos del Si Fundamental para
compra compras s proveedor mantener un
Datos del inventario
producto abastecido
14
1.1.6 Árbol de problemas o análisis de árbol de fallas
15
1.1.8 FODA
16
3. Poca proyección de
4. Cuenta con productos productos con mayor
sustitutos. demanda por
temporadas.
5. Conocimiento en
servicios tecnológicos. 4. Pérdida de
información.
5. Poco control de
cambio en las
tendencias
tecnológicas en el
inventario (pérdida de
inventario).
5. Riesgo de Inventario
excesivo y obsoleto.
17
18
1.1.9 Matriz de evaluación de factores internos (efi)
19
que el entorno externo es favorable para la marca. no es necesario
reforzar en medida extrema las oportunidades.
20
21
1.2 MODELO DE TAREAS
1.2.1 TM-1 Análisis de tareas
Modelo de tareas Plantilla TM-1 Análisis de tareas
Tarea Registro de productos
Organización Área de bodega
Meta y valor Registrar los productos en inventario para así poder abastecer
el inventario y que siempre haya stock de los productos y el
cliente siempre pueda realizar sus compras
Dependencia y Tareas precedentes: Realizar la compra
flujo Tareas que les siguen: Gestión de ventas
Objetos Entrada: Id
Manejados Nombre
Marca
Categoría
Cantidad
Precio
Salida:
Tiempo y control Frecuencia y duración Variable
Control Esta tarea se da con el fin de
llevar un control de inventario
Restricciones y condiciones Se debe ingresar el numero de
codigo o id del producto
Agentes Jefe de bodega
Conocimientos y El jefe de bodega registra todos
competencias los productos que llegan a la
tienda procedente de una orden
de compra
Recursos Orden de compra
Eficiencia y Ingreso correcto de los datos,
calidad mejorando y agilizando el
ingreso de productos y su fácil
acceso al cajero para su
posterior venta y revisión de
disponibilidad en stock
22
1.2.2 TM-2 Ítem de conocimiento
Nombre Poseído por Usado es Domini Naturalez Forma Disponibilida
o a d
Datos del Gerente de Registro de Recurs Riguroso Software básico Inmediata
empleado recursos empleados os para el control
humanos Human de registros
os
Datos del Jefe de Gestión de Bodega Riguroso Software básico Inmediata
producto Bodega ventas/ para el control
Registro de de registros
productos
Datos del Jefe de Realizar Compra Riguroso Software básico Inmediata
proveedor Compra compra s para el control
de registros
Datos del Cajero Gestión de Caja Riguroso Software básico Inmediata
cliente ventas para el control
de registros
Datos de Cajero Gestión de Caja Riguroso Software básico Inmediata
la factura ventas para el control
de registros
Datos de Jefe de Realizar Compra Riguroso Software básico Inmediata
compra Compra compra s para el control
de registros
23
24
1.3.2 OTA-1 Lista para documento de decisión de impactos
25
26
Capítulo 2 - NIVEL DE CONCEPTO
27
2.1.2 Conocimiento de la tarea
Gestion de venta Antes de realizar una gestión de ventas, se tiene que registrar
el producto, una vez ingresado el producto se puede realizar
una venta y gestionarla
28
2.1.3 Conocimiento inferencial
2.1.3.1 Inferencias
29
2.1.4 Conocimiento del dominio
30
2.2 Modelo de comunicación
31
2.2.1.1 Plan de comunicación del proyecto
32
2.2.1.2 Diagrama de secuencia de la gestion de ventas
33
Capítulo 3 - NIVEL DE IMPLEMENTACIÓN
34
Representación del documento Python está entre los mejores lenguajes de
alto nivel, ya que, posee una amplia gama
de bibliotecas de datos y fuentes con
algoritmos establecidos, y su código de
programación es mucho más amigable,
permitiendo módulos menos extensos por
el uso de inteligencia artificial en ellos
35
3.1.3.1 Conocimiento de la tarea
36
3.1.4 DM-4 Especificación de la aplicación sobre la arquitectura
3.1.4.1 Diagramas de casos de uso
37
3.1.4.2 Diagramas de actividades
38
3.1.4.2.3. Buscar productos
39
3.1.4.2.5. Generar reporte de venta
3.1.
4.3
Iniciamos con la sección inicial, donde se presentan los problemas iniciales, pero
antes se pregunta el nombre del usuario al que se le solucionará el problema.
40
Una vez ingresado el nombre, aparecerán cuatro opciones, las cuales indican las
subsecciones: generar ventas, consultar ventas, ingresar compras y consultar
compras.
Para la primer subsección ‘Realizar una venta’ hay cuatro problemas con el que
probablemente el usuario se llegue a encontrar:
41
Si el usuario marcó ‘Sí’ a todo en la primer subsección, la base de conocimiento
arrojará un advice:
42
Para la segunda subsección ‘Consultar ventas’ hay solamente un problema con el
que probablemente el usuario se llegue a encontrar:
Para la tercer subsección ‘Ingresar una compra’ hay cuatro problemas con el que
probablemente el usuario se llegue a encontrar:
43
Si el usuario marcó ‘Sí’ a todo en la tercer subsección, la base de conocimiento
arrojará un advice:
44
Finalmente para la última subsección ‘Consultar compras’ hay solamente un
problema con el que probablemente el usuario se llegue a encontrar:
45
Capítulo 4 - MACHINE LEARNING
Todo lo que se pueda almacenar digitalmente puede servir como dato para el
Machine Learning. Al detectar patrones en esos datos, los algoritmos aprenden y
mejoran su rendimiento en la ejecución de una tarea específica.
Hoy en día nadie duda del tremendo avance del Big Data, el Data Science y el Data
Engineering. Sin embargo, una de las tareas más difíciles cuando nos sumergimos
en estos mundos es saber cómo preparar nuestro entorno de trabajo para empezar
a procesar datos.
Parece una asignatura más que obligatoria para casi todos los entusiastas de los
datos aprender Python, de hecho, gracias al boom imparable del Big Data y la
Inteligencia Artificial, Python lleva varios años siendo uno de los lenguajes de
programación que las empresas más punteras en tecnología (SpaceX, AirBNB, Epic
Games, entre otros) recomiendan aprender. Dicho en otras palabras, Python hoy en
día es considerado por muchos el lenguaje de programación más popular del
mundo.
46
Según Computer Hoy, Python es uno de los lenguajes más populares del mundo y
ha creado el algoritmo de recomendación de Netflix y el software que controla los
coches autodirigidos.
Dentro de los entornos de ejecución a utilizar se cuenta igualmente con una amplia
variedad pero 2 de los más conocidos se puede decir que son Jupyter y google
colabs.
Colab es un servicio cloud, basado en los Notebooks de Jupyter, que permite el uso
gratuito de las GPUs y TPUs de Google, con librerías ya instaladas con la única
opción de mandarlas a llamar o importarlas para su uso. La diferencia notable en la
que se decide utilizar colab por encima de Jupyter es que google nos permite el uso
de las GPUs y TPUs gratuitas mientras que con Jupyter se utilizan recursos propios
del sistema, lo cual con colab nos ayuda mejor al momento del entrenamiento
Con Colab se pueden crear notebooks o importar los que ya tengamos creados,
además de compartirlos y exportarlos cuando queramos. Esta fluidez a la hora de
manejar la información también es aplicable a las fuentes de datos que usemos en
nuestros proyectos (notebooks), de modo que podremos trabajar con información
contenida en nuestro propio Google Drive, unidad de almacenamiento local, github e
incluso con otros sistemas de la nube.
4.2 Librerías
47
estadísticas y matemáticas así como también librerías gráficas para la visualización
de datos y librerías para el estudio de imágenes.
48
○ Mejoramiento
○ Integración
○ Interpolación
● Keras: En Deep Learning es una librería muy conocida dentro del mundo de
las redes neuronales. Su principal características es que es una biblioteca de
código abierto y trabaja con Tensor Flow, razón por la que es una de las más
empleadas en el análisis de redes neuronales profundas.
Está diseñado para ir construyendo por bloques la arquitectura de cada red
neuronal, incluyendo redes convolucionales y recurrentes, que son las que
permiten, junto a los bloques “más tradicionales”, entrenar modelos Deep
learning.
49
● Comprensión del movimiento
● Identificación del objeto
● Segmentación y reconocimiento
● Visión estereoscópica: percepción de profundidad desde 2 cámaras
● Estructura de movimiento (SFM)
● Rastreo de movimiento
● Realidad aumentada
● Aprendizaje del árbol de decisiones
● Algoritmo de maximización de expectativas
● Algoritmo de vecino más cercano k
● Clasificador Baye
● Redes neuronales artificiales
● Soporte de máquinas vectoriales
● Redes neuronales profundas
50
● SHAP: Es una librería para realizar inteligencia artificial explicable. Utiliza
cálculos del campo de la teoría de juegos para averiguar qué variables tienen
más influencia en las predicciones de las técnicas de machine learning.
Al hacer esto, nos pedirá un código de autorización para acceder a nuestro google
drive y nos llevará al proceso de validación de nuestra cuenta de Google. Después
nos subirá o accede a nuestra carpetas de google drive en la ruta:
(/content/drive/MyDrive). Al hacerlo, lo validará y montará nuestro google drive en el
notebook, apareciendo el siguiente mensaje: “Mounted at /content/drive”.
Para la lectura del archivo .CSV que deseamos leer y trabajar con nuestro dataset
se utiliza la librería Pandas que nos permite la manipulación del archivo.
Luego se usa el método read_CSV para ver la ruta donde está el archivo y la
extensión del archivo.
51
En caso de que no montemos el archivo de manera online o por medio de un
servicio en la nube como google drive se puede subir el archivo de manera local con
la desventaja es que se reiniciara el notebook cada cierto tiempo, teniendo que
resubir el archivo nuevamente. Utilizando el mismo código y solo cambiando la ruta
de la ubicación del archivo.
52
Para poder visualizar solamente unas filas determinadas podemos utilizar el método
head el cual cuando lo usamos sin parámetros nos muestra o nos devuelve las
primeras 5 filas.
#Tipos de datos
data.dtypes
53
Otros métodos utilizados que se pueden utilizar de la librería pandas para la
visualización de los datos de los archivos pueden ser el método dataframe, describe
e info que nos permite realizar la misma funciones de antes como imprimir todos los
datos del dataset.
Para la visualización de algún tipo de dato en concreto como en este caso por
ejemplo los datos que pueden haber en una columna podemos utilizar el método
print tomando como parámetros el nombre de esa columna que queremos
visualizar.
54
También muestra el número total de registros y el tipo de datos que contiene esa
columna.
#SE REALIZA UNA ELIMINACIÓN DE LAS FILAS QUE CONTIENEN CAMPOS VACÍOS
data.dropna()
55
4.7 Estadísticas básicas
np.mean(data)
Al realizar la suma de todos los datos y sacar una media de estos, dependiendo de
la cantidad de datos y de los recursos utilizados en el equipo, este proceso puede
llegar a durar un tiempo indeterminado.
56
Uso de la función std() para el cálculo de la desviación estándar del conjunto de
datos, la función std() puede recibir parámetros como el axis igual a 0 que
representa la desviación a lo largo del eje de las filas e igual a 1 que representa la
desviación estándar a lo largo del eje de las columnas.
57
La correlación es una medida estadística que expresa hasta qué punto dos variables
están relacionadas linealmente (esto es, cambian conjuntamente a una tasa
constante). Es una herramienta común para describir relaciones simples sin hacer
afirmaciones sobre causa y efecto.
correlacion = data.corr(method='pearson')
correlacion
58
La correlación de Kendall como la de Spearman son denominadas medidas de
correlación no paramétrica.
La covarianza es el valor que refleja en qué cuantía dos variables aleatorias varían
de forma conjunta respecto a sus medias.
59
También se puede calcular la varianza de acuerdo a su eje de los datos, en este
caso se puede ver con el eje de las columnas.
60
No confundir la funciones describe con describe() donde describe sin parámetros
nos muestra todos los datos de nuestro dataset y la segunda con parámetros realiza
un resumen de todos aquellos valores estadísticos de relevancia.
61
describe() que excluye aquellos datos tipos objetos
%matplotlib inline
62
4.8.1 Gráfico de líneas
Los gráficos de líneas se usan para comparar los cambios en los valores de medida
a lo largo de un periodo de tiempo, para los siguientes casos: Una medida a lo largo
de un periodo de tiempo, por ejemplo, ventas brutas por mes.
data.iloc[:,2:].plot(kind='line')
data.groupby(['datum']).sum().iloc[:,1:].plot(kind='line')
63
Otra manera de llegar a utilizar gráficos de líneas es usando directamente la función
plot y la función show para mostrar los resultados.
data.iloc[:,2:].plot(kind="bar")
64
#Gráfico de barras agrupado por años
(data.groupby(['datum']).sum()).iloc[:,1:].plot(kind="bar")
65
El uso principal de un gráfico circular es mostrar comparaciones entre diferentes
categorías.
plt.pie(data.iloc[:,2:].sum(), labels=data.iloc[:,2:].columns.values,
autopct="%0.1f %%")
4.8.4 Histograma
#Histograma
data.iloc[:,2:].hist(figsize = (10,10))
plt.show()
66
Dentro de los histogramas también podemos mostrar distribuciones de frecuencia y
en este caso por ejemplo podemos ver, utilizando la librería matplotlib y la función
hist() como el primer ejemplo, en este caso podemos ver un ejemplo con parámetros
donde medimos los precios referente a un precio de 100 y podemos observar que
muchos de los productos rondan ese precio y una muy buen parte de los productos
tienen un precio rondando los $100 o en un rango menor.
#Diagrama de cajas
plt.show()
Se emplea cuando una o varias variables están bajo el control del experimentador.
Si existe un parámetro que se incrementa o disminuye de forma sistemática por el
experimentador, se le denomina parámetro de control o variable independiente y
habitualmente se representa a lo largo del eje horizontal (eje de las abscisas). La
67
variable medida o dependiente usualmente se representa a lo largo del eje vertical
(eje de las ordenadas). Si no existe una variable dependiente, cualquier variable se
puede representar en cada eje y el diagrama de dispersión mostrará el grado de
correlación (no causalidad) entre las dos variables.
plt.scatter(data.iloc[:,2:].columns.values, np.mean(data.iloc[:,2:]))
Es un tipo de gráfico que usa diferentes tonos de colores para representar valores
de datos.
#MATRIZ DE CORRELACIÓN
plt.matshow(data.corr())
plt.show()
Para eso usamos el método matshow() con los parámetros de la correlación del
conjunto de datos y luego mostramos e imprimimos en pantalla.
68
4.9 Algoritmos de Machine Learning
X = data.iloc[:,:-8].values
print(X)
69
Se toman los datos de los meses y los precios para conocer los ingresos totales por
mes y predecir la cantidad de ventas totales para los próximos meses.
print(y_r)
70
Con los datos dependientes se les considerara datos de salida ya que también de
estos juntos con los de entrada se necesitaran para la proyección de las ventas.
Así que antes vamos a elegir algunos datos para luego entrenarlos y que estos sean
los correctos para que den los mejores resultados.
71
Esta técnica es eficaz, salvo si los datos están limitados. Entonces puede faltar
alguna información contenida en los datos que no se utilizan para el entrenamiento
y, por tanto, los resultados pueden tener un gran sesgo.
Para el uso del porcentaje de prueba que se utilizara de los datos se decidió utilizar
un cuarto de estos, un 0.25 o 25% de estos.
print('Datos de x train\n')
print(X_train)
print('\nDatos y train\n')
print(y_train)
72
73
Ahora vamos a definir las variables a definir de cada una de las variables, así que
definimos una nueva variable.
X_pred_Machine_Learning = [['2019','10'],['2019','11'],['2019','12'],
['2020','1'],['2020','2'],['2020','3'], ['2020','4'],
['2020','5'],['2020','6'],['2020','7'],['2020','8'],['2020','9']]
Después definimos las variables que son dependientes pasando por parámetros
aquellos algoritmos que se utilizaran para realizar una predicción y que luego
compararemos para posteriormente tomar una decisión sobre los resultados que
nos devuelva.
74
Z_pred_Machine_Learning = [['K- Vecinos más cercanos'],['Árbol de
decisiones'],['Bosques aleatorios'],['Regresión Lineal'], ['Regresión
Polinomial Grado 2'],['Regresión Polinomial Grado 3'],['Regresión
Polinomial Grado 4'],['Regresión Polinomial Grado 5'],['Regresión
Polinomial Grado 6']]
y_pred_Machine_Learning =
np.zeros((len(X_pred_Machine_Learning)*len(Z_pred_Machine_Learning),
8 ))y_pred_Machine_Learning.shape
75
Se realiza una predicción con los valores de entrada x_test, guardándolo en la
nueva variable y_pred_vecinos.
Posterior se muestra los valores de entrada (y_test) y salidas reales (y_test) que son
los valores seleccionados en la separación de los datos, posterior las salidas
generadas en la predicción (y_pred_vecinos).
76
77
4.9.2 Árbol de decisiones
Un árbol de decisión comienza con un nodo raíz, que no tiene ramas entrantes. Las
ramas salientes del nodo raíz alimentan los nodos internos, también conocidos
como nodos de decisión. En función de las características disponibles, ambos tipos
de nodos realizan evaluaciones para formar subconjuntos homogéneos, que se
indican mediante nodos hoja o nodos terminales. Los nodos hoja representan todos
los resultados posibles dentro del conjunto de datos.
Luego pasamos a una variable llamada model para que tengan las funciones del
DecisionTreeRegressor y así equipar las variables de prueba y entrenamiento.
78
Después equipamos las variables con las variables de entrada y salida que
definimos desde un principio..
Luego procedemos a realizar una revision mediante la utilizacion del erro cuadrado
medio, esto para verificar con los valores originales
Un algoritmo de bosque aleatorio crea árboles de decisión para todos estos factores
y puede predecir con precisión cuáles de los clientes de la organización tienen un
alto riesgo de abandono.
79
Para la implementación de los Bosques aleatorios,se debe de importar la librería del
modelo, la cual sería RandomForestRegressor declararlo y entrenarlo con los
valores seleccionados en la separación de los datos. Se realiza una predicción con
los valores de entrada (x_test), guardándolo en la variable y_pred_bosquealeatorio
Posterior se muestra los valores de entrada (x_test) y salidas reales (y_test) que son
los valores seleccionados en la separación de los datos, posterior las salidas
generadas en la predicción (y_pred_bosquealeatorio).
También se puede decir que la regresión lineal es una técnica de análisis de datos
que predice el valor de datos desconocidos mediante el uso de otro valor de datos
relacionado y conocido. Modela matemáticamente la variable desconocida o
dependiente y la variable conocida o independiente como una ecuación lineal.
80
habíamos seleccionado con anterioridad en las variables x_test y y_test. Se
realizará una predicción con los valores de entrada (x_test), guardándolo en la
variable y_pred_lineal. Posteriormente se mostrarán los valores de entrada (x_test)
y salidas reales (y_test) que son los valores seleccionados en la separación de los
datos , posterior las salidas generadas se guardarán en la variable (y_predlineal).
Después de realizadas las predicciones se sacará el error del cuadrado medio para
verificar que las predicciones entre el modelo y los valores reales sean los más
precisos, su valor entre más cercano a cero sea, entonces significa que más preciso
es.
Para el comienzo del trabajo con una regresión polinomial se deberá ver el tipo de
grado de esa regresión así que para empezar a pronosticar mejor empezaremos
con una regresión de grado dos y subiendo sucesivamente en uno hasta llegar a
seis.
81
4.9.5.1 Regresión polinomial de grado 2
82
CONCLUSIONES
83
RECOMENDACIONES
84
REFERENCIAS BIBLIOGRÁFICAS
85
ANEXOS
Punto de Función
Complejidad Baja Media Alta
Entradas 9 8 6
Salidas 32 5 21
Consultas 36 0 0
Tablas 21 30 0
A. Externos 0 0 0
PF 168
Cálculo del MF
∑Fi 31
PFA 161.28
#LDCM
ASP.NET 69
#LDCM SQL 40
TLDC 8,789.76
MF 8.78976
Factores de escala
Factor Índice Valor
Precedencia Alto 2.48
Flexibilidad Nominal 3.04
Team Nominal 4.24
Madurez Alto 3.12
Resolución Alto 2.83
86
STOR Alto 1.06
PVOL Nominal 1
CPLX Alto 1.15
Calculo costo de
trabajo por fase
87
Costo de utilización de los medios técnicos
Flujos de efectivo
88
Viabilidad
Viabilidad
Valor Presente Neto 33,558.04
Tasa Interna de Retorno 43%
Índice de Rentabilidad 1.78
Costos vs Beneficios 2.10
89