1. Manuales
  2. Inteligencia Artificial para desarrolladores - Conceptos e implementación en Java (2ª edición)

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

  • Acceso ilimitado 24/7
  • Todos los libros online de ENI
  • Novedades todos los meses
  • Acceso 100% online
  • Disponible
  • Envío gratis a partir de 25 € de compra
  • Versión online gratis
  • Acceso gratuito a todos nuestros libros online durante 1 hora por toda compra
  • Consulta inmediata
  • Versión HTML online
  • Acceso ilimitado 24/7

Presentación

Este libro sobre Inteligencia Artificial está dirigido particularmente a los desarrolladores y no requiere profundos conocimientos en matemáticas. Al hilo de los distintos capítulos, la autora presenta las principales técnicas de Inteligencia Artificial y, para cada una de ellas, su inspiración biológica, física e incluso matemática, así como los distintos conceptos y principios (sin entrar en detalles matemáticos), con ejemplos y gráficos e imágenes para cada uno de ellos. Los dominios de aplicación se ilustran mediante aplicaciones reales y actuales. Cada capítulo contiene un ejemplo de implementación genérico, que se completa con una aplicación práctica, desarrollada en Java. Estos ejemplos de código genéricos son fácilmente adaptables a numerosas aplicaciones Java 10, sin plug-in externos. Las técnicas de Inteligencia Artificial descritas son:

  • Los sistemas expertos, que permiten aplicar reglas para tomar decisiones o descubrir nuevos conocimientos.
  • La lógica difusa, que permite controlar sistemas informáticos o mecánicos de manera mucho más flexible que con los programas tradicionales.
  • Los algoritmos de búsqueda de rutas, entre los cuales el algoritmo A* se utiliza con frecuencia en videojuegos para encontrar los mejores caminos.
  • Los algoritmos genéticos, que utilizan la potencia de la evolución para aportar soluciones a problemas complejos.
  • Los principales maetaheurísticos, entre ellos la búsqueda tabú, que permiten encontrar soluciones óptimas a problemas de optimización, con o sin restricciones.
  • Los sistemas multi-agentes, que simulan elementos muy simples que permiten conseguir comportamientos emergentes a partir de varios agentes muy sencillos.
  • Las redes neuronales (y el deep learning),, capaces de descubrir y reconocer modelos en series históricas, en imágenes o incluso en conjuntos de datos.
Para ayudar al lector a pasar de la teoría a la práctica, la autora proporciona para su descarga en el sitio web www.ediciones-eni.com siete proyectos Java (realizados con Netbeans) uno por cada técnica de Inteligencia Artificial. Cada proyecto contiene un paquete genérico y uno o varios paquetes específicos a la aplicación propuesta.

El libro termina con una bibliografía que permite al lector encontrar más información acerca de las diferentes técnicas, una webgrafía que enumera algunos artículos que presentan aplicaciones reales, un anexo y un índice.

Índice

  • Prólogo
    • 1. Objetivos de este libro
    • 2. Público objetivo y requisitos previos
    • 3. Estructura del libro
    • 4. Código para descargar
  • Introducción
    • 1. Presentación del capítulo
    • 2. Definir la inteligencia
    • 3. La inteligencia de los seres vivos
    • 4. La inteligencia artificial
    • 5. Dominios de aplicación
    • 6. Resumen
  • Sistemas expertos
    • 1. Presentación del capítulo
    • 2. Ejemplo: un sistema experto en polígonos
      • 2.1 Triángulos
      • 2.2 Cuadriláteros
      • 2.3 Otros polígonos
    • 3. Contenido de un sistema experto
      • 3.1 Base de reglas
      • 3.2 Base de hechos
      • 3.3 Motor de inferencia
      • 3.4 Interfaz de usuario
    • 4. Tipos de inferencia
      • 4.1 Razonamiento deductivo
        • 4.1.1 Principio
        • 4.1.2 Aplicación a un ejemplo
      • 4.2 Razonamiento inductivo
        • 4.2.1 Principio
        • 4.2.2 Aplicación a un ejemplo
      • 4.3 Razonamiento mixto
    • 5. Etapas de construcción de un sistema
      • 5.1 Extracción del conocimiento
      • 5.2 Creación del motor de inferencia
      • 5.3 Escritura de las reglas
      • 5.4 Creación de la interfaz de usuario
    • 6. Rendimiento y mejoras
      • 6.1 Criterios de rendimiento
      • 6.2 Mejorar el rendimiento mediante la escritura de reglas
      • 6.3 Importancia de la representación del problema
    • 7. Agregar incertidumbre y probabilidades
      • 7.1 Incorporar incertidumbre
      • 7.2 Hechos inciertos
      • 7.3 Reglas inciertas
    • 8. Dominios de aplicación
      • 8.1 Ayuda al diagnóstico
      • 8.2 Evaluación de riesgos
      • 8.3 Planificación y logística
      • 8.4 Transferencia de competencias y conocimiento
      • 8.5 Otras aplicaciones
    • 9. Creación de un sistema experto en Java
      • 9.1 Definición de requisitos
      • 9.2 Implementación de los hechos
      • 9.3 Base de hechos
      • 9.4 Reglas y base de reglas
      • 9.5 Interfaz
      • 9.6 Motor de inferencia
      • 9.7 Escritura de reglas y uso
    • 10. Uso de Prolog
      • 10.1 Presentación del lenguaje
      • 10.2 Sintaxis del lenguaje
        • 10.2.1 Generalidades
        • 10.2.2 Predicados
        • 10.2.3 Plantear preguntas
        • 10.2.4 Escritura de las reglas
        • 10.2.5 Otros predicados útiles
      • 10.3 Codificación del problema de las formas geométricas
      • 10.4 Codificación del problema de las ocho reinas
        • 10.4.1 Interés del razonamiento inductivo
        • 10.4.2 Estudio del problema
        • 10.4.3 Reglas que se han de aplicar
        • 10.4.4 Reglas de conflicto entre reinas
        • 10.4.5 Objetivo del programa
        • 10.4.6 Ejemplos de uso
    • 11. Resumen
  • Lógica difusa
    • 1. Presentación del capítulo
    • 2. Incertidumbre e imprecisión
      • 2.1 Incertidumbre y probabilidad
      • 2.2 Imprecisión y subjetividad
      • 2.3 Necesidad de tratar la imprecisión
    • 3. Conjuntos difusos y grados de pertenencia
      • 3.1 Lógica booleana y lógica difusa
      • 3.2 Funciones de pertenencia
      • 3.3 Características de una función de pertenencia
      • 3.4 Valores y variables lingüísticas
    • 4. Operadores sobre los conjuntos difusos
      • 4.1 Operadores booleanos
      • 4.2 Operadores difusos
        • 4.2.1 Negación
        • 4.2.2 Unión e intersección
    • 5. Creación de reglas
      • 5.1 Reglas en lógica booleana
      • 5.2 Reglas difusas
    • 6. Fuzzificación y defuzzificación
      • 6.1 Valor de verdad
      • 6.2 Fuzzificación y aplicación de las reglas
      • 6.3 Defuzzificación
    • 7. Dominios de aplicación
      • 7.1 Primer uso
      • 7.2 En los productos electrónicos
      • 7.3 En el mundo del automóvil
      • 7.4 Otros dominios
    • 8. Implementación de un motor de lógica difusa
      • 8.1 El núcleo del código: los conjuntos difusos
        • 8.1.1 Punto2D: un punto de una función de pertenencia
        • 8.1.2 ConjuntoDifuso: un conjunto difuso
        • 8.1.3 Operadores de comparación y de multiplicación
        • 8.1.4 Operadores sobre conjuntos
        • 8.1.5 Cálculo del baricentro
      • 8.2 Conjuntos difusos particulares
      • 8.3 Variables y valores lingüísticos
        • 8.3.1 Valor lingüístico
        • 8.3.2 Variable lingüística
      • 8.4 Reglas difusas
        • 8.4.1 Expresión difusa
        • 8.4.2 Valor numérico
        • 8.4.3 Regla difusa
      • 8.5 Sistema de control difuso
      • 8.6 Resumen del código creado
    • 9. Implementación de un caso práctico
    • 10. Resumen
  • Búsqueda de rutas
    • 1. Presentación del capítulo
    • 2. Rutas y grafos
      • 2.1 Definición y conceptos
      • 2.2 Representaciones
        • 2.2.1 Representación gráfica
        • 2.2.2 Matriz de adyacencia
      • 2.3 Coste de una ruta y matriz de distancias
    • 3. Ejemplo en cartografía
    • 4. Algoritmos exhaustivos de búsqueda de rutas
      • 4.1 Búsqueda en profundidad
        • 4.1.1 Principio y pseudocódigo
        • 4.1.2 Aplicación al mapa
      • 4.2 Búsqueda en anchura
        • 4.2.1 Principio y pseudocódigo
        • 4.2.2 Aplicación al mapa
    • 5. Algoritmos "inteligentes"
      • 5.1 Algoritmo de Bellman-Ford
        • 5.1.1 Principio y pseudocódigo
        • 5.1.2 Aplicación al mapa
      • 5.2 Algoritmo de Dijkstra
        • 5.2.1 Principio y pseudocódigo
        • 5.2.2 Aplicación al mapa
      • 5.3 Algoritmo A*
        • 5.3.1 Principio y pseudocódigo
        • 5.3.2 Aplicación al mapa
    • 6. Dominios de aplicación
    • 7. Implementación
      • 7.1 Nodos, arcos y grafos
        • 7.1.1 Implementación de los nodos
        • 7.1.2 Clase que representa los arcos
        • 7.1.3 Grafos
      • 7.2 Fin del programa genérico
        • 7.2.1 IHM
        • 7.2.2 Algoritmo genérico
      • 7.3 Implementación de los diferentes algoritmos
        • 7.3.1 Búsqueda en profundidad
        • 7.3.2 Búsqueda en anchura
        • 7.3.3 Algoritmo de Bellman-Ford
        • 7.3.4 Algoritmo de Dijkstra
        • 7.3.5 Algoritmo A*
      • 7.4 Aplicación al mapa
        • 7.4.1 Gestión de las baldosas
        • 7.4.2 Implementación del mapa
        • 7.4.3 Programa principal
      • 7.5 Comparación del rendimiento
    • 8. Resumen
  • Algoritmos genéticos
    • 1. Presentación del capítulo
    • 2. Evolución biológica
      • 2.1 El concepto de evolución
      • 2.2 Los causas de las mutaciones
      • 2.3 El soporte de esta información: los factores
      • 2.4 Los factores del código genético
      • 2.5 El “ciclo de la vida“
    • 3. Evolución artificial
      • 3.1 Principios
      • 3.2 Convergencia
      • 3.3 Ejemplo
        • 3.3.1 Juego del Mastermind
        • 3.3.2 Creación de la población inicial
        • 3.3.3 Función de evaluación
        • 3.3.4 Fase de reproducción
        • 3.3.5 Supervivencia y encadenamiento de las generaciones
        • 3.3.6 Terminación del algoritmo
    • 4. Primeras fases del algoritmo
      • 4.1 Elección de las representaciones
        • 4.1.1 Población e individuos
        • 4.1.2 Genes
        • 4.1.3 Casos complejos
      • 4.2 Inicialización de la población inicial
      • 4.3 Evaluación de los individuos
    • 5. Creación de las generaciones siguientes
      • 5.1 Selección de las padres
      • 5.2 Reproducción
        • 5.2.1 Crossover
        • 5.2.2 Mutación
      • 5.3 Supervivencia
      • 5.4 Terminación
    • 6. Coevolución
    • 7. Dominios de aplicación
    • 8. Implementación
      • 8.1 Implementación genérica de un algoritmo
        • 8.1.1 Especificaciones
        • 8.1.2 Argumentos
        • 8.1.3 Individuos y genes
        • 8.1.4 IHM
        • 8.1.5 Proceso evolutivo
      • 8.2 Utilización para el viajante de comercio
        • 8.2.1 Presentación del problema
        • 8.2.2 Entorno
        • 8.2.3 Genes
        • 8.2.4 Individuos
        • 8.2.5 Programa principal
        • 8.2.6 Resultados
      • 8.3 Utilización para la resolución de un laberinto
        • 8.3.1 Presentación del problema
        • 8.3.2 Entorno
        • 8.3.3 Genes
        • 8.3.4 Individuos
        • 8.3.5 Modificación de la fábrica
        • 8.3.6 Programa principal
        • 8.3.7 Resultados
    • 9. Resumen
  • Metaheurísticos de optimización
    • 1. Presentación del capítulo
    • 2. Optimización y mínimos
      • 2.1 Ejemplos
      • 2.2 El problema de la mochila
      • 2.3 Formulación de los problemas
      • 2.4 Resolución matemática
      • 2.5 Búsqueda exhaustiva
      • 2.6 Metaheurísticos
    • 3. Algoritmos voraces
    • 4. Descenso por gradiente
    • 5. Búsqueda tabú
    • 6. Recocido simulado
    • 7. Optimización por enjambre de partículas
    • 8. Metaoptimización
    • 9. Dominios de aplicación
    • 10. Implementación
      • 10.1 Clases genéricas
      • 10.2 Implementación de los distintos algoritmos
        • 10.2.1 Algoritmo voraz
        • 10.2.2 Descenso por gradiente
        • 10.2.3 Búsqueda tabú
        • 10.2.4 Recocido simulado
        • 10.2.5 Optimización por enjambre de partículas
      • 10.3 Resolución del problema de la mochila
        • 10.3.1 Implementación del problema
        • 10.3.2 Algoritmo voraz
        • 10.3.3 Descenso por gradiente
        • 10.3.4 Búsqueda tabú
        • 10.3.5 Recocido simulado
        • 10.3.6 Optimización por enjambre de partículas
        • 10.3.7 Programa principal
      • 10.4 Resultados obtenidos
    • 11. Resumen
  • Sistemas multiagentes
    • 1. Presentación del capítulo
    • 2. Origen biológico
      • 2.1 Las abejas y la danza
      • 2.2 Las termitas y la ingeniería civil
      • 2.3 Las hormigas y la optimización de caminos
      • 2.4 Inteligencia social
    • 3. Sistemas multiagentes
      • 3.1 El entorno
      • 3.2 Los objetos
      • 3.3 Los agentes
    • 4. Clasificación de los agentes
      • 4.1 Percepción del mundo
      • 4.2 Toma de decisiones
      • 4.3 Cooperación y comunicación
      • 4.4 Capacidad del agente
    • 5. Principales algoritmos
      • 5.1 Algoritmos de manadas
      • 5.2 Optimización por colonia de hormigas
      • 5.3 Sistemas inmunitarios artificiales
      • 5.4 Autómatas celulares
    • 6. Dominios de aplicación
      • 6.1 Simulación de multitudes
      • 6.2 Planificación
      • 6.3 Fenómenos complejos
      • 6.4 Otros dominios
    • 7. Implementación
      • 7.1 Banco de peces 2D
        • 7.1.1 Los objetos del mundo y las zonas que es preciso evitar
        • 7.1.2 Los agentes-peces
        • 7.1.3 El océano
        • 7.1.4 La aplicación gráfica
        • 7.1.5 Resultados obtenidos
      • 7.2 Recogida selectiva
        • 7.2.1 Los residuos
        • 7.2.2 Los agentes limpiadores
        • 7.2.3 El entorno
        • 7.2.4 La aplicación gráfica
        • 7.2.5 Resultados obtenidos
      • 7.3 El juego de la vida
        • 7.3.1 La malla
        • 7.3.2 La aplicación gráfica
        • 7.3.3 Resultados obtenidos
    • 8. Resumen
  • Redes neuronales
    • 1. Presentación del capítulo
    • 2. Origen biológico
    • 3. Machine Learning
      • 3.1 Formas de aprendizaje y ejemplos
        • 3.1.1 Aprendizaje no supervisado
        • 3.1.2 Aprendizaje supervisado
        • 3.1.3 Aprendizaje por refuerzo
      • 3.2 Regresión y algoritmo de regresión lineal
      • 3.3 Clasificación y algoritmo de separación
    • 4. Neurona formal y perceptrón
      • 4.1 Principio
      • 4.2 Red de tipo "perceptrón"
      • 4.3 Funciones de agregación y activación
        • 4.3.1 Función de agregación
        • 4.3.2 Función de activación
      • 4.4 Ejemplo de red
      • 4.5 Aprendizaje
    • 5. Red feed-forward
      • 5.1 Red con capa oculta
      • 5.2 Aprendizaje por retropropagación del gradiente
      • 5.3 Sobre-aprendizaje
      • 5.4 Mejoras del algoritmo
        • 5.4.1 Batch, mini-batch y gradiente estocástico
        • 5.4.2 Regularización
        • 5.4.3 Dropout
        • 5.4.4 Variación del algoritmo de descenso por gradiente
        • 5.4.5 Creación de nuevos datos: data augmentation
    • 6. Otras arquitecturas
      • 6.1 Red de neuronas con consolación
      • 6.2 Mapas de Kohonen
      • 6.3 Red de neuronas recurrentes
      • 6.4 Red de Hopfield
    • 7. Dominios de aplicación
      • 7.1 Reconocimiento de patterns
      • 7.2 Estimación de funciones
      • 7.3 Creación de comportamientos
      • 7.4 Aplicaciones actuales
    • 8. Implementación
      • 8.1 Puntos y conjuntos de puntos
      • 8.2 Neurona
      • 8.3 Red de neuronas
      • 8.4 Interface hombre-máquina
      • 8.5 Sistema completo
      • 8.6 Programa principal
      • 8.7 Aplicaciones
        • 8.7.1 Aplicacion del XOR
        • 8.7.2 Aplicacion en Abalone
        • 8.7.3 Mejoras posibles
    • 9. Resumen
  • Webgrafía
    • 1. ¿ Por qué una webgrafía ?
    • 2. Sistemas expertos
    • 3. Lógica difusa
    • 4. Búsqueda de rutas
    • 5. Algoritmos genéticos
    • 6. Metaheurísticos
    • 7. Sistemas multiagentes
    • 8. Redes neuronales
  • Anexo
    • 1. Instalación de SWI-Prolog
    • 2. Uso de SWI-Prolog en Windows
    • índice

Autor

Virginie MATHIVETMás información

Tras obtener un diploma en ingeniería en el INSA y un DEA en "Documentos, Imágenes y Sistemas de Información y Comunicaciones", Virginie MATHIVET realizó su tesis doctoral en Inteligencia Artificial en el laboratorio LIRIS, dedicada a los algoritmos genéticos y las redes neuronales. Tras enseñar inteligencia artificial, robótica y asignaturas vinculadas al desarrollo durante más de 10 años, en la actualidad dirige el departamento de I+D en TeamWork SI.

Características

  • Nivel Iniciado a Medio
  • Número de páginas 500 páginas
  • Publicación septiembre 2019
    • Encuadernación rústica - 17 x 21 cm
    • ISBN: 978-2-409-02084-1
    • EAN: 9782409020841
    • Ref. ENI: DPT2JINT
  • Nivel Iniciado a Medio
  • Publicación septiembre 2019
    • HTML
    • ISBN: 978-2-409-02085-8
    • EAN: 9782409020858
    • Ref. ENI: LNDPT2JINT

Descargas

Al completar este formulario, acepta recibir información y comunicaciones comerciales sobre nuestros productos y servicios. Puede darse de baja de nuestra newsletter en cualquier momento. Si desea conocer más información acerca de nuestra política de protección de datos, pulse aquí.
  • Descargar los ejemplos del libro (263 Ko)