Autor: GUTIÉRREZ REINA, Daniel; TAPIA CÓRDOBA, Alejandro
Páginas: 232
Año: 2021
Edición: 1
Editorial: Alfaomega – Marcombo
Apoyos:
Nivel:
Encuadernación: Rustica
$478
Consultar disponibilidad
Autor: GUTIÉRREZ REINA, Daniel; TAPIA CÓRDOBA, Alejandro
Páginas: 232
Año: 2021
Edición: 1
Editorial: Alfaomega – Marcombo
Apoyos:
Nivel:
Encuadernación: Rustica
Consultar disponibilidad
Con Algoritmos genéticos con Python los autores buscan hacer un acercamiento a la resolución de problemas de ingeniería con base en una investigación esencial para la existencia del humano: la teoría de la selección natural de Darwin, la cual implementan al trabajo con Python (uno de los lenguajes de programación más populares de la actualidad) y a la capacidad de sus variables para transmitir información (machine learning), tal como lo estipularía Darwin.
Los algoritmos genéticos de este libro fueron diseñados para un implementación sencilla y guiada paso a paso hacia una compresión avanzada de Python.
VENTAJAS
• El libro le proporciona materiales adicionales para descargar en línea.
• El libro cuenta con múltiples ejemplos de aplicación en cuanto a código.
• Los autores definen conceptos esenciales por medio de ejercicios y teoría.
CONOZCA
• Los diferentes operadores deap que están disponibles para su uso.
• Los principales algoritmos genéticos que se pueden aplicar en ingenierías.
• Las distintas implementaciones de los algoritmos genéticos en problemas de diferente planteamiento.
APRENDA
• Cuáles son las funciones de benchmarking.
• A desarrollar un algoritmo genético desde su base.
• Qué son los algoritmos genéticos con múltiples objetivos.
DESARROLLE SUS HABILIDADES PARA
• Hacer funcionar una microrred.
• Diseñar una planta microhidráulica.
• Posicionar sensores funcionales con Python.
Índice general
Prefacio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
I Parte 1: Introducción a los algoritmos genéticos
1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.1 Introducción a los algoritmos genéticos 17
1.2 Primeros pasos mediante un problema sencillo 19
1.3 Definición del problema y generación de la población inicial 23
1.3.1 Creación del problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.3.2 Creación de la plantilla del individuo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1.3.3 Crear individuos aleatorios y población inicial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
1.4 Función objetivo y operadores genéticos 29
1.4.1 Función objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
1.5 Operadores genéticos 31
1.6 Últimos pasos: Algoritmo genético como caja negra 36
1.6.1 Configuración algoritmo genético . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
1.6.2 Resultados del algoritmo genético . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
1.7 ¿Cómo conseguir resultados consistentes? 40
1.8 Convergencia del algoritmo 42
1.9 Exploración versus explotación en algoritmos genéticos 43
1.10 Código completo y lecciones aprendidas 45
1.11 Para seguir aprendiendo 47
2 El problema del viajero . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
2.1 Introducción al problema del viajero 49
2.2 Definición del problema y generación de la población inicial 51
2.2.1 Creación del problema y plantilla para el individuo . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
2.2.2 Crear individuos aleatorios y población inicial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
2.3 Función objetivo y operadores genéticos 54
2.3.1 Función objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
2.3.2 Operadores genéticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
2.4 Selección del algoritmo genético 56
2.5 Últimos pasos 58
2.5.1 Configuración del algoritmo genético µ +λ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
2.6 Comprobar la convergencia del algoritmo en problemas complejos 61
2.7 Ajuste de los hiperparámetros: Probabilidades de cruce y mutación 62
2.8 Acelerando la convergencia del algoritmo: El tamaño del torneo 67
2.9 Acelerando la convergencia del algoritmo: Aplicar elitismo 67
2.10 Complejidad del problema: P vs NP 68
2.11 Código completo y lecciones aprendidas 72
2.12 Para seguir aprendiendo 75
3 Algoritmos genéticos y benchmarking . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
3.1 Introducción a las funciones de benchmark 77
3.2 Aprendiendo a usar las funciones de benchmark: Formulación del problema 78
3.2.1 Función h1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
3.2.2 Función Ackley . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
3.2.3 Función Schwefel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
3.3 Definición del problema y generación de la población inicial 80
3.4 Función objetivo y operadores genéticos 82
3.4.1 Función objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
3.4.2 Operadores genéticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
3.5 Código completo 86
3.6 Evaluación de algunas funciones de benchmark 88
3.6.1 Función h1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
3.6.2 Función Ackley . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
3.6.3 Función Schwefel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
3.7 Ajuste de los hiperparámetros de los operadores genéticos 91
3.8 Lecciones aprendidas 92
3.9 Para seguir aprendiendo 93
4 Algoritmos genéticos con múltiples objetivos . . . . . . . . . . . . . . . . . . . . 95
4.1 Introducción a los problemas con múltiples objetivos 95
4.2 Introducción a la Pareto dominancia 96
4.3 Selección del algoritmo genético 99
4.4 El problema de la suma de subconjuntos con múltiples objetivos 101
4.4.1 Formulación del problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
4.4.2 Definición del problema y generación de la población inicial . . . . . . . . . . . . . . . . . . . . 102
4.4.3 Definición del problema y plantilla del individuo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
4.4.4 Función objetivo y operadores genéticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
4.4.5 Últimos pasos: Ejecución del algoritmo multiobjetivo . . . . . . . . . . . . . . . . . . . . . . . . . . 106
4.4.6 Configuración del algoritmo genético multiobjetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
4.4.7 Algunos apuntes sobre los algoritmos genéticos con múltiples objetivos . . . . . . . . . . . . 110
4.4.8 Código completo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
4.5 Funciones de benchmark con múltiples objetivos 114
4.5.1 Definición del problema y población inicial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
4.5.2 Función objetivo y operadores genéticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
4.5.3 Ejecución del algoritmo multiobjetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
4.5.4 Representación del frente de Pareto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
4.5.5 Ajuste de los hiperpámetros de los operadores genéticos . . . . . . . . . . . . . . . . . . . . . . 118
4.5.6 Código completo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
4.6 Lecciones aprendidas 122
4.7 Para seguir aprendiendo 122
II Parte 2: Algoritmos genéticos para ingeniería
5 Funcionamiento óptimo de una microrred . . . . . . . . . . . . . . . . . . . . . . 127
5.1 Introducción 127
5.2 Formulación del problema 128
5.2.1 Recursos renovables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
5.2.2 Unidades despachables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
5.2.3 Sistema de almacenamiento de energía . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
5.2.4 Balance de potencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
5.3 Problema con un objetivo: Minimizar el coste de operación 135
5.3.1 Definición del problema y generación de la población inicial . . . . . . . . . . . . . . . . . . . . 136
5.3.2 Operadores genéticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
5.3.3 Función objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
5.3.4 Ejecución del algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
5.3.5 Resultados obtenidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
5.4 Problema con múltiples objetivos: Minimizando el coste de operación y el ciclado
de la batería 146
5.4.1 Definición del problema, población inicial y operadores genéticos . . . . . . . . . . . . . . . . 147
5.4.2 Función objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
5.4.3 Ejecución del algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
5.4.4 Resultados obtenidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
5.5 Código completo y lecciones aprendidas 151
5.6 Para seguir aprendiendo 157
6 Diseño de planta microhidráulica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
6.1 Introducción 159
6.2 Formulación del problema 159
6.2.1 Modelado de la central micro-hidráulica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
6.3 Problema con un objetivo: Minimizando el coste de instalación 167
6.3.1 Definición del problema y generación de la población inicial . . . . . . . . . . . . . . . . . . . . 167
6.3.2 Operadores genéticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
6.3.3 Función objetivo o de fitness . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
6.3.4 Ejecución del algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
6.3.5 Resultados obtenidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
6.4 Problema con múltiples objetivos: Minimizando el coste de instalación y maximizando la potencia generada 174
6.4.1 Definición del problema, población inicial y operadores genéticos . . . . . . . . . . . . . . . . 175
6.4.2 Función objetivo o de fitness . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
6.4.3 Ejecución del algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
6.4.4 Resultados obtenidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
6.5 Código completo y lecciones aprendidas 177
6.6 Para seguir aprendiendo 182
7 Posicionamiento de sensores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
7.1 Introducción 185
7.2 Formulación del problema 186
7.3 Problema con un objetivo: Maximizando el número de puntos cubiertos 189
7.3.1 Definición del problema y generación de la población inicial . . . . . . . . . . . . . . . . . . . . 189
7.3.2 Operadores genéticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
7.3.3 Función objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
7.3.4 Ejecución del algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
7.3.5 Resultados obtenidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
7.4 Problema con múltiples objetivos: maximizando el número de puntos cubiertos y la
redundancia 198
7.4.1 Definición del problema, población inicial y operadores genéticos . . . . . . . . . . . . . . . . 199
7.4.2 Función objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
7.4.3 Ejecución del algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
7.4.4 Resultados obtenidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
7.5 Código completo y lecciones aprendidas 204
7.6 Para seguir aprendiendo 209
Epílogo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
A Herencia de arrays de numpy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
A.1 Introducción a las secuencias en Python 215
A.2 Slicing en secuencias y operadores genéticos de deap 216
A.3 Operador de comparación en secuencias 219
B Procesamiento paralelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
B.1 Procesamiento paralelo con el módulo multiprocessing 221
B.2 Procesamiento paralelo con el módulo Scoop 223
Glosario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
Bibliografía . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
Peso | .500 kg |
---|---|
Dimensiones | 23 × 17 × 2 cm |