Sunteți pe pagina 1din 14

Inteligencia Artificial para desarrolladores

Conceptos e implementacin en C#

Introduccin

1. Estructura del captulo 19

2. Definir la inteligencia 19

3. La inteligencia de los seres vivos 22

4. La inteligencia artificial 24

5. Dominios de aplicacin 26

6. Resumen 28

Sistemas expertos

1. Presentacin del captulo 29

2. Ejemplo: un sistema experto en polgonos 30

2.1 Tringulos 30
2.2 Cuadrilteros 32
2.3 Otros polgonos 33

3. Contenido de un sistema experto 34

3.1 Base de reglas 35


3.2 Base de hechos 36
3.3 Motor de inferencia 37
3.4 Interfaz de usuario 38

4. Tipos de inferencia 39

4.1 Razonamiento deductivo 39

www.ediciones-eni.com Ediciones ENI 1/14


Inteligencia Artificial para desarrolladores
Conceptos e implementacin en C#

4.1.1 Principio 39
4.1.2 Aplicacin a un ejemplo 40
4.2 Razonamiento inductivo 41
4.2.1 Principio 41
4.2.2 Aplicacin a un ejemplo 42
4.3 Razonamiento mixto 43

5. Etapas de construccin de un sistema 44


5.1 Extraccin del conocimiento 45
5.2 Creacin del motor de inferencia 45
5.3 Escritura de las reglas 46
5.4 Creacin de la interfaz de usuario 46

6. Rendimiento y mejoras 47

6.1 Criterios de rendimiento 47


6.2 Mejorar el rendimiento mediante la escritura de reglas 48
6.3 Importancia de la representacin del problema 49

7. Dominios de aplicacin 51

7.1 Ayuda al diagnstico 51


7.2 Evaluacin de riesgos 52
7.3 Planificacin y logstica 53
7.4 Transferencia de competencias y conocimiento 53
7.5 Otras aplicaciones 54

8. Creacin de un sistema experto en C# 55

8.1 Definicin de requisitos 55


8.2 Implementacin de los hechos 56
8.3 Base de hechos 60
8.4 Reglas y base de reglas 62
8.5 Interfaz 64
8.6 Motor de inferencia 66
8.7 Escritura de reglas y uso 74

9. Uso de Prolog 76

www.ediciones-eni.com Ediciones ENI 2/14


Inteligencia Artificial para desarrolladores
Conceptos e implementacin en C#

9.1 Presentacin del lenguaje 77


9.2 Sintaxis del lenguaje 78
9.2.1 Generalidades 78
9.2.2 Predicados 78
9.2.3 Plantear preguntas 79
9.2.4 Escritura de las reglas 80
9.2.5 Otros predicados tiles 81
9.3 Codificacin del problema de las formas geomtricas 82
9.4 Codificacin del problema de las ocho reinas 86
9.4.1 Inters del razonamiento inductivo 86
9.4.2 Estudio del problema 86
9.4.3 Reglas a aplicar 87
9.4.4 Reglas de conflicto entre reinas 88
9.4.5 Objetivo del programa 90
9.4.6 Ejemplos de uso 90

10. Agregar incertidumbre y probabilidades 91

10.1 Incorporar incertidumbre 91


10.2 Hechos inciertos 92
10.3 Reglas inciertas 93

11. Resumen 94

Lgica difusa

1. Presentacin del captulo 95

2. Incertidumbre e imprecisin 96

2.1 Incertidumbre y probabilidad 96


2.2 Imprecisin y subjetividad 96
2.3 Necesidad de tratar la imprecisin 97

3. Conjuntos difusos y grados de pertenencia 98

www.ediciones-eni.com Ediciones ENI 3/14


Inteligencia Artificial para desarrolladores
Conceptos e implementacin en C#

3.1 Lgica booleana y lgica difusa 98


3.2 Funciones de pertenencia 99
3.3 Caractersticas de una funcin de pertenencia 102
3.4 Valores y variables lingsticas 103

4. Operadores sobre los conjuntos difusos 104


4.1 Operadores booleanos 104
4.2 Operadores difusos 106
4.2.1 Negacin 106
4.2.2 Unin e interseccin 108

5. Creacin de reglas 110


5.1 Reglas en lgica booleana 110
5.2 Reglas difusas 110

6. Fuzzificacin y defuzzificacin 113

6.1 Valor de verdad 113


6.2 Fuzzificacin y aplicacin de las reglas 115
6.3 Defuzzificacin 119

7. Ejemplos de aplicaciones 121

7.1 Primeros usos 121


7.2 En los productos electrnicos 122
7.3 En el mundo del automvil 122
7.4 Otros dominios 122

8. Implementacin de un motor de lgica difusa 123

8.1 El ncleo del cdigo: los conjuntos difusos 124


8.1.1 Point2D: un punto de una funcin de pertenencia 124
8.1.2 FuzzySet: un conjunto difuso 125
8.1.3 Operadores de comparacin y de multiplicacin 126
8.1.4 Operadores sobre conjuntos 127
8.1.5 Clculo del baricentro 135
8.2 Conjuntos difusos particulares 138
8.3 Variables y valores lingsticos 140

www.ediciones-eni.com Ediciones ENI 4/14


Inteligencia Artificial para desarrolladores
Conceptos e implementacin en C#

8.3.1 LinguisticValue: valor lingstico 140


8.3.2 LinguisticVariable: variable lingstica 141
8.4 Reglas difusas 143
8.4.1 FuzzyExpression: expresin difusa 143
8.4.2 FuzzyValue: valor difuso 143
8.4.3 FuzzyRule: regla difusa 144
8.5 Sistema de control difuso 146
8.6 Resumen del cdigo creado 150

9. Implementacin de un caso prctico 151

10. Resumen 157

Bsqueda de rutas

1. Presentacin del captulo 159

2. Rutas y grafos 160

2.1 Definicin y conceptos 160


2.2 Representaciones 161
2.2.1 Representacin grfica 161
2.2.2 Matriz de adyacencia 161
2.3 Coste de una ruta y matriz de distancias 165

3. Ejemplo en cartografa 166

4. Algoritmos exhaustivos de bsqueda de rutas 168


4.1 Bsqueda en profundidad 168
4.1.1 Principio y pseudo-cdigo 168
4.1.2 Aplicacin al mapa 170
4.2 Bsqueda en anchura 173
4.2.1 Principio y pseudo-cdigo 173
4.3 Aplicacin al mapa 175

www.ediciones-eni.com Ediciones ENI 5/14


Inteligencia Artificial para desarrolladores
Conceptos e implementacin en C#

5. Algoritmos "inteligentes" 178


5.1 Algoritmo de Bellman-Ford 179
5.1.1 Principio y pseudo-cdigo 179
5.1.2 Aplicacin al mapa 181
5.2 Algoritmo de Dijkstra 185
5.2.1 Principio y pseudo-cdigo 185
5.2.2 Aplicacin al mapa 186
5.3 Algoritmo A* 189
5.3.1 Principio y pseudo-cdigo 189
5.3.2 Aplicacin al mapa 191

6. Implementacin 199

6.1 Nodos, arcos y grafos 199


6.1.1 Implementacin de los nodos 199
6.1.2 Clase que representa los arcos 200
6.1.3 Interfaz de los grafos 201
6.2 Fin del programa genrico 202
6.2.1 IHM 202
6.2.2 Algoritmo genrico 203
6.3 Codificacin de los diferentes algoritmos 204
6.3.1 Bsqueda en profundidad 204
6.3.2 Bsqueda en anchura 206
6.3.3 Algoritmo de Bellman-Ford 207
6.3.4 Algoritmo de Dijkstra 208
6.3.5 Algoritmo A* 210
6.4 Aplicacin al mapa 211
6.4.1 Tile y Tiletype 211
6.4.2 Implementacin del mapa 214
6.4.3 Programa principal 221
6.5 Comparacin de los rendimientos 225

7. Dominios de aplicacin 227

8. Resumen 228

www.ediciones-eni.com Ediciones ENI 6/14


Inteligencia Artificial para desarrolladores
Conceptos e implementacin en C#

Algoritmos genticos

1. Presentacin del captulo 231

2. Evolucin biolgica 232


2.1 El concepto de evolucin 232
2.2 Las causas de las mutaciones 233
2.3 El soporte de esta informacin: los factores 234
2.4 De los factores al cdigo gentico 237
2.5 El "ciclo de la vida" 239

3. Evolucin artificial 240

3.1 Principios 240


3.2 Visin general del ciclo 242
3.2.1 Fases de inicializacin y de finalizacin 242
3.2.2 Fase de seleccin 242
3.2.3 Fase de reproduccin con mutaciones 243
3.2.4 Fase de supervivencia 243
3.3 Convergencia 243

4. Ejemplo del grifo 244


4.1 Presentacin del problema 244
4.2 Inicializacin del algoritmo 244
4.3 Evaluacin de los individuos 245
4.4 Reproduccin con mutaciones 245
4.5 Supervivencia 247
4.6 Resto del proceso 248

5. Eleccin de la representacin 248

5.1 Poblacin e individuos 248


5.2 Genes 248
5.3 Caso de un algoritmo de resolucin de laberinto 249

6. Evaluacin, seleccin y supervivencia 252

www.ediciones-eni.com Ediciones ENI 7/14


Inteligencia Artificial para desarrolladores
Conceptos e implementacin en C#

6.1 Eleccin de la funcin de evaluacin 252


6.2 Operadores de seleccin 253
6.3 Operadores de supervivencia 255

7. Reproduccin: crossover y mutacin 255


7.1 Crossover 255
7.2 Mutacin 259

8. Dominios de aplicacin 260

9. Implementacin de un algoritmo gentico 262


9.1 Implementacin genrica de un algoritmo 262
9.1.1 Especificaciones 262
9.1.2 Parmetros 263
9.1.3 Individuos y genes 264
9.1.4 IHM 267
9.1.5 Proceso evolutivo 267
9.2 Uso para el hombre de negocios 272
9.2.1 Presentacin del problema 272
9.2.2 Entorno 274
9.2.3 Genes 276
9.2.4 Individuos 278
9.2.5 Programa principal 282
9.2.6 Resultados 283
9.3 Uso para la resolucin de un laberinto 284
9.3.1 Presentacin del problema 284
9.3.2 Entorno 286
9.3.3 Genes 292
9.3.4 Individuos 293
9.3.5 Programa principal 298
9.3.6 Resultados 299

10. Coevolucin 301

11. Resumen 302

www.ediciones-eni.com Ediciones ENI 8/14


Inteligencia Artificial para desarrolladores
Conceptos e implementacin en C#

Metaheursticos de optimizacin

1. Presentacin del captulo 305

2. Optimizacin y mnimos 306


2.1 Ejemplos 306
2.2 El problema de la mochila 306
2.3 Formulacin de los problemas 307
2.4 Resolucin matemtica 308
2.5 Bsqueda exhaustiva 310
2.6 Metaheursticos 310

3. Algoritmos voraces 311

4. Descenso por gradiente 314

5. Bsqueda tab 317

6. Recocido simulado 319

7. Optimizacin por enjambre de partculas 321

8. Meta-optimizacin 323

9. Dominios de aplicacin 323

10. Implementacin 325

10.1 Clases genricas 325


10.2 Implementacin de los distintos algoritmos 327
10.2.1 Algoritmo voraz 327
10.2.2 Descenso por gradiente 327
10.2.3 Bsqueda tab 329
10.2.4 Recocido simulado 330

www.ediciones-eni.com Ediciones ENI 9/14


Inteligencia Artificial para desarrolladores
Conceptos e implementacin en C#

10.2.5 Optimizacin por enjambre de partculas 331


10.3 Resolucin del problema de la mochila 333
10.3.1 Implementacin del problema 333
10.3.2 Algoritmo voraz 340
10.3.3 Descenso por gradiente 342
10.3.4 Bsqueda tab 343
10.3.5 Recocido simulado 346
10.3.6 Optimizacin por enjambre de partculas 348
10.3.7 Programa principal 352
10.4 Resultados obtenidos 354

11. Resumen 357

Sistemas multi-agentes

1. Presentacin del captulo 359

2. Origen biolgico 360


2.1 Las abejas y la danza 360
2.2 Las termitas y la ingeniera civil 362
2.3 Las hormigas y la optimizacin de caminos 363
2.4 Inteligencia social 364

3. Sistemas multi-agentes 364

3.1 El entorno 364


3.2 Los objetos 365
3.3 Los agentes 365

4. Clasificacin de los agentes 366

4.1 Percepcin del mundo 366


4.2 Toma de decisiones 366
4.3 Cooperacin y comunicacin 367
4.4 Capacidad del agente 368

www.ediciones-eni.com Ediciones ENI 10/14


Inteligencia Artificial para desarrolladores
Conceptos e implementacin en C#

5. Principales algoritmos 369


5.1 Algoritmos de manadas 369
5.2 Optimizacin por colonia de hormigas 370
5.3 Sistemas inmunitarios artificiales 372
5.4 Autmatas celulares 373

6. Dominios de aplicacin 375


6.1 Simulacin de multitudes 375
6.2 Planificacin 376
6.3 Fenmenos complejos 376

7. Implementacin 377

7.1 Banco de peces 377


7.1.1 Los objetos del mundo y las zonas a evitar 377
7.1.2 Los agentes-peces 380
7.1.3 El ocano 388
7.1.4 La aplicacin grfica 391
7.1.5 Resultados obtenidos 394
7.2 Recogida selectiva 396
7.2.1 Los residuos 396
7.2.2 Los agentes limpiadores 399
7.2.3 El entorno 403
7.2.4 La aplicacin grfica 407
7.2.5 Resultados obtenidos 411
7.3 El juego de la vida 413
7.3.1 La malla 413
7.3.2 La aplicacin grfica 417
7.3.3 Resultados obtenidos 420

8. Resumen 421

Redes neuronales

www.ediciones-eni.com Ediciones ENI 11/14


Inteligencia Artificial para desarrolladores
Conceptos e implementacin en C#

1. Presentacin del captulo 423

2. Origen biolgico 424

3. La neurona formal 426

3.1 Funcionamiento general 426


3.2 Funciones de agregacin 427
3.3 Funciones de activacin 428
3.3.1 Funcin "heavyside" 428
3.3.2 Funcin sigmoide 428
3.3.3 Funcin gausiana 429
3.4 Pesos y aprendizaje 430

4. Perceptrn 430

4.1 Estructura 430


4.2 Condicin de linealidad 431

5. Redes feed-forward 433

6. Aprendizaje 434

6.1 Aprendizaje no supervisado 434


6.2 Aprendizaje por refuerzo 436
6.3 Aprendizaje supervisado 436
6.3.1 Principio general 436
6.3.2 Descenso por gradiente 437
6.3.3 Algoritmo de Widrow-Hoff 439
6.3.4 Retropropagacin 439
6.4 Sobreaprendizaje y generalizacin 441
6.4.1 Reconocer el sobreaprendizaje 442
6.4.2 Creacin de subconjuntos de datos 443

7. Otras redes 444

7.1 Redes neuronales recurrentes 444

www.ediciones-eni.com Ediciones ENI 12/14


Inteligencia Artificial para desarrolladores
Conceptos e implementacin en C#

7.2 Mapas de Kohonen 444


7.3 Redes de Hopfield 445

8. Dominios de aplicacin 445


8.1 Reconocimiento de patrones 446
8.2 Estimacin de funciones 446
8.3 Creacin de componentes 446

9. Implementacin de un MLP 447

9.1 Puntos y conjuntos de puntos 447


9.2 Neurona 451
9.3 Red neuronal 453
9.4 IHM 457
9.5 Sistema completo 457
9.6 Programa principal 461
9.7 Aplicaciones 462
9.7.1 Aplicacin al XOR 462
9.7.2 Aplicacin a Abalone 464
9.7.3 Posibles mejoras 466

10. Resumen del captulo 466

Webgrafa

1. Por qu una webgrafa ? 473

2. Sistemas expertos 473

3. Lgica difusa 475

4. Algoritmos genticos 477

www.ediciones-eni.com Ediciones ENI 13/14


Inteligencia Artificial para desarrolladores
Conceptos e implementacin en C#

5. Bsqueda de rutas 478

6. Metaheursticos 479

7. Sistemas multi-agentes 480

8. Redes neuronales 481

Anexo

1. Instalacin de SWI-Prolog 485

2. Uso de SWI-Prolog 486

ndice 489

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

S-ar putea să vă placă și