Buscar este blog

lunes, 24 de febrero de 2014

Computación evolutiva, programación genética, algoritmos genéticos y meméticos

Computación Evolutiva

Introducción

Yo al igual que Dios no juego al azar ni creo en la casualidad” V de Vendetta
La naturaleza encuentra brillantes soluciones a los problemas mediante la evolución continuada de las especies. Ligeras variaciones aleatorias en los genes de los descendientes, dan lugar a individuos con diferente capacidad de adaptación a su entorno. Primando la reproducción de los mejor adaptados, la especie evoluciona a formas cada vez más eficientes para sobrevivir en su entorno.
La computación evolutiva es una rama de la inteligencia artificial utilizada principalmente en problemas con espacios de búsqueda extensos y no lineales, en donde otros métodos no son capaces de encontrar soluciones en un tiempo razonable. Ésta toma su inspiración en los procesos naturales de la evolución, el hecho de que muchos científicos hayan elegido a la evolución natural como medio de inspiración para la creación de algoritmos no es nada sorprendente,  ya que el poder de la evolución (la forma en la que ésta se manifiesta )  es evidente en todas las especies del planeta. Este tipo de computación ayuda a la resolución de problemas en los que su espacio de búsqueda es tan amplio que es imposible poder abarcarlo todo para entregar la solución óptima.
La evolución natural puede ser vista de la siguiente manera: se tiene un medio ambiente con una cierta población de individuos  que intentan sobrevivir y reproducirse en dicho medio. La calidad (fitness) de estos individuos está dada por su medio ambiente, en donde, los mejores individuos (los más aptos) son aquellos que logran el objetivo de adaptarse al medio ambiente y por tanto reproducirse, generando con esto una descendencia capaz de adaptarse mejor al medio que sus predecesores.
La idea original de la computación evolutiva es intentar emular a la evolución natural, en  donde,  la calidad de los individuos en un medio ambiente es generada a través de una función, normalmente llamada función de fitness, los individuos son soluciones completas generadas normalmente al azar  y se evalúan a modo de que los mejores individuos sean capaz de reproducirse y dejar descendencia (semillas o nuevas soluciones posibles), las cuales a su vez pasarán por la misma función de calidad para ver quienes podrán reproducirse en una futura generación y el proceso se repite hasta cumplir con una condición de paro.
La computación evolutiva ofrece la posibilidad de resolver  problemas cuyo espacio de búsqueda sea muy complejo o tenga demasiados óptimos locales en los cuales los algoritmos tradicionales converjan demasiado rápido en una solución factible.

Historia de la computación evolutiva

            La idea básica de aplicar los principios darwinianos para la automatización de solución de problemas complejos data de los años 40. Ya en 1948 Alan Turing propuso “la búsqueda de la evolución genética” y por 1962 Bremermann ya había realizado experimentos acerca de la “optimización de la evolución y la recombinación”.

Los primeros ejemplos de algoritmos genéticos aparecieron a principios de los años 60, programados en computadoras por biólogos evolutivos que buscaban explícitamente realizar modelos de aspectos de la evolución natural. A ninguno de ellos se le ocurrió que esta estrategia podría aplicarse de manera más general para la solución de diversas índoles, pero ese reconocimiento no tardaría en llegar, de hecho en palabras de Mitchell[35] “La computación evolutiva estaba definitivamente en el aire en los días formativos de la computadora electrónica”.
En 1962 H.J. Bremermann había desarrollado  algoritmos inspirados en la evolución para optimización de funciones y aprendizaje automático, pero sus trabajos generaron poca reacción. En 1965 surgió un desarrollo más exitoso, cuando Ingo Rechenberg y Schwefel dieron a conocer lo que llamaron “estrategias evolutivas” [23,24]. En esta técnica no había población ni cruzamiento; un padre mutaba para producir un descendiente, y se conservaba el mejor de los dos, convirtiéndose en el padre de la siguiente ronda de mutación. Versiones posteriores introdujeron la idea de población.
El siguiente desarrollo importante en el campo vino en 1966, cuando L.J. Fogel, A.J. Owens y M.J. Walsh[19,20]  introdujeron en América una técnica que llamaron programación evolutiva. En este método, las soluciones candidatas para los problemas se representaban como máquinas de estado finito sencillas; al igual que en la estrategia evolutiva de Rechenberg, su algoritmo funcionaba mutando aleatoriamente una de estas máquinas simuladas y conservando la mejor de las dos. También al igual que las estrategias evolutivas, hoy en día existe una formulación más amplia de la técnica de programación evolutiva que todavía es un área de investigación en curso. Sin embargo, lo que todavía faltaba en estas dos metodologías era el reconocimiento de la importancia del cruzamiento.
En 1962, el trabajo de John Holland [21,22] estableció las bases para desarrollos posteriores; y lo que es más importante, Holland fue también el primero en proponer explícitamente el cruzamiento y otros operadores de recombinación. Sin embargo, el trabajo fundamental en el campo de los algoritmos genéticos apareció en 1975, con la publicación del libro “Adaptation in natural and artificial systems'' por parte de Holland. Este libro fue el primero en presentar sistemática y rigurosamente el concepto de sistemas digitales adaptativos utilizando la mutación, la selección y el cruzamiento, simulando el proceso de la evolución biológica como estrategia para resolver problemas. El libro también intentó colocar a los algoritmos genéticos sobre una base teórica firme introduciendo el concepto de esquema [35,36]. Ese mismo año, la importante tesis de Kenneth De Jong “ Analisys of the behaviour of a class of genetic adaptative system” estableció el potencial de los AGs demostrando que podían desenvolverse bien en una gran variedad de funciones de prueba, incluyendo paisajes de búsqueda ruidosos, discontinuos y multimodales[30] .
Estos trabajos establecieron un interés más generalizado en la computación evolutiva. Entre principios y mediados de los 80, los algoritmos genéticos se estaban aplicando en una amplia variedad de áreas, desde problemas matemáticos abstractos como el bin-packing y la coloración de grafos hasta asuntos tangibles de ingeniería como el control de flujo en una línea de ensamble, reconocimiento, clasificación de patrones y optimización estructural etc.[30].
Al principio, estas aplicaciones eran principalmente teóricas, sin embargo, al seguir proliferando la investigación, los algoritmos genéticos migraron hacia el sector comercial, al cobrar importancia con el crecimiento exponencial de la potencia de computación y el desarrollo de Internet. Hoy en día, la computación evolutiva es un campo floreciente, y los algoritmos genéticos están resolviendo problemas de interés cotidiano en áreas de estudio tan diversas como la predicción en la bolsa y la planificación de la cartera de valores, ingeniería aeroespacial, diseño de microchips, bioquímica y biología molecular, diseño de horarios en aeropuertos y líneas de montaje y en el corazón de todo esto se halla nada más que la simple y poderosa teoría de Charles Darwin: que el azar en la variación, junto con la ley de la selección, es una técnica de resolución de problemas de inmenso poder y de aplicación casi ilimitada.

Características generales de los algoritmos evolutivos

            La idea básica de todas las técnicas de los algoritmos evolutivos es la siguiente:
  • ·      Obtener una población inicial de individuos (soluciones factibles).
  •      Determinar un medio ambiente para la población que cause una selección natural.
  • ·      Determinar una función de calidad para los individuos dentro del medio ambiente.
La idea detrás de ésto es cruzar y mutar a los individuos, en la cruza se seleccionan a dos o mas individuos (padres), se toman características de los mismos y se generan nuevos individuos a partir de la combinación de las características de los padres. En la mutación se toma a un individuo mediante cierta probabilidad y se altera su código ligeramente, hasta generar a un nuevo individuo. Estos parámetros permiten entre otras cosas crear diversidad (por medio de la mutación) y explotar soluciones factibles para obtener una mejor solución (por medio de la cruza).
Cabe mencionar que el proceso de mutación y cruza es estocástico ya que al seleccionar a los individuos se requiere de la generación de números aleatorios, sin embargo, el proceso de seleccionar a los individuos más aptos mediante técnicas como ruleta o torneo sesga la búsqueda hacia zonas prometedoras del espacio de búsqueda.
La Figura  muestra el  pseudocódigo general de un algoritmo evolutivo:
Es fácil ver que este pseudocódigo cae dentro de la categoría de los algoritmos generate-and-test. La función de evaluación representa una estimación heurística de la solución de calidad y el proceso de búsqueda es guiada por la variación  de los operadores. Los algoritmos evolutivos poseen un número de partes que pueden ayudarlo a posicionarlos, como se menciono antes dentro de los métodos generate-and-test  y estos son:
  • ·      Son basados en población, procesan varias soluciones candidato simultáneamente.
  • ·      Usan la recombinación para mezclar la información de varios candidatos.
  • ·      Son estocásticos.
Su esquema general se muestra en la Figura:

La representación de los candidatos puede variar significativamente, siendo las mas comunes:
  • ·      Cadenas de String de un cierto alfabeto (algoritmos genéticos)
  • ·      Vectores con valores reales(Estrategias evolutivas)
  • ·      Máquinas de estado finito(Programación evolutiva)
  • ·      Árboles(Programación genética)
Sin embargo, existen representaciones alternativas dependiendo del problema que se quiere resolver.

Componentes de los algoritmos evolutivos

            Los componentes principales de los algoritmos evolutivos son los siguientes:

Representación

El primer paso de un algoritmo evolutivo es construir los candidatos. Es necesario pasar del contexto original del problema a su espacio de  soluciónes donde la evolución toma su lugar, esto es , construir el fenotipo y el genotipo.
Los objetos que forman las soluciones posibles del problema son llamados fenotipos, mientras que su codificación, es decir, los individuos con los cuales trabaja el algoritmo evolutivo son llamados genotipos. El proceso de transformar un fenotipo a genotipo se le llama codificación  y al proceso contrario (genotipo - fenotipo) se le conoce como decodificación, tanto al genotipo como al fenotipo se les conoce como representaciones de una solución. La Figura 4 muestra un esquema de lo anterior.

Función de calidad

            El objetivo de la función de calidad es representar los requerimientos para la adaptación de los individuos en el medio ambiente. Esta función es asignada a las representaciones de los individuos (sea genotípica o fenotípica) para determinar su calidad dentro del medio ambiente y asignar su probabilidad de supervivencia o cruza dentro de la población.

Población

            La población es un conjunto de soluciones (genotipos o fenotipos) en un medio ambiente, y es la unidad que evoluciona en los algoritmos evolutivos, ya que los individuos son solo elementos estáticos que no cambian o se adaptan, la evolución se da al pasar de generación en generación, aunque , por supuesto , un número mayor de individuos otorga una mayor diversidad en el espacio de solución de un problema.

Mecanismo de selección de padres

            Este mecanismo es el encargado de seleccionar los individuos que podrán generar descendencia. Normalmente los individuos con una mayor calidad (definida mediante la función de calidad) tienen mayor posibilidad de ser elegidos, sin embargo, si sólo los de mejor calidad son elegidos se puede presentar la situación de encontrarse atrapado en algún óptimo local, esto es, puede que el algoritmo pierda diversidad.

Mecanismo de selección de supervivientes

            Similar al mecanismo de selección de padres, con la diferencia del momento en que operan, ya que mientras la selección de padres actúa antes de generar la descendencia, el mecanismo de supervivencia actúa después de generada la descendencia y es la encargada de elegir a los individuos de mejor calidad (aunque depende del algoritmo evolutivo adaptado) para que pasen a la siguiente generación.

Operadores de variación

            Su objetivo es crear nueva descendencia a partir de una anterior y con esto generar nuevas soluciones candidato. Como tal tenemos los siguientes:

Mutación

           
            Es una pequeña variación impuesta a un individuo, este operador es siempre estocástico y su objetivo radica en brindar una mayor diversidad a la población.

Recombinación o cruza

            Es el proceso de combinar dos o más individuos para generar nuevos con características similares a sus predecesores, a este proceso se le llama descendencia. Al igual que la mutación, este operador es estocástico, aunque la selección de los individuos a cruzarse puede variar, ya sea por la implementación de una ruleta de probabilidades, el uso de un torneo, etc.
El objetivo es explotar varias soluciones dadas al combinar individuos y generar nuevos.

Inicialización

            Es la primera población, normalmente generada por individuos aleatorios, sin embargo, puede ser que se genere con base en una estrategia implementada para ayudar al algoritmo en el proceso de búsqueda. 

Condición de término

            Existen varias condiciones de terminación para los algoritmos evolutivos, entre las más populares tenemos :
  • ·      El máximo tiempo de procesamiento permitido por el CPU.
  • ·      Por un periodo de tiempo determinado.
  • ·      Por un determinado número de generaciones (ciclos del algoritmo).
  • ·      El valor de la función de aptitud de la población alcanzó el valor de un umbral (no se detectan mejoras significativas).
  • ·      La función de calidad ha llegado a su límite (se encontró al mejor individuo o a un óptimo deseable).
Una vez terminado el algoritmo se procede normalmente a devolver aquellos individuos que maximicen  o minimicen la función de calidad según sea el caso deseado.

 

Clasificación de la computación evolutiva

Existen diferentes paradigmas dentro de la computación evolutiva, la mayoría de ellos difiere generalmente en la representación de los individuos, aunque otras lo hacen en la forma y utilización de los componentes del algoritmo evolutivo. Las principales se presentan a continuación.

Algoritmos Genéticos

            Los algoritmos genéticos fueron inicialmente concebidos por Holland como resultado de su estudio acerca del comportamiento adaptativo [28] y plasmados en su libro “Adaptation in natural and artificial system”.
Los algoritmos genéticos en su versión más estricta poseen una representación binaria, una función de calidad que les permita sobrevivir en un medio ambiente y que actúe generacionalmente, deben tener una probabilidad de mutación muy baja y hacen énfasis en una cruza inspirada genéticamente.

Representación

La parte mas difícil de trabajar con este tipo de algoritmos es su representación, si bien, los algoritmos genéticos simples requieren de una representación binaria, ello no es una regla, y es posible crear representaciones diversas, entre las mas comunes están la representación usando valores enteros y de valores de punto flotante. Sin embargo ,en este tipo de representaciones se debe tener especial cuidado en que los operadores al momento de ser aplicados sobre un individuo no generen valores inválidos. Supongamos que tenemos un individuo con representación decimal y que parte del individuo codifica una dirección como Norte, Sur , Este y Oeste, el individuo codifica esto de la siguiente manera Norte = 1, Sur =2,Este =3, Oeste = 4, entonces tenemos cuatro números posibles 1-2-3-4 , sin embargo , es posible que el operador de mutación entregue un 5 ó 6 al mutar esta sección de dicho individuo.

Selección de candidatos

La selección de los candidatos tanto para cruzarse como para formar parte de la nueva generación usualmente se logra implementando ya sea una ruleta, en la cual a cada individuo le corresponde determinada porción de probabilidad dependiendo de su contribución al total de aptitud en la población Se gira la ruleta y se selecciona al individuo correspondiente, este método asegura en cierta medida que los individuos con mejor calidad serán los elegidos para reproducción. Otro método popular es implementar torneos, en los cuales se seleccionan dos o mas individuos y se elige al mejor candidato determinado por su función de calidad, en ambas metodologías el proceso se repite hasta obtener el número de individuos requeridos para reproducción.
Es común en los algoritmos genéticos conservar de generación en generación ciertos individuos con el fin de que éstos generen descendencia, normalmente se seleccionan a los mejores de la generación anterior, los cuales reemplazan a los peores de la nueva generación (determinado por la función de calidad).

Mutación

            La mutación en los algoritmos genéticos es el operador encargado de generar diversidad en la población,  cambia (muta) una parte de un individuo. Normalmente se efectúa después de la recombinación o cruza. Existen diversos tipos de mutaciones, y algunas cambian dependiendo la representación de los individuos. Dentro de las más comunes tenemos las siguientes:

·   Mutación Binaria: en representaciones binarias se toma cada bit por separado y se estima su probabilidad de mutar, si esta fue positiva, es decir, se mutará, cambiara su número de 0 a 1 ó de 1 a 0 según sea el caso.

·      Mutación Swap: En este tipo de mutación no es necesario una representación binaria como tal, simplemente se debe seleccionar dos posiciones(alelos) de un individuo aleatoriamente y se intercambian de lugar.


·      Mutación de Inserción: Parecido a la mutación swap, aquí se seleccionan dos posiciones (alelos) de un individuo aleatoriamente y se cambia la posición de uno de los allelos de tal forma que ambas estén juntas.



     Mutación Scramble: En este tipo de mutación se seleccionan dos puntos aleatoriamente, se toman todas las posiciones(allelos) del individuo que estén entre los puntos seleccionados y se revuelven.

·      Mutación de Inversión:  Aquí se seleccionan dos posiciones de un individuo, se toman todos las posiciones intermedias y se invierte su orden.

    Recombinación ó cruza

            Para muchos el más importante de los operadores en los algoritmos genéticos. La cruza es la encargada de explotar las soluciones posibles, su función es la de generar una nueva población (crear descendencia) generación tras generación. En su forma básica selecciona dos individuos (llamados padres) , toma la información de ambos y crea un nuevo individuo con partes de información de los dos individuos seleccionados con anterioridad.
    Existen diversas formas de cruzar a los individuos seleccionados, algunas inspiradas en la biología y  otras propias de la representación elegida, las más comunes son las siguientes:
 Recombinación de un punto: Aquí se selecciona un punto aleatorio de un individuo y se cambia a partir del punto determinado la información de ambos individuos seleccionados para generar exactamente otros dos individuos (descendencia).  Aquí, para el primer individuo creado se toma la primera sección del individuo seleccionado 1 (la parte antes del punto incluyendo al mismo) y la parte posterior al punto del individuo seleccionado 2, de la misma manera para generar al segundo individuo simplemente se intercambian  las posiciones tomadas.

Recombinación de N-puntos: De la misma manera que la anterior, con la diferencia de que aquí es posible seleccionar mas de un punto.
Cruza uniforme:  En este tipo de cruza se asigna una probabilidad (normalmente de 0.5) a cada parte del individuo(alelo) y se efectúa un volado, de tal manera que si gana el individuo 1, esa parte de él pasará al nuevo individuo, si pierde será el individuo 2 quien proporcione su gen. El proceso se repite para todas las partes de los individuos. Este tipo de cruza puede generar varios individuos a partir de solo dos predecesores.

      Estrategias Evolutivas

            Las estrategias evolutivas fueron inventadas en la década de 1960 por Rechenberg y Schwefel quienes estaban trabajando en la Universidad Técnica de Berlín en aplicaciones concernientes a la optimización de formas, ellos describieron un algoritmo básico llamado los dos eslabones de la estrategia evolutiva.
    Este tipo de algoritmos trabajan con una población de individuos que pertenecen al dominio de los números reales, que mediante los procesos de mutación y de recombinación evolucionan para alcanzar el óptimo de la función objetivo.
   Cada individuo de la población es una solución potencial al problema, la representación de cada individuo de la población consta de 2 tipos de variables: las variables objeto y las variables estratégicas. Las variables objeto son los posibles valores que hacen que la función objetivo alcance el óptimo global y las variables estratégicas son los parámetros mediante los que se gobierna el proceso evolutivo o, en otras palabras, las variables estratégicas indican de qué manera las variables objeto son afectadas por la mutación.
     Haciendo una analogía más precisa, el genotipo en las estrategias evolutivas es el conjunto formado por las variables objeto y las variables estratégicas y el fenotipo son las variables objeto, ya que conforme se da la variación de éstas, se percibe un mejor o peor desempeño del individuo.
     Las estrategias evolutivas pueden definirse como algoritmos evolutivos enfocados hacia la optimización paramétrica, teniendo como características principales que utilizan una representación a través de vectores reales, una selección de supervivientes determinística y operadores genéticos específicos de cruce y mutación.
     Las estrategias evolutivas pueden dividirse en dos tipos: Simples y Múltiples.
  • ·      Simples: Son consideradas como procedimientos estocásticos de optimización paramétrica con paso adaptativo. Esta característica las hace similares al recocido simulado. En este caso, se hace evolucionar un solo individuo usando únicamente a la mutación como operador genético. Son relativamente sencillas, y se denominan también estrategias evolutivas de dos miembros. Debido a que evoluciona un solo individuo a la vez, no son consideradas estrictamente como métodos evolutivos. A pesar de ser muy sencillas, son de gran utilidad práctica y han sido utilizadas, con algunas mejoras, para resolver problemas reales en diversas áreas.

  •      Múltiples: Surgen como respuesta a las debilidades de las estrategias evolutivas simples, las cuales tienden a converger hacia subóptimos. En las estrategias evolutivas múltiples existen múltiples individuos (población), y se producen en cada generación varios nuevos individuos, usando los operadores de mutación y cruza. En cuanto a los criterios de ·      reemplazo, siempre se usa un esquema determinístico pudiéndose utilizar una estrategia de inserción o de inclusión.

      Mutación

            Es el operador principal de las estrategias evolutivas, Realiza un cambio en los valores de las variables de los individuos añadiendo ruido aleatorio obtenido mediante una función de distribución Normal. Las desviaciones típicas a aplicar se encuentran dentro del mismo individuo (son calculadas a partir del individuo mismo) y coevolucionan junto con la solución.

     Recombinación o cruza

            En las estrategias evolutivas el cruce se realiza de una forma literalmente sencilla, simplemente se toman dos individuos y a partir de ellos se generara un nuevo individuo, el cual en cada casilla del arreglo de números reales se coloca el promedio del valor que sus predecesores tienen en la misma posición.

    Programación Evolutiva

            La programación evolutiva fue desarrollada originalmente para simular la evolución como un proceso de aprendizaje para poder generar inteligencia artificial. Esta rama de la computación evolutiva es prácticamente una variación de los algoritmos genéticos, donde el cambio más significativo es la representación de los individuos, puesto que aquí cada individuo de la población esta formado por una máquina de estado finito. 
Desarrollada en la década de 1960 por Lawrence J. Fogel [20] , enfatiza los nexos de comportamiento entre padres e hijos, en vez de buscar emular a los operadores genéticos específicos[31]. Su objetivo principal es construir individuos que sean capaces de reconocer un cierto conjunto de entradas y proporcionar salidas correspondientes a las mismas.
El algoritmo básico de la programación evolutiva es el siguiente :
  • ·      Generar aleatoriamente una población inicial.
  • ·      Aplicar mutación a los individuos de la población.
  • ·      Se calcula la aptitud de cada hijo y se usa un proceso de selección de supervivientes mediante torneo (normalmente estocástico) para determinar cuales serán las soluciones que se retendrán.
  • ·      Se repite el proceso hasta cumplir con una condición de paro
Es importante destacar que este tipo de algoritmos no usan el operador de recombinación o cruza puesto que son una abstracción de la evolución a nivel de las especies [31] y parten de la idea de que individuos de diferentes especies pueden cruzarse.

Mutación

           
Existen 5 formas posibles de mutar a un individuo cuya representación sea una máquina de estado finito, estas son las siguientes:
  • ·      Cambiar un símbolo de salida.
  • ·      Cambiar una transición.
  • ·      Agregar un estado.
  • ·      Borrar un estado.
  • ·      Cambiar el estado inicial.

Programación Genética

            Este tipo de algoritmos son una variación de los algoritmos genéticos, en donde su diferencia mas sustancial es la representación de los individuos, puesto que aquí cada individuo es representado por un árbol. El objetivo principal de esta técnica de la computación evolutiva es la evolución automática de programas usando ideas basadas en la selección natural, permitiendo realizar regresión simbólica, esto es, permiten obtener además de un dato numérico predictivo, una expresión matemática en función de las variables de entrada[32].
Básicamente son una metodología automatizada inspirada por la evolución biológica para encontrar programas informáticos que mejor realicen una tarea definida por el usuario. Es por ello que son una técnica de aprendizaje de máquina particular que utiliza un algoritmo evolutivo para optimizar una población de programas informáticos según una función de calidad  determinada por la habilidad de un programa para realizar una tarea computacional dada.
Tomando como base el tipo de representación de los individuos dentro de esta técnica es fácil entender su gran potencial, por ejemplo tomando en cuenta la siguiente fórmula lógica : 
 su representación se muestra en la Figura: 
Incluso es fácil representar algún programa informático, por ejemplo , tomando como base el siguiente algoritmo :

Int i = 1
While (i< 20)
            i = i+1;

su representación se muestra en la Figura:

Mutación

            El operador de mutación empleado en este paradigma no difiere en gran medida al de los algoritmos genéticos, el mecanismo mas usual es seleccionar a un individuo con base en cierta probabilidad, posteriormente se seleccionara un nodo de ese individuo y se verificará su probabilidad de mutación del nodo específico, si este nodo será mutado se prosigue a realizar un cambio aleatorio en el nodo seleccionado, cuidando que esta mutación no incumpla con las normas del individuo, por ejemplo , no genere ciclos infinitos en el caso de ser un programa, o tenga cierta lógica, por ejemplo no cambie una función de tal manera que pregunte si X == X etc.

Recombinación o cruza

La idea básica de este operador en la programación genética es seleccionar dos individuos(padres), posteriormente para cada individuo seleccionar un nodo aleatoriamente, una ves teniendo esto se intercambia la información de los nodos, generando con esto dos nuevos individuos(hijos).

Programación Memética

            Los algoritmos meméticos son técnicas de optimización que combinan sinérgicamente la búsqueda basada en poblaciones (algoritmos evolutivos) y las búsquedas locales (Tabú, Recosido Simulado etc.). Su idea fundamental es mantener una cierta población mediante los operadores tradicionales de los algoritmos evolutivos(cruza y mutación) e ir evolucionando estos individuos mediante mejoras significativas a cada uno con búsquedas locales, es aquí donde se diferencian  de los algoritmos genéticos, puesto que en los algoritmos meméticos el individuo evoluciona constantemente al aplicarse un procedimiento meta heurístico en él, dado que tienen la capacidad de evolucionar por sí solo mediante una búsqueda local. Los diseñadores de algoritmos meméticos prefieren denominarle agente a un individuo. La Tabla  muestra las diferencias entre un algoritmo genético y un memético[33]
La primera diferencia significativa entre estas dos técnicas de la computación evolutiva es la codificación de los individuos, puesto que en los algoritmos genéticos se parte de cadenas que mediante codificación se obtiene una solución (fenotipo y genotipo), sin embargo, ésta no es una restricción para los algoritmos meméticos, ya que éstos se basan en una experiencia de la persona que los esta creando. Entonces es posible ajustar cualquier tipo de modelo como individuo, en ocasiones, los individuos pueden tener algún programa o mejora significativa en ellos mismos.
En el caso de la mutación, para los demás algoritmos evolutivos esta es un proceso estocástico, sin embargo, en los meméticos se prefiere sea una mutación especializada en el problema, la cual deberá modificar a un agente (individuo) significativamente con la idea de que mejore su calidad.
El operador de cruza también se ve afectado, puesto que en los algoritmos meméticos es guiada, es decir, se pretende cruzar individuos de tal forma que su descendiente obtenga específicamente lo mejor de ambos, motivo por el cual su desarrollo y modelo depende exclusivamente del problema en cuestión, el ejemplo mas común de esto es la cruza EAX[34] (Edge Assembly Crossover) diseñada específicamente para problemas del agente viajero.
La diferencia más significativa es la aplicación de búsquedas locales para mejorar a los agentes (individuos) de la población, pues es la principal fuerza de los algoritmos meméticos, ya que sus agentes son capaces de evolucionar individualmente, al mismo tiempo que evoluciona la población gracias a los operadores de cruza y mutación. Existen diversos momentos en los cuales pueden aplicarse los operadores de búsqueda locales, normalmente se prefiere sea después de aplicar los operadores de mutación y cruza. Sin embargo, puede ocurrir al generar la población inicial, o inclusive al terminar el ciclo de generaciones. En este último caso se dice que trabaja como si un algoritmo genético diera buenas semillas a un algoritmo de búsqueda local.

Características generales

  • Los algoritmos meméticos son algoritmos híbridos que incorporan conocimiento y combinan estrategias de búsqueda.
  • Se potencia al mecanismo cooperativo de los algoritmos evolutivos incorporando un mecanismo guiado de competición.
  •  Los individuos tienen la potencialidad de intentar mejoras, y compiten entre sí por propagar su descendencia.
  • En la terminología de los algoritmos meméticos, a los individuos se los denomina agentes.
  • La operativa de un algoritmo memético es la de un algoritmo evolutivo tradicional, con el agregado de una búsqueda local.

Estructura

La Figura  muestra la estructura general de un algoritmo memético
Aquí se puede observar las diferentes etapas en las cuales puede efectuarse la búsqueda local. Cabe señalar que cuando aparece después de los operadores ya sea de cruza o de mutación, normalmente no ocurre generación tras generación, en vez de ésto se prefiere actúe cada determinado periodo, el cual puede ser determinado por un número fijo de generaciones o por algún otro motivo tal como la detección de estancamiento en las mejoras de algunos agentes (individuos) o en la población en general.
La Figura  muestra el pseudocódigo de un algoritmo memético en su aspecto mas general: 

Bibliografía

[1]Wren, A., Scheduling, Timetabling and Rostering - a Special Relationship, Lecture Notes in Computer Science 1153. Springer-Verlag, Berlín, Heidelberg, New York, págs. 46-75,1996.
[2] Metaheuristics Networks “International Timetabling Competition”  http://www.idsia.ch/Files/ttcomp2002/  consultado el 16-10-2010.
[3] Schaerf, Andrea, A survey of automated Timetabling, Technical Report CS-R9567, CWI - Centrum voor Wiskunde en Informática, 1995.
[4] John Fredy Franco Baquero, Eliana Mirledy Toro Ocampo, Ramón Alfonso Gallego Rendón, Problema de asignación óptima de salones resuelto con Búsqueda tabú, INGENIERÍA & DESARROLLO, Número 24 Julio-diciembre, 2008 ISSN: 0122-3461
[5] White, G. M. Chan P. W., Towards the construction of optimal examination timetables. INFOR 17 (1979), pp. 219–229.
[6] Fifher, J. G., Shier, D. R., A heuristic procedure for large-scale examination scheduling problems. Technical Report 417, Department of Mathematical Sciences, Clemson University, 1983.
[7] White, G. M., “Constrained satisfaction, not so constrained satisfaction and the Timetabling problem”. In: A Plenary Talk in the Proceedings of the 3rd International Conference on the Practice and Theory of Automated Timetabling, University of Applied Sciences, Konstanz, Aug., 16–18, 2000 (2000), pp. 32–47.
[8]Burke,E.K.,Newall,J.P.,Weare,R.F.,1996b.AmemeticalgorithmforUniversity exam Timetabling. In: Burke and Ross (1996) pp. 241–250.
[9] Schaerf, Andrea, A survey of automated Timetabling, Technical Report CS-R9567, CWI - Centrum voor Wiskunde en Informática, 1995.
[10] Carter, M. W., Laporte, G., Recent developments in practical examination Timetabling. In: Burke and Ross, pp. 3–21, 1996.
[11] José Ma. Mejía Caballero , Asignación de horarios de clases universitarias mediante algoritmos, Universidad del norte división de postgrados e investigaciones en ingeniería, maestría en ingeniería industrial, Barranquilla-atlántico 2008, tesis de grado
[12]M. Carrasco and M. Pato. “A Multiobjective Genetic Algorithm for the Class/Teacher Timetabling Problem”. Lecture Notes in Computer Science. Vol. 2079, pp. 3-17. 2001
[13] docCF http://www.grupocfdeveloper.com/ consultado el 16-10-2010
[15] GES http://www.grupoges.com.mx/ consultado el 16-10-2010
[16] PATAT,”International Timetabling Competition” http://www.cs.qub.ac.uk/itc2007/ consultado el 16-10-2010
[17] Facultad de Psicología, Universidad Veracruzana http://www.uv.mx/facpsi/ consultado el 16-10-2010
[18] A. E. Eiben, J.E. Smith , Introducction to evolutionary computing, natural computing series, springer.
[19] L.J. Fogel, P.J. Angeline, T. Bäck, Eda. Proceedings of the 5th Annual Conference on Evolutionary Programming, MIT Press , Cambridge, MA, 1996.
[20] L.J. Fogel, A.J. Owens, M.J. Walsh. Artificial Intelligence through Simulated Evolution, Wiley, Chichester, UK, 1966.
[21] J.H. Holland. Genetic algorithms and the optimal allocation of trials. SIAM J. Of Computing, 2pp.88-105, 1973.
[22]J.H. Holland. Adaption in Natural and artificial Systems. MIT Press, Cambridge, MA, 1992. 1st. Edition: 1975, The University of Michigan Press, Ann Arbor.
[23] I. Rechenberg. Evolution strategie: optimierung Technisher Systeme nach Prinzipien des Biologischen Evolution. Fromman-Hozlboog Verlag, Stuttgart, 1973.
[24] H.P. Schwefel. Evolution and Optimum Seeking. Wiley , New York 1995.
[25] T. Bäck Evolutionary Algorithms in Theory and Practice. Oxford University Press, Oxford. UK, 1996.
[26] T. Bäck, D.B. Fogel, Z. Michalewicz, Eds. Evolutionary Computating 1: Basic Algorithms and Operators . Institute of Physics Publishing. Bristol. 2000.
[27] T. Bäck , D.B. Fogel, Z. Michalewicz, Eds. Evolutionary Computation 2: Advance Algorithms and Operators. Institute of Physics Publishing, Bristol, 2000.
[28] A.E.Eiben, Z. Michaelewicz, Eds. Evolutionary Computation. IOS Press, 1998.
[29] Z. Michalewicz. Genetic Algorithms + Data Structures = Evolution Programs, springer, Berlín, Heidelberg, New York, 3rd edn., 1996.
[30] David E. Goldberg, Genetic Algoritms in Search Optimization & Machine Learning, Addison-Wesley Publishing Company.
[31] Santana Quintero,Luis Vicente, Coello Coello Carlos A. ,Una introducción a la computación evolutiva y algunas de sus aplicaciones en economia y finanzas, Revista de métodos cuantitativos para la economía y la empresa paginas 3-25, diciembre 2006.
[32] Pervys Rengifo Rengifo, Leonardo Jiménez, Programación Genética, Fundación universitaria Konrad Lorenz, Facultad de matemáticas e ingenierías , ingeniería en sistemas.
[33]Pablo Moscato, Carlos Cotta, An Introduction to memetic Algorithms, Inteligencia artificial, Revista iberoamericana de inteligencia artificial, No. 19 ,pp 131-148, ISSN: 1137-3601.
[34] Yuichi Nagata, Shigenubo Kobayashi, An analysis of Edge Assembly Crossover for the Traveling Salesman Problem,0-7803-5731-0/99 1999 IEEE.
[35] Mitchell, Melanie. An Introduction to Genetic Algorithms. MIT Press, 1996.
[36] Haupt, Randy y Sue Ellen Haupt. Practical Genetic Algorithms. John Wiley & Sons, 1998.
[37] Baumelt Zdenek · Sucha Premysl · Hanz alek Zdenek An Evolutionary Algorithm in a Multistage Approach for an Employee Rostering Problem with a High Diversity of Shifts PATAT 2010
[38] Burke, E.K., Cowling, P., De Causmaecker, P. and Berghe, G.V.: A Memetic Approach to the Nurse Rostering Problem. Applied Intelligence 15, 199-214 (2001)
[39] http://www.asap.cs.nott.ac.uk/ASAP_Brochure20072008.pdf consultado el 12 de enero del 2011
[40] http://www.cs.qub.ac.uk/itc2007/winner/finalorder.htm consultado el 12 de enero del 2011
[41] Ms.C: Arsenio Celorrio Sánchez, Pruebas de hipótesis no paramétricas de K-S, http://www.monografias.com/trabajos11/docima/docima.shtml, consultado el 15 de enero del  2011.
[42] Hart, William E.; Krasnogor, Natalio; Smith, J.E. (Eds.). Recent Advance in Memetic Algoritmics, Studies in Fuzziness and Soft Computing, Vol. 166, ISBN 978-3-540-22904-9

Inteligencia Artificial en la educación

Inteligencia Artificial en la educación

1.1 --- Sistemas de tutores inteligentes (ITS por sus siglas en ingles)

Bueno los sistemas tutores inteligentes basan su objetivo en poder transmitir la enseñanza de algún tópico en particular a través de sistemas se software, sin embargo, a diferencia del ilearning en el cual simplemente se muestra la información y se guarda conocimiento de las horas que ha estado un estudiante en el sistema y de vez en cuando se crean exámenes para calificar a alumno, en los ITS se lleva el conocimiento a que esto no sea supervisado al 100% con un humano, es decir, en los ilearning simplemente es un sistema (típicamente en web) donde el alumno puede encontrar recursos, posiblemente cuente con un foro par enviar sus tareas, realizar preguntas a su profesor o hacer comentarios a sus compañeros, sin embargo, en los ITS no se requiere exista un profesor humano detrás de ellos y ademas estos deben de ser capaz de generar el conocimiento y comprende que tanto a aprendido el estudiante, si es viable mostrarle mas información si se encuentra motivado con la materia si esta confundido y debe tener la capacidad de sacarlos de un estado que lo bloquee y le impida adquirir nuevo conocimiento, y es aquí donde entra la inteligencia artificial ,la cual provee de algoritmos y técnicas para poder interpretar los estados emocionales del individuo (claro esta con el apoyo a la par de otra áreas como psicología y pedagogía) y determinar que información es la pertinente a mostrar, claro se debe tener un núcleo que sea capaz de generar el conocimiento y abstraerlo y se debe planear como mostrar esta información.
Existen varios modelos de ITS siendo el mas común el siguiente:
Aqui se pueden observar fácilmente los 4 bloques con que cuentan los ITS, estos son:
Módulo de conocimiento: Particularmente este módulo es el que almacena toda la información de una forma tal que pueda ser abstraída por algún sistema y permita que el ordenador genere conocimiento a partir de ella.
Módulo del estudiante: Este módulo es el encargado de recuperar información acerca del alumno, normalmente recupera información a través de gestos con una cámara o a través de diversos sensores como pulseras que miden conductancia cutánea etc. Este módulo se encargara de brindar la información al módulo pedagógico acerca de cómo se encuentra ele estudiante, es decir cual es su estado anímico con respecto a la materia y que tanto ha aprendido con respecto a ella, si le ha sido difícil algún tópico en particular etc.
Módulo Pedagógico: Uno de los módulos mas polémicos del ITS es el pedagógico, debido a que es el encargado de interpretar la información enviada por el módulo del estudiante , procesarla y comunicarce con el modelo del conocimiento ara abstraer la información pertinente a mostrar al estudiante, normalmente se hace uso de redes bayesianas por la practicidad que tiene estas de medir el conocimiento con porcentajes "".
Módulo de Interfaz: Para concepto de investigación este módulo es poco importante y a veces despreciado, sin embargo, en sistemas reales este requiere de gran trabajo, puesto que una ves que el modulo pedagógico envía su información, el modulo de interfaz debe visualizar la forma en que esta será presentada al estudiante, cumpliendo con el objetivo, digamos que es la parte que el estudiante ve realmente y con la única "" que interactua constantemente. Manejo "" debido a que el módulo del estudiante puedo o no interactuar con el usuario final.
Como se puede apreciar es fácil distinguir entre un simple ilearning y un ITS, debido a que en el ITS se trata de crear a un tutor el cuál ayudara al alumno a adquirir un conocimiento, intentado guiarlo, motivándolo y ayudándolo, digamos que el ilearning es una colección de libros como una biblioteca y el ITS es el profesor.
Ejemplo sencillo e incoherente de un ITS

Con objeto de que quede mas ampliado el conocimiento de lo que es un ITS intentare mostrar el ejemplo de uno, aunque cabe aclarar no desarollado, simplemente ideas ocurridas en estos momentos, pero que de alguna manera conllevan base, es decir intentaré hacer el modelo borrador de un ITS algo así como si fuese una primera reunión de trabajo.
---problemática---
Se requiere la creación de un tutor que apoye en el conocimiento de la materia de análisis de imágenes.

---Modelo del conocimiento---
Se propone la creación de una ontología que guarde toda la información pertinente así como los ejercicios propuestos, de tal manera que el sistema sea capaz de identificar que ejercicio corresponde a cada tópico y pueda crear nuevo conocimiento, para esto el sistema contara con un función en la cual el modelo crea un problema y el sistema lo resuelve antes de poder enviárselo al modelo pedagógico, los ejercicios y la información deberán estar ordenados de tal manera que se pueda medir su nivel de dificultad.
---Modelo del estudiante---
Se propone recabar la información del estudiante a través de una cámara web, en este caso se usarán los métodos ya estudiados de gesticulaciones, se creara una red neuronal entrada con una población de individuos estadísticamente significativa, estos alumnos deberán formar parte del grupo en el cual se pretende establecer el sistema ITS, la red neuronal recibirá los datos del procesamiento de imágenes y tendrá determinadas clases como motivado, frustrado, confundido y aburrido , para el experimento los alumnos serán observados cada cierto tiempo por expertos humanos que anotaran en base a sus expresiones su estado de animo, esto alimentara a manera de clases a la red neuronal y posteriormente se implantara en el modelo de estudiante la red previamente entrenada.
---Modelo Pedagógico---

El modelo pedagógico pedirá constantemente al modulo del estudiante la clase a la que pertenece actualmente el estudiante en base a la red neuronal, una ves obtenido esto el sistema construirá una red bayesiana donde influirá la clase perteneciente con la información proporcionada por el modelo del conocimiento y construirá problemas o brindará información al estudiante si es necesario.

---Modelo de interfaz---

Aquí el modelo sera web y recibirá la información que deba de mostrar al alumno así como los ejercicios propuestos por el modelo pedagógico, mostrara siempre a un asesor virtual que será alimentado por el modelo pedagógico para fomentar la confianza del estudiante y mostrara todo el tiempo tanto sus avances como los de sus compañeros si es que el modelo pedagógico lo permite.



1.2--- Motivación

Este punto se centra principalmente en la definición de la motivación, aunque esto no es concerniente a la inteligencia artificial, o al menos no es su campo mas estudiado, recordemos que los ITS requieren de varias disciplinas, entre ellas la pedagógica y la psicológica, la imagen siguiente muestra un diagrama de venn del campo concerniente a los ITS:

Pues bien debido a que la tendencia de los ITS es enfocarse en la transmision del conocimiento con mira en los aspectos motivacionales, esto es, motivar o hacer que elalumno aprende de una forma en la que el este interesado siempre en hacerlo, evitar su aburrimiento y confusión en el mismo. Es necesario poder medir el estado en el que se encuentra cada estudiante, ya sea creando algun modelo específico o uno general.

Para poder lograr esto los ITS normalmente se centran en diferentes aspectos de las personas, estos aspectos han sido tomados y diseñados a través de las ciencias de la pedagogía y entre tantos los mas importantes a mi criterio personal son los siguientes:

Esfuerzo : detectar que tan persistente es un estudiante en la resolución de un problema.
Confianza: seguridad que tienen en si mismo para afrontar nuevos problemas de la materia en cuestión.
Persistencia: Cuando un alumno no puede resolver un problema, en que tiempo deja de intentarlo y pide ayuda al tutor para su resolución.

Los objetivos principales que se persiguen con la motivación de los ITS en primer lugar es detectarla y en segundo lugar brindarle puntos para poder reaccionar ante el grado de motivación del estudiante para poder mantenerla o aumentarla, incluso poderle pedir al estudiante que por ese día abandone los estudios si es que el sistema detecta que el alumno no esta dispuesto o esta incapacitado en ese momento como para aprender un nuevo tópico.

Existen diversos análisis para poder reaccionar ante los grados de motivación, cabe aclarar que con respecto a medir la motivación personalmente confío mas en la lógica difusa, debido a que esta nos permite crear grados de membresia y no creo particularmente en la medición puntual como si fuese una regla es decir,me gusta mas visualizar, el alumno esta mas confundido que distraído a ver el alumno tiene motivación 3.

Un problema central al intentar medir la motivación es que aspectos de la motivación nos interesan, esto claro con respecto a lo que involucra aprender un nuevo conocimiento, como tal un modelo a mi gusto bastante creativo e interesante es el propuesto por kapor y picard y es el siguiente:
Como podemos observar este autor diseñó un modelo en base al sistema cartesiano en donde es fácil visualizar los estados motivacionales requeridos para el desarrollo de un ITS y mas aun muestra una clara jerarquía, lo que puede llevar a desarrollar mejores manejos para ubicar a un individuo en un estado deseado, existen números estudios acerca de como reaccionar ante diversos momentos en los que se encuentra un estudiante, esto es una ves tomando el tipo de información que se requiera para la enseñanza de un tema en particular y ubicado el estado motivacional del estudiante, si este ultimo no es el indicado ¿como debe de reaccionar el modelo pedagógico para intentar motivar al alumno a un grado tal que sea capaz de entender el tema nuevo a tratar?. A este tipo de planeación usualmente se le llaman planes motivacionesle, la siguiente imagen muestra un ejemplo de uno de ellos propuesto por Teresa del Soldato:
Existen numerosos planes, de hecho , a mi particular punto de vista cada ITS debería diseñar sus propios planes basados específicamente en el tipo de alumnos que se desea enseñar y las materias que se deben de abordar. Esto lo comento por que no creo puedan funcionar las misma estrategias para motivar a un estudiante que está aprendiendo biología molecular a uno que esta aprendiendo física elemental. pero aclaro es mi particular punto de vista. ustedes tendrán el suyo claro esta.
2.1 De la motivación y teoría de la cortesia

Tocar este tema no es facil cuando se tiene ojos ingenieriles, es decir, si se trata de crear discusiones vagas y sin sentido es muy fácil comenzar a discutir acerca de la motivación, pero cuando se trata de medirla la cuestión cambia completamente.
El hecho de que las emociones influyen gravemente en el deseo de aprender de las personas no es nuevo, sin embargo, en cuestión pedagógica no tiene mucho tiempo que se comenzaron a platear este tipo de polémicas en las cuales no solo se trata de enseñar a un alumno, si no, ademas de esto mantenerlo motivado, para que de esta forma el se introduzca mas a fondo, e incluso tenga la virtud y capacidad de poder formar un criterio propio, ya en la antigüedad se decía que el buen alumno supera al maestro , sin embargo nunca se manejo que el buen maestro es aquel que sabe y logra que sus alumnos lo superen.
Pues bien en el ámbito de la inteligencia artificial en la educación, al intentar crear tutores que sena capaces de trasmitir conocimiento a los alumnos, se debe tomar especial cuidado en que estos programas sean capaces de alguna manera de mantener entretenido al alumno y mostrarle específicamente la información necesaria, esto es debido a que, normalmente no son la unica fuente de conocimientos que tiene el alumno, ya que , es probable y casi seguro este cuente con un aula , libros y un tutor humano que le transmitan el conocimiento, entonces si no se logra crear un software que sea capaz de mantener entretenido a la persona es fácil que esta deje de usar la plataforma diseñada como tutor virtual.
Hacer esto es mas fácil decirlo que hacerlo, pues bien, medir la motivación es una tarea difícil y eje de muchas investigaciones, y otra es mantener al alumno motivado cuando se detecte que este se encuentra en un estado de aburrimiento o confusión, claro es que existen tácticas para esto tanto pedagógicas como del área de ingeniería y tal es el caso de los estudios de Teresa de Soldato. sin embargo , en la mayoría de estos (menciono mayoría por ignorancia ya que no he encontrado uno solo que hable de modelos generales y afirmen funcionen) se basan a hacer cuestionarios y análisis de la población en cuestión en donde será creado el sistema, debo admitir que estoy de acuerdo con esto personalmente, ya que a mi parecer crear un modelo general de motivación es demasiado fantasioso a mi simple y humilde parecer.
Cabe mencionar sin embargo que existen sistemas, que , debido a su naturaleza deben de mantener al "estudiante" atento y motivo y estos son los videojuegos de rol, en los cuales normalmente al principio te muestran un avatar que te explica las reglas del juego (por ejemplo final fantasy VIII) interactuando desde el principio con la idea de no confundir al jugador y hacerle mas ameno el inicio, existen otros tomados con enfoque conexionista en donde permiten que usuarios mas experimentados tomen este trabajo (por ejemplo world of warcraft).
En estos juegos siempre el tutor es un tanto amable o está enfocado a como debe de ser la personalidad de la persona desde el inicio, para tal efecto normalmente hacen estudios en donde tienen identificados y agrupados a los jugadores de acuerdo al tipo de avatar que han creado, esto puede o no funcionar, pero si estas compañías logran hacer que los jugadores se mantengan emocionados significa que al menos funciona para un espectro amplio de personas.
El hecho de ser corteses forma parte de lo que ahora se le conoce como teoría de la cortesía en la cual se habla de que la forma en la cual se expresa una persona a otra influye mucho en como queremos vernos o ser tratados, por ejemplo no es lo mismo pedir algo como un favor o como una orden. Si definimos a la cortesía como "un instrumento para suavizar los roces en la interacción social", podremos entonces entender el concepto de esta teoría la cual afirma que existe una imagen social que todos queremos conservar esta imagen social puede ser negativa (que representa el deseo de un individúo de ser autónomo y de no caer bajo el control de otros) o positiva (representa el deseo de parecer digno ante la población , normalmente tener aprobación de la misma).
Cabe mencionar que existen muchas otras teorías que se deben de tomar en cuenta al crear un tutor que intente mantener motivado a una persona, por mencionar a algunas tenemos:
La teoría de los actos de habla de Searle: basada en el enfoque anterior de Austin, que explica cómo se producen ciertos malentendidos e identifica algunos supuestos detrás de actos convencionales que permiten explicar por qué oraciones con formas gramaticales diferentes tienen aproximadamente el mismo sentido pragmático.
La teoría de la relevancia de Sperber y Wilson: que a través de un esquema semiformal explica cómo los hablantes hacen deducciones e inferencias a partir de lo que se va diciendo en una conversación o interacción lingüística para ir creando un contexto lingüístico en el que interpretar debidamente los siguientes enunciados.
El principio de cooperación de Grice: que, al estilo de la teoría de juegos, estudia cómo los participantes en una interacción usan ciertos principios tácitos que facilitan la inferencia e interpretación de lo que se dice.
La teoría de la argumentación de Anscombre y Ducrot: que analiza los elementos lingüísticos asociados al razonamiento informal, observa cómo los argumentos y las conclusiones son introducidos en una discusión y establece lo que es un argumento típico pragmáticamente pertinente, aunque no estrictamente lógico.
3.1 Ambientes

Pues bien llegados aquí es fácil detectar un problema con los ITS y cualquier medio computacional que intente transmitir el conocimiento a las personas y este es la interfaz, el ambiente, la forma en la que se presentará la información, Debo mencionar que antes pensaba en que la mejor forma de poder transmitir el conocimiento al usuario era de una forma minimalista, es decir crear un tutor que vaya proporcionando información de acuerdo a las necesidades específicas del estudiante, sin embargo recientemente por una práctica tuve que ingresar second life, el cual es un videojuego en 3d parecido a los juegos de rol en donde uno crea un avatar humano y se mueve por un mundo virtual completo y es capaz de interactuar con el medio, bien el juego consta de diversas áreas en donde puedes hacer prácticamente de todo lo que haría una persona en un mundo real, claro con cuestiones irreales como volar etc. bueno prosiguiendo en el mismo orden de ideas , fue necesario por concepto de la práctica entrar a un área llamada scilands, la cual es un complejo parecido a un museo de amplia diversidad donde uno puede aprender cuestiones como nanotecnología, medicina, física. aeronáutica,astronomía y biología (debo comentar que estas fueron las secciones de la isla que explore sin embargo, alcance a observar existen muchas más áreas), pues bien al ingresar a cualquier área uno va caminando y viendo vídeos, fotos pinturas como si uno estuviera en un museo, debo aclarar que no tenia conocimiento de este juego y que en pocos minutos me acostumbre incluso al estar navegando tarde mas de una hora viendo el museo de nanotecnología, lo curioso es que había pasado ese tiempo y yo sin darme cuenta estaba aprendiendo de una forma interactiva cuestiones básicas de esta área como sus origines investigaciones recientes etc, parecía como si viera varios documentales de natgeo pero yo tuviera el poder de elegir cual veo si regreso a uno o a otro etc. esto me motivo a pensar que es factible este tipo de ambientes para aprender ya que logra mantener entretenido, asu ves el hecho de conocer gente que esté interesados en estos temas es producente debido a que uno conoce a personas con conocimientos que pueden transmitirse,(esto entra dentro del modelo conexionista de los ITS), pues bien navegando por la sala principal que da la bienvenida al área noté que habían clases virtuales de la universidad se Massachusetts, esto fue muy agradable ya que un aula de estudio completa recibía sus clases en este medio y que los alumnos podían interactuar de una forma como si estuvieran en la vida real, aprendiendo y comunicandose y que después de la clase podían salir a un complejo de museos que aclaran sus dudas con respecto a los temas vistos en clase.
Esto me motivo a pensar de nuevo mis ideas iniciales a otra en donde si se desea tener a un tutor es necesario crear una seria de interfaces que no solo brinden información, si no que logren de alguna forma entretener al estudiante, sumergiendolo en el conocimiento sin que el se de cuenta.
3.2 Entorno de exploración

En este contexto un entorno de exploración es un entorno de juego en que el jugador / alumno se le anima a explorar y en el que hay un alto grado de control alumno / reproductor y la autonomía.

Pues bien , el iniciar siempre es una de las partes fundamentales de cualquier proceso, desición , pensamiento, idea o sueño . sin embargo continuar y concluir es la verdadera gema de la corona.

El sumergir a un estudiante en un ambiente con el objetivo de que este aprenda un tema en específico siempre será difícil, debido a que no sabemos como se comportará el usuario, cuales son sus gustos, que es lo que realmente necesita y lo peor como lograr tome confianza en el software que se le está mostrando.

Los ambientes creados con el objetivo de trasmitir conocimiento deben ser ricos en información e interactividad, asu vez deben de tener un buen balance entre la libertad del alumno por investigar cosas nuevas o indagar en los temas y la información que proporciona el sistema.

Otro aspecto interesante que un entorno debe de poder manejar es la creación de reglas que permitan de alguna forma entender al estudiante con el objetivo de poder anticiparse a sus reacciones, mostrar información pertinente y saber como mostrarla y sobre todo cuando, normalmente para lograr esto es factible apoyarse del machine learning y/o técnicas de data mining etc.

Otra idea fundamental y que a mi parecer es muy positiva es la de crear escenarios que fomenten la participación y colaboración de varios alumnos, he de pensar es una cuestión como la integración de ejercicios en equipo en donde el sistema detecte ciertas fortalezas y debilidades de los alumnos cree estratégicamente equipos y les ponga a resolver alguna actividad en común con el objetivo de que aprendan en grupo, se conozcan se tengan confianza y fomenten una retroalimentación entre ellos.

Una parte fundamental es poder capturar información acerca de las cuestiones meta-afectivas, ya que no todo se en estos sistemas es enseñar un tópico, si no realmente. es dar las bases para que el alumno investigue por cuenta, (crear un balance), para tal motivo se requiere diseñar metodologías que fomenten el deseo del alumno por aprender cierto tema y no simplemente obligarlo a aprender, ya que para esta cuestión es preferible crear archivos de lectura (pdf por ejemplo) y obligar a leerlos y se evitaría todo el increíble trabajo de crear entornos inteligentes que fomenten el aprendizaje.

3.3 Ejemplo tonto de un entorno exploratorio

Pues bien, un entorno que hace tiempo llamo mi atención y que ahora que estoy estudiando esta materia (inteligencia artificial en la educación) llamo a un mas son los juegos de rol, ya que estos son largos, normalmente complicados, a veces tediosos y generalmente fantasiosos y con nada provecho mas que perder el tiempo, sin embargo, logran mantener al jugador alegre, en ocasiones preocupado por terminar una misión , e inclusive logran mantener a una persona largas horas en ellos, aqui analizaré el entorno del juego final fantasy VIII ¿por que lo hago?, simplemente por que creo la manera en la que explica las reglas y brinda conocimiento para continuar, lo siento correcta para un sistema de aprendizaje serio.

Los puntos esenciales que me agradaron de su entorno son:

  1. Al inicio un personaje del juego a manera de tutor de explica las reglas logrando inmiscuirte en el juego desde el inicio.
  2. El sistema intuye en que partes necesitaras ayuda y modifica la historia dependiendo el comportamiento observado en el juego de modo que tu tutor aparece mágicamente sin afectar la historia para ayudarte o explicarte conceptos que de acuerdo a la forma de juego no han quedado claros.
  3. La ayuda que proporciona el tutor para terminar el juego va disminuyendo , es decir, comienza estando con uno todo el tiempo y posteriormente va desapareciendo debido a que al inicio del juego uno tiene muchas dudas y posteriormente uno se vuelve experto en el mismo.
  4. El ambiente nunca abandona el objetivo inicial, sin embargo aunque uno conoce el propósito mas general, el sistema te envuelve en una serie de micro propósitos (objetivos de corto alcance) que lograran hacer que uno logre el objetivo final, sin embargo, estos objetivos o propósitos pueden ser seleccionados de forma independiente, es decir no están estructurados, lo cual brinda cierta libertad.
A mi propio parecer siento que estas cualidades deben de tomarse en cuenta al diseñar un ITS o un entorno