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