ok, en esta charla vamos a hablar del conocimiento de los agentes y el conocimiento de los agentes es el proceso mediante el cual los agentes examinas sus propiedades y el mundo que los rodea y toman una decisión acerca de las acciones que deben llevar a cabo; antes de crear el modelo tenemos que pensar en cómo será ese conocimiento, cuan complejo será el conocimiento de mis agentes, que nivel de conocimiento deberán tener y mientras más complejo sea ese conocimiento, un mayor esfuerzo computacional será requerido, pero potencialmente el modelo se verá más realista; podría ser que si se agrega más y más conocimiento, los agentes serán como personas que piensan o lobos u ovejas o lo que sea; aunque esto no es siempre el caso; yo pienso un poco acerca de los modelos económicos clásicos donde por ejemplo donde los seres humanos toman en cuenta toda la información y tienen tiempo infinito para calcular cual es la mejor solución; lo cual es un conocimiento muy complejo para un agente; pero no es necesariamente el modelo más realista, la mayor parte de los humanos toman decisiones basados en heurísticas o reglas de pulgar; entonces un ejemplo de donde el conocimiento de los agentes, aún cuando sea muy complejo, puede que no sea el más realista en mi primer acercamiento al tema me encontré con un libro de Russell y Norvig y ellos definen 4 tipos de conocimiento de los agentes y entonces quiero; voy a usar las mismas categorías para hablar de los 4 tipos y eso es de lo que vamos a hablar hoy; entonces el 1er tipo es el que llamamos agente reflexivo y estos son agentes que simplemente actúan en forma muy sencilla; luego tenemos a los agentes utilitarios, estos son agentes que tratan de maximizar una función de utilidad, los agentes que están basados en metas que intentan alcanzar una meta y los agentes adaptativos, los agentes adaptativos son agentes que no solamente pueden cambiar sus decisiones sino que pueden cambiar sus estrategias; vamos a hablar un poco acerca de ello luego los agentes reflexivos son agentes que reaccionan y que siguen reglas muy simples donde los agentes simplemente reaccionan a lo que sucede alrededor y a veces son representados por reglas de "si entonces", muchos de los modelos de agentes que ya estuvimos viendo son de esta clase, el modelo de la bandada de pájaros, si corrés el riesgo de chocar contra un pájaro, entonces mejor alejate, mejor evitalo, ese es un ejemplo de un agente reflexivo, por que de algún modo refleja como lo hace el cuerpo humano y les voy a mostrar un ejemplo en el modelo del tráfico básico de los autos hola a todos y ahora les voy a mostrar un ejemplo del modelo básico del tráfico que muestra como construir un agente reflexivo entonces, les comento esto porque casi todos los modelos que pueden llegar a usar en esta clase están disponibles en la biblioteca de modelos en una carpeta que se llama IABM textbook model y si vamos al capítulo 5, que se corresponde con la unidad 5 de esta clase; la mayoría de los modelos están ahí; ahora desgraciadamente el único que no está ahí, es aquel que forma parte de la biblioteca estándar de modelos; existe desde antes de que apareciera el manual y en este caso el modelo básico del tráfico es uno de ellos vamos a volver a la sección en los próximos demos debido a que quiero mostrar otro de los modelos básicos del tráfico, pero ahora vamos a ciencias sociales y si vamos para abajo vamos a encontrar el modelo básico del tráfico; dicho sea de paso, ustedes pueden encontrar todos estos modelos simplemente buscándolos si escriben traffic; entonces vamos a hacer click en tráfico básico y vamos a abrirlo este modelo es muy simple, si se acuerdan vemos como se desplazan los autos, se mueven en una sola dimensión y pueden acelerar hasta que se topan con un atasco y la regla reflexiva captura muy bien, déjenme que agrande un poco este código, la regla reflexiva es capturada muy bien por esta rutina "go"; en el procedimiento go, la regla reflexiva describe, por ejemplo en la documentación, como debe ser si hay un auto adelante equipare su velocidad, de otro modo acelere, no baje la velocidad menos del límite ni acelere por encima de ese límite; entonces estas reglas reflexivas suelen tener la forma de "si entonces" y esta no es la excepción, entonces lo 1ro a verificar es si hay algún auto adelante, si es que hay un auto adelante, si no hay un auto adelante, si hay un auto adelante, en otras palabras si el auto que está adelante no es igual a nadie, en otras palabras hay un auto adelante, entonces tiene que bajar la velocidad del auto, si no hay un auto adelante, ok, tiene que acelerar, entonces si hay un auto adelante desacelere, si no hay un auto adelante entonces acelere y luego se modifica la velocidad para estar seguros de que no se van a pasar del límite de velocidad y que se mueva hacia adelante; esa es la regla básica y simple le permitimos que refleje lo que los agentes son y esa es una forma fuerte de conocimiento, de hecho muchos de los modelos que hemos visto, en nuestros ejemplos fueron reflexivos, tienen reglas simples de la forma "si sucede esta condición, entonces haga esta acción" en el próximo grupo, vamos a empezar a hablar un poco de tipos de conocimiento un poco más avanzados, como los agentes basados en la utilidad ok, los agentes basados en la utilidad son el siguiente nivel de los agentes, no son necesariamente niveles estrictos, sino un tipo diferente de conocimiento de agente y los agentes basados en la utilidad son agentes que intentan maximizar alguna función de utilidad, a veces requiere que los agentes intenten acciones diferentes y luego observar el valor que devuelve la función de utilidad para ver que acciones se deben tomar para maximizar esa función de utilidad; vamos a armar una en la utilidad del tráfico básico, donde la función básica de utilidad es la que minimiza la desviación de una velocidad eficiente en relación a la nafta, entonces los agentes van a adaptarse en cuanto a la velocidad a la que se mueven, básicamente tratando de que coincidan las velocidades lo más que puedan, entonces miremos que pasa ok acá vamos a mirar el modelo utilitario básico del tráfico, que nos pemite tener a los agentes usando la función de utilidad para poder tomar una decisión; si miran abajo hay un modelo utilitario básico del tráfico en el capítulo 5 en el manual de IABM, ustedes pueden encontrarlo escribiendo "utility" ya que es el único que tiene esa palabra y lo pueden abrir acá tenemos el modelo que se ve muy parecido al otro, es decir al modelo básico del tráfico, excepto por el hecho de que tenemos un nuevo deslizador que se llama "velocidad eficiente" y la velocidad eficiente se supone que es un tipo de movimiento donde se verifica quien va adelante y se da cuenta que si los autos se mueven a una velocidad, entonces van a minimizar, maximizar la eficiencia, van a obtener la mejor relación de millas por galones; todos los autos tratan de alcanzar esa velocidad; como lo hacen? bueno si vamos al código, vamos para abajo a la rutina "go" vamos a ver que hay un comando que dice que si el auto, si no hay un auto adelante si hay un auto adelante entonces aminorá la velocidad; si no hay un auto adelante entonces ajustá la velocidad para que sea eficiente si vamos abajo y vemos la rutina de "ajuste por eficiencia" entonces veremos que existe un nuevo renglón que dice que si mi velocidad no es equivalente a la velocidad eficiente, si mi auto no se está moviendo a esa velocidad especial, entonces no hagas nada si el auto va a esa velocidad eficiente, entonces no hagas nada, pero si se acelera entonces ponelo debajo, mantenete por debajo de la velocidad eficiente y entonces obviamente tenés que acelerar debido a que no se puede sobrepasar la eficiencia y si se desacelera, entonces se va a mantener por debajo de la eficiencia entonces se está constantemente quebrando y subiendo y tratando de permanecer cerca de la velocidad de la eficiencia; ahora puede que sea posible que dada cierta aceleración, no puedas exactamente navegar a la velocidad eficiente, esto está bien, vamos a intentar estar lo más cercano posible, todo lo que se pueda y por supuesto, si lo miran y prestan atención a la 1ra sentencia que dice que la velocidad no es la velocidad eficiente, imaginemos que estamos muy cerca de la velocidad eficiente, entonces la aceleración no va a bajar, porque sino hará que todos vayan más rápido y la desaceleración significa que tengo que estar por encima, debido al hecho de que puede ser que la desaceleración puede quedar muy lejos, muy por debajo, y lo que queremos es que se quede un poco por encima, nada va a cambiar en la velocidad; entonces este es un ejemplo de la función básica de utilidad debido a que estamos tratando de maximizar la utilidad de mantener la velocidad suficiente; ok esta es una función escrita, porque la mayor parte de las veces los Modelos Basados en Agentes como en cualquier modelo de computación no vamos a escribir funciones, vamos a escribir procedimientos computacionales, no funciones matemáticas, no ecuaciones, no son procedimientos matemáticos, son procedimientos computacionales que van a obtener el mismo resultado que los modelos basados en ecuaciones; ustedes pueden imaginar que escriben una ecuación que dice que la utilidad de la velocidad es igual a la eficiencia del combustible bla bla bla y luego pueden decir con otra función elija la desaceleración o la aceleración de tal modo que maximice la utilidad; esencialmente eso es lo que hace, ya escribimos todas esas ecuaciones y lo hemos expresado con lógica computacional y esa es la forma en que muchas de las funciones cognitivas de los agentes trabajan