0% encontró este documento útil (0 votos)
192 vistas21 páginas

Contenido - 978 2 409 01491 8

Cargado por

bernhart
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
192 vistas21 páginas

Contenido - 978 2 409 01491 8

Cargado por

bernhart
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 21

Inteligencia Artificial para desarrolladores

Conceptos e implementación en C# (2ª edición)

Prólogo
1. Objetivos de este libro
15

2. Público objetivo y requisitos previos


15

3. Estructura del libro


16

4. Código para descargar


18

Introducción
1. Presentación del capítulo
19

2. Definir la inteligencia
20

3. La inteligencia de los seres vivos


22

4. La inteligencia artificial
24

5. Dominios de aplicación
26

6. Resumen
28

www.ediciones-eni.com © Ediciones ENI 1/21


Inteligencia Artificial para desarrolladores
Conceptos e implementación en C# (2ª edición)

Sistemas expertos
1. Presentación del capítulo
29

2. Ejemplo: un sistema experto en polígonos


30
2.1 Triángulos
30
2.2 Cuadriláteros
32
2.3 Otros polígonos
34

3. Contenido de un sistema experto


34
3.1 Base de reglas
35
3.2 Base de hechos
37
3.3 Motor de inferencia
38
3.4 Interfaz de usuario
39

4. Tipos de inferencia
40
4.1 Razonamiento deductivo
40
4.1.1 Principio
40
4.1.2 Aplicación a un ejemplo
41
4.2 Razonamiento inductivo
42
4.2.1 Principio
42
4.2.2 Aplicación a un ejemplo
43
4.3 Razonamiento mixto

www.ediciones-eni.com © Ediciones ENI 2/21


Inteligencia Artificial para desarrolladores
Conceptos e implementación en C# (2ª edición)

44

5. Etapas de construcción de un sistema


45
5.1 Extracción del conocimiento
46
5.2 Creación del motor de inferencia
46
5.3 Escritura de las reglas
47
5.4 Creación de la interfaz de usuario
47

6. Rendimiento y mejoras
48
6.1 Criterios de rendimiento
48
6.2 Mejorar el rendimiento mediante la escritura de reglas
49
6.3 Importancia de la representación del problema
50

7. Agregar incertidumbre y probabilidades


52
7.1 Agregar incertidumbre
52
7.2 Hechos inciertos
53
7.3 Reglas inciertas
54

8. Campos de aplicación
55
8.1 Ayuda al diagnóstico
55
8.2 Evaluación de riesgos
56
8.3 Planificación y logística
56
8.4 Transferencia de competencias y conocimiento

www.ediciones-eni.com © Ediciones ENI 3/21


Inteligencia Artificial para desarrolladores
Conceptos e implementación en C# (2ª edición)

57
8.5 Otras aplicaciones
57

9. Creación de un sistema experto en C#


58
9.1 Definición de requisitos
59
9.2 Implementación de los hechos
60
9.3 Base de hechos
64
9.4 Reglas y base de reglas
65
9.5 Interfaz
67
9.6 Motor de inferencia
69
9.7 Escritura de reglas y uso
76

10. Uso de Prolog


79
10.1 Presentación del lenguaje
79
10.2 Sintaxis del lenguaje
80
10.2.1 Generalidades
80
10.2.2 Predicados
80
10.2.3 Plantear preguntas
81
10.2.4 Escritura de las reglas
82
10.2.5 Otros predicados útiles
83
10.3 Codificación del problema de las formas geométricas
84
10.4 Codificación del problema de las ocho reinas
88

www.ediciones-eni.com © Ediciones ENI 4/21


Inteligencia Artificial para desarrolladores
Conceptos e implementación en C# (2ª edición)

10.4.1 Interés del razonamiento inductivo


88
10.4.2 Estudio del problema
88
10.4.3 Reglas
89
10.4.4 Reglas de conflicto entre reinas
90
10.4.5 Objetivo del programa
92
10.4.6 Ejemplos de uso
92

11. Resumen
93

Lógica difusa
1. Presentación del capítulo
95

2. Incertidumbre e imprecisión
96
2.1 Incertidumbre y probabilidad
96
2.2 Imprecisión y subjetividad
96
2.3 Necesidad de tratar la imprecisión
97

3. Conjuntos difusos y grados de pertenencia


98
3.1 Lógica booleana y lógica difusa
98
3.2 Funciones de pertenencia
99
3.3 Características de una función de pertenencia
102

www.ediciones-eni.com © Ediciones ENI 5/21


Inteligencia Artificial para desarrolladores
Conceptos e implementación en C# (2ª edición)

3.4 Valores y variables lingüísticas


103

4. Operadores sobre los conjuntos difusos


104
4.1 Operadores booleanos
104
4.2 Operadores difusos
106
4.2.1 Negación
106
4.2.2 Unión e intersección
108

5. Creación de reglas
110
5.1 Reglas en lógica booleana
110
5.2 Reglas difusas
110

6. Fuzzificación y defuzzificación
113
6.1 Valor de verdad
113
6.2 Fuzzificación y aplicación de las reglas
115
6.3 Defuzzificación
119

7. Dominios de aplicacion
121
7.1 Primer uso
121
7.2 En los productos electrónicos
122
7.3 En el mundo del automóvil
122
7.4 Otros dominios
123

www.ediciones-eni.com © Ediciones ENI 6/21


Inteligencia Artificial para desarrolladores
Conceptos e implementación en C# (2ª edición)

8. Implementación de un motor de lógica difusa


124
8.1 El núcleo del código: los conjuntos difusos
124
8.1.1 Point2D: un punto de una función de pertenencia
124
8.1.2 FuzzySet: un conjunto difuso
125
8.1.3 Operadores de comparación y de multiplicación
127
8.1.4 Operadores sobre conjuntos
127
8.1.5 Cálculo del baricentro
138
8.2 Conjuntos difusos particulares
141
8.3 Variables y valores lingüísticos
143
8.3.1 LinguisticValue: valor lingüístico
143
8.3.2 LinguisticVariable: variable lingüística
144
8.4 Reglas difusas
146
8.4.1 FuzzyExpression: expresión difusa
146
8.4.2 FuzzyValue: valor difuso
146
8.4.3 FuzzyRule: regla difusa
147
8.5 Sistema de control difuso
150
8.6 Resumen del código creado
154

9. Implementación de un caso práctico


154

10. Resumen
160

www.ediciones-eni.com © Ediciones ENI 7/21


Inteligencia Artificial para desarrolladores
Conceptos e implementación en C# (2ª edición)

Búsqueda de rutas
1. Presentación del capítulo
161

2. Rutas y grafos
162
2.1 Definición y conceptos
162
2.2 Representaciones
163
2.2.1 Representación gráfica
163
2.2.2 Matriz de adyacencia
163
2.3 Coste de una ruta y matriz de distancias
167

3. Ejemplo en cartografía
168

4. Algoritmos exhaustivos de búsqueda de rutas


170
4.1 Búsqueda en profundidad
170
4.1.1 Principio y pseudo-código
170
4.1.2 Aplicación al mapa
172
4.2 Búsqueda en anchura
175
4.2.1 Principio y pseudo-código
175
4.2.2 Aplicación al mapa
177

5. Algoritmos "inteligentes"
180

www.ediciones-eni.com © Ediciones ENI 8/21


Inteligencia Artificial para desarrolladores
Conceptos e implementación en C# (2ª edición)

5.1 Algoritmo de Bellman-Ford


181
5.1.1 Principio y pseudo-código
181
5.1.2 Aplicación al mapa
183
5.2 Algoritmo de Dijkstra
187
5.2.1 Principio y pseudo-código
187
5.2.2 Aplicación al mapa
188
5.3 Algoritmo A*
191
5.3.1 Principio y pseudo-código
191
5.3.2 Aplicación al mapa
193

6. Dominios de aplicación
201

7. Implementación
202
7.1 Nodos, arcos y grafos
202
7.1.1 Implementación de los nodos
203
7.1.2 Clase que representa los arcos
204
7.1.3 Interfaz de los grafos
204
7.2 Fin del programa genérico
206
7.2.1 IHM
206
7.2.2 Algoritmo genérico
206
7.3 Codificación de los diferentes algoritmos
207
7.3.1 Búsqueda en profundidad

www.ediciones-eni.com © Ediciones ENI 9/21


Inteligencia Artificial para desarrolladores
Conceptos e implementación en C# (2ª edición)

207
7.3.2 Búsqueda en anchura
209
7.3.3 Algoritmo de Bellman-Ford
211
7.3.4 Algoritmo de Dijkstra
212
7.3.5 Algoritmo A*
214
7.4 Aplicación al mapa
216
7.4.1 Tile y Tiletype
216
7.4.2 Implementación del mapa
219
7.4.3 Programa principal
226
7.5 Comparación del rendimiento
229

8. Resumen
231

Algoritmos genéticos
1. Presentación del capítulo
233

2. Evolución biológica
234
2.1 El concepto de evolución
234
2.2 Las causas de las mutaciones
235
2.3 El soporte de esta información: los factores
236
2.4 De los factores al código genético
239

www.ediciones-eni.com © Ediciones ENI 10/21


Inteligencia Artificial para desarrolladores
Conceptos e implementación en C# (2ª edición)

2.5 El "ciclo de la vida"


240

3. Evolución artificial
242
3.1 Los principios
242
3.2 Convergencia
243
3.3 Ejemplo
243
3.3.1 Juego del Mastermind
243
3.3.2 Creación de la población inicial
245
3.3.3 Función de evaluación
245
3.3.4 Fase de reproducción
246
3.3.5 Supervivencia y encadenamiento de generaciones
248
3.3.6 Terminación del algoritmo
249

4. Primeras fases del algoritmo


249
4.1 Elección de la representación
249
4.1.1 Población e individuos
249
4.1.2 Genes
250
4.1.3 Casos complejos
251
4.2 Inicialización de la población inicial
253
4.3 Evaluación de individuos
253

5. Creación de las siguientes generaciones


254

www.ediciones-eni.com © Ediciones ENI 11/21


Inteligencia Artificial para desarrolladores
Conceptos e implementación en C# (2ª edición)

5.1 Selección de los padres


255
5.2 Reproducción
256
5.2.1 Crossover
256
5.2.2 Mutación
259
5.3 Supervivencia
260
5.4 Parada
261

6. Coevolución
261

7. Dominios de aplicación
263

8. Implementación
264
8.1 Implementación genérica de un algoritmo
265
8.1.1 Especificaciones
265
8.1.2 Parámetros
266
8.1.3 Individuos y genes
267
8.1.4 IHM
270
8.1.5 Proceso evolutivo
270
8.2 Uso para el hombre de negocios
275
8.2.1 Presentación del problema
275
8.2.2 Entorno
276
8.2.3 Genes
279

www.ediciones-eni.com © Ediciones ENI 12/21


Inteligencia Artificial para desarrolladores
Conceptos e implementación en C# (2ª edición)

8.2.4 Individuos
280
8.2.5 Programa principal
284
8.2.6 Resultados
286
8.3 Uso para la resolución de un laberinto
286
8.3.1 Presentación del problema
286
8.3.2 Entorno
288
8.3.3 Genes
294
8.3.4 Individuos
296
8.3.5 Programa principal
300
8.3.6 Resultados
302

9. Resumen
303

Metaheurísticos de optimización
1. Presentación del capítulo
305

2. Optimización y mínimos
306
2.1 Ejemplos
306
2.2 El problema de la mochila
306
2.3 Formulación de los problemas
308
2.4 Resolución matemática

www.ediciones-eni.com © Ediciones ENI 13/21


Inteligencia Artificial para desarrolladores
Conceptos e implementación en C# (2ª edición)

309
2.5 Búsqueda exhaustiva
310
2.6 Metaheurísticos
310

3. Algoritmos voraces
311

4. Descenso por gradiente


314

5. Búsqueda tabú
316

6. Recocido simulado
319

7. Optimización por enjambre de partículas


320

8. Meta-optimización
322

9. Dominios de aplicación
323

10. Implementación
324
10.1 Clases genéricas
324
10.2 Implementación de los distintos algoritmos
326
10.2.1 Algoritmo voraz
326
10.2.2 Descenso por gradiente
327
10.2.3 Búsqueda tabú
328
10.2.4 Recocido simulado
329

www.ediciones-eni.com © Ediciones ENI 14/21


Inteligencia Artificial para desarrolladores
Conceptos e implementación en C# (2ª edición)

10.2.5 Optimización por enjambre de partículas


331
10.3 Resolución del problema de la mochila
332
10.3.1 Implementación del problema
332
10.3.2 Algoritmo voraz
340
10.3.3 Descenso por gradiente
341
10.3.4 Búsqueda tabú
342
10.3.5 Recocido simulado
345
10.3.6 Optimización por enjambre de partículas
347
10.3.7 Programa principal
351
10.4 Resultados obtenidos
353

11. Resumen
357

Sistemas multi-agentes
1. Presentación del capítulo
359

2. Origen biológico
360
2.1 Las abejas y la danza
360
2.2 Las termitas y la ingeniería civil
362
2.3 Las hormigas y la optimización de caminos
363
2.4 Inteligencia social

www.ediciones-eni.com © Ediciones ENI 15/21


Inteligencia Artificial para desarrolladores
Conceptos e implementación en C# (2ª edición)

364

3. Sistemas multi-agentes
364
3.1 El entorno
364
3.2 Los objetos
365
3.3 Los agentes
365

4. Clasificación de los agentes


366
4.1 Percepción del mundo
366
4.2 Toma de decisiones
366
4.3 Cooperación y comunicación
367
4.4 Capacidad del agente
368

5. Principales algoritmos
369
5.1 Algoritmos de manadas
369
5.2 Optimización por colonia de hormigas
370
5.3 Sistemas inmunitarios artificiales
372
5.4 Autómatas celulares
373

6. Dominios de aplicación
375
6.1 Simulación de multitudes
375
6.2 Planificación
376
6.3 Fenómenos complejos

www.ediciones-eni.com © Ediciones ENI 16/21


Inteligencia Artificial para desarrolladores
Conceptos e implementación en C# (2ª edición)

376
6.4 Otros dominios
377

7. Implementación
377
7.1 Banco de peces
378
7.1.1 Los objetos del mundo y las zonas a evitar
378
7.1.2 Los agentes-peces
380
7.1.3 El océano
389
7.1.4 La aplicación gráfica
392
7.1.5 Resultados obtenidos
396
7.2 Recogida selectiva
398
7.2.1 Los residuos
398
7.2.2 Los agentes limpiadores
401
7.2.3 El entorno
406
7.2.4 La aplicación gráfica
409
7.2.5 Resultados obtenidos
413
7.3 El juego de la vida
415
7.3.1 La malla
415
7.3.2 La aplicación gráfica
418
7.3.3 Resultados obtenidos
422

8. Resumen
423

www.ediciones-eni.com © Ediciones ENI 17/21


Inteligencia Artificial para desarrolladores
Conceptos e implementación en C# (2ª edición)

Redes neuronales
1. Presentación del capítulo
425

2. Origen biológico
426

3. Machine Learning
428
3.1 Formas de aprendizaje y ejemplos
428
3.1.1 Aprendizaje no supervisado
428
3.1.2 Aprendizaje supervisado
430
3.1.3 Aprendizaje por refuerzo
432
3.2 Regresión y algoritmo de regresión lineal
432
3.3 Clasificación y algoritmo de regresión logística
436

4. Neurona formal y perceptrón


437
4.1 Principio
437
4.2 Red de tipo "perceptrón"
438
4.3 Funciones de agregación y de activación
440
4.3.1 Función de agregación
440
4.3.2 Función de activación
441
4.3.3 Función gausiana
443

www.ediciones-eni.com © Ediciones ENI 18/21


Inteligencia Artificial para desarrolladores
Conceptos e implementación en C# (2ª edición)

4.4 Ejemplo de red


445
4.5 Aprendizaje
446

5. Redes feed-forward
448
5.1 Redes con capa oculta
449
5.2 Aprendizaje por retropropagación del gradiente
450
5.3 Sobreaprendizaje
453
5.4 Mejoras del algoritmo
455
5.4.1 Batch, mini-batch y gradiente estocástico
455
5.4.2 Regularización
456
5.4.3 Dropout
456
5.4.4 Variación del algoritmo de descenso por gradiente
457
5.4.5 Creación de nuevos datos
457

6. Otras arquitecturas
458
6.1 Redes neuronales de convolución
458
6.2 Mapas de Kohonen
459
6.3 Redes neuronales recurrentes
459
6.4 Redes de Hopfield
460

7. Dominios de aplicación
460
7.1 Reconocimiento de patrones
461

www.ediciones-eni.com © Ediciones ENI 19/21


Inteligencia Artificial para desarrolladores
Conceptos e implementación en C# (2ª edición)

7.2 Estimación de funciones


461
7.3 Creación de componentes
461
7.4 Aplicaciones actuales
462

8. Implementación
463
8.1 Puntos y conjuntos de puntos
463
8.2 Neurona
467
8.3 Red neuronal
470
8.4 Interfaz Hombre-Máquina
474
8.5 Sistema completo
475
8.6 Programa principal
479
8.7 Aplicaciones
480
8.7.1 Aplicación al XOR
480
8.7.2 Aplicación a Abalone
482
8.7.3 Posibles mejoras
484

9. Resumen del capítulo


485

Webgrafía
1. ¿ Por qué una webgrafía ?
487

www.ediciones-eni.com © Ediciones ENI 20/21


Inteligencia Artificial para desarrolladores
Conceptos e implementación en C# (2ª edición)

2. Sistemas expertos
487

3. Lógica difusa
490

4. Búsqueda de rutas
492

5. Algoritmos genéticos
494

6. Metaheurísticos
496

7. Sistemas multi-agentes
497

8. Redes neuronales
499

Anexo
1. Instalación de SWI-Prolog
503

2. Uso de SWI-Prolog
504

índice
507

www.ediciones-eni.com © Ediciones ENI 21/21

También podría gustarte