Esta aplicación implementa el método AHP-SORT para clasificar alternativas en distintas clases basándose en el análisis multicriterio. La aplicación utiliza archivos de datos para definir alternativas, criterios, clases y prioridades, y genera un archivo Excel con los resultados del análisis.
- Python 3.8 o superior instalado.
- Librerías necesarias:
pandasnumpyopenpyxl- Cualquier otra librería mencionada en el código.
Puedes instalar las dependencias necesarias con el siguiente comando:
pip install -r requirements.txtLa aplicación requiere varios archivos Excel con un formato específico:
-
Archivo de datos (e.g.,
crimenes_spain_2023_norm.xlsx):- Contiene las alternativas (filas) y los valores normalizados para cada criterio (columnas).
- Las columnas deben representar los criterios.
- Ejemplo:
Alternativa Criterio1 Criterio2 Criterio3 Madrid 0.5 0.7 0.3 Barcelona 0.6 0.8 0.2
-
Archivo de comparación de criterios (e.g.,
Comp_criterios.xlsx):- Matriz de comparación pareada de los criterios (AHP).
- Ejemplo:
Criterio1 Criterio2 Criterio3 1.0 3.0 0.5 0.33 1.0 0.2 2.0 5.0 1.0
-
Archivo de clases (e.g.,
Clases.xlsx):- Define las clases y los valores que delimitan las prioridades.
- Ejemplo:
Clase Criterio1 Criterio2 Criterio3 1 0.1 0.2 0.3 2 0.4 0.5 0.6 3 0.7 0.8 0.9
-
Archivos de prioridades para cada criterio (e.g.,
PC_Crimenes_Norm.xlsx):- Define las prioridades relativas para los rangos de cada criterio.
- Ejemplo:
Valor Prioridad 0.1 0.2 0.5 0.6 0.9 0.9
-
Ubicar los Archivos:
- Asegúrate de tener todos los archivos necesarios en las rutas correspondientes:
- Archivo de datos.
- Archivo de comparación de criterios.
- Archivo de clases.
- Archivos de prioridades.
- Asegúrate de tener todos los archivos necesarios en las rutas correspondientes:
-
Configurar el Archivo
main.py:- Modifica las rutas de los archivos en
main.pypara que correspondan a tus datos:path_data = './data/crimenes_spain_2023_norm.xlsx' path_criterios = './data/Comp_criterios.xlsx' path_classes = './data/Clases.xlsx' path_prioridades = ['./data/Prioridades/PC_Crimenes_Norm.xlsx', './data/Prioridades/PC_Robos_Norm.xlsx', './data/Prioridades/PC_VEHICULOS_Norm.xlsx', './data/Prioridades/PC_ORDEN_Norm.xlsx', './data/Prioridades/PC_DROGAS_Norm.xlsx', ] path_result = './results/ejercicio4.xlsx'
- Modifica las rutas de los archivos en
-
Ejecutar la Aplicación:
- Desde la línea de comandos, ejecuta el archivo
main.py:python main.py
- Desde la línea de comandos, ejecuta el archivo
-
Verificar los Resultados:
- El resultado se generará en el archivo definido en
path_result(por defecto:./results/ejercicio4.xlsx). - Este archivo incluirá:
- Las prioridades globales de las alternativas.
- La clase asignada a cada alternativa.
- El resultado se generará en el archivo definido en
Esta clase contiene toda la lógica del análisis:
-
Constructor (
__init__):- Lee los datos de los archivos y los convierte en estructuras de datos internas.
-
Método
apply:- Ejecuta el análisis completo:
- Calcula los pesos de los criterios.
- Calcula los pesos globales de las clases.
- Calcula las prioridades globales de las alternativas.
- Asigna las alternativas a clases.
- Ejecuta el análisis completo:
-
Métodos Auxiliares:
obtain_criterios_weights: Calcula los pesos de los criterios usando el método del vector propio.obtain_classes_weights: Calcula los pesos globales para las clases.obtain_priorities_alternatives: Calcula las prioridades globales de las alternativas.priority_alternative: Calcula la prioridad de una alternativa para un criterio específico usando interpolación lineal.
Este archivo inicializa la clase AHP_SORT con las rutas configuradas y ejecuta el método apply.
El archivo resultante (ejercicio4.xlsx) tendrá las siguientes columnas:
- Alternatives: Lista de alternativas analizadas.
- GlobalPriority: Prioridad global de cada alternativa.
- NivelSeguridad: Clase asignada a cada alternativa.
Ejemplo de salida:
| Alternatives | GlobalPriority | NivelSeguridad |
|---|---|---|
| Madrid | 0.73 | 2 |
| Barcelona | 0.85 | 1 |
- Formato de los Archivos: Asegúrate de que los archivos tengan el formato correcto. Cualquier inconsistencia puede generar errores.
- Compatibilidad: Los archivos Excel deben ser compatibles con
openpyxl. - Extensibilidad: Puedes adaptar este código para incluir más criterios o clases según tus necesidades.
Si tienes dudas o encuentras problemas al ejecutar la aplicación, verifica que:
- Todos los archivos requeridos están en las rutas especificadas.
- Los archivos tienen el formato adecuado.
- Todas las librerías están instaladas correctamente.
Para más información o ayuda, contacta al desarrollador. 😊