La idea de la esperanza es muy simplista.
Sin embargo, averiguar la dinámica de la misma no lo es.
Hay que tener en cuenta los objetivos, las acciones, los estados y todo tipo de cosas.
Depurar un sistema completo es muy difícil, así que lo mejor es empezar por el papel.
El sistema del GOP que estamos a punto de construir no es el todo y el fin de cómo desarrollar dicho sistema.
Pero sólo una forma de utilizarlo como quieras y modificarlo para tus propias necesidades.
Pero básicamente funcionará así.
Tenemos un agente.
El agente tiene una serie de objetivos.
Estos objetivos impulsan su secuencia de acciones.
Algunas acciones sólo son posibles después de haber completado otras acciones.
Pero el entorno o el mundo del juego y otros agentes también desempeñan un papel.
Por ejemplo, algunas acciones podrían no ser posibles sin la ayuda de otro agente.
Y otras acciones podrían no ser posibles sin el uso de un recurso.
Cuando se utiliza el jabón, en realidad se está construyendo una simulación.
Así que tienes que pensar en cómo quieres que sea el juego y cómo se van a mover los personajes
por el entorno.
En este caso, vamos a crear una simulación de hospital muy sencilla.
Habrá dos tipos de agentes, los pacientes y las enfermeras.
Pensemos en cómo queremos que funcionen los pacientes.
Queremos que lleguen al hospital, se registren en la recepción, vayan a la sala de espera, sean atendidos cuando haya
una enfermera y un cubículo disponibles, y luego se vayan a casa.
Cada una de estas cosas implica trasladar al personaje a otro lugar.
Serán nuestras acciones.
En el ámbito de aplicación.
Cada una de estas acciones existe como una tarea única y completa que va acompañada del agente que simula
algún evento.
Si tuviera que elaborar un plan para que el agente pueda llevar a cabo estas acciones, ¿cuál
sería?
Tómate un momento para considerarlo.
¿Cómo te fue?
Probablemente se le ocurrió algo parecido a esto.
Ir al hospital, registrarse, esperar a la enfermera, recibir tratamiento y luego irse a casa.
Definitivamente es un plan legítimo, pero lo que vamos a hacer en nuestra aplicación es estructurarlo un poco más
así para que el paciente tenga tres conjuntos de planes.
La razón por la que hacemos esto es porque en la propia simulación, el agente tiene otros recursos
y otros agentes de los que va a depender para continuar a través del juego real.
Ahora bien, si sólo quiere que su agente entre en el hospital, vaya al mostrador de registro, vaya y espere.
Ir a un cubículo y luego ir a casa sin que haya ninguna otra dinámica.
Entonces podrías tener un único plan.
Una vez que entremos en la programación de esto, verás por qué lo he estructurado así con las
tres secciones diferentes.
Pero por ahora, sólo confía en mí mientras pasamos por esto.
Ahora bien, si recuerdas, el objetivo del grupo es que cada acción esté desacoplada.
No está vinculado a ninguna otra acción.
Así que cuando queremos crear un plan para pasar por las acciones de un extremo a otro, estamos buscando un
objetivo concreto que estamos tratando de lograr y luego trabajando hacia atrás con el fin de hacer coincidir
las acciones para llegar a un único plan.
La primera en este caso es la superior que puedes ver en la pantalla, que es ir al hospital, registrarse
y esperar a la enfermera.
Ahora bien, esto implicará que el paciente tenga un objetivo de es espera y trabaje a partir de él.
Entonces pensamos en cuáles van a ser las condiciones previas para esperar a la enfermera.
Bueno, eso significa que tenemos que habernos registrado.
Esta será entonces la condición previa para esperar a la enfermera.
Eso significa que la acción de registro tiene que haber registrado como su efecto y luego retroceder desde allí antes de que podamos
registrar, tenemos que estar realmente en el hospital.
Así que tenemos que asegurarnos de que hemos vinculado suficientes acciones que tienen precondiciones y efectos que van a coincidir
para que terminemos con un plan cuando el sistema está tratando de encontrar uno.
En cuanto a las otras acciones en este caso, que están formando un plan que sólo tiene una acción, deben
tener un efecto porque ese efecto es el objetivo final que su agente estará mirando.
Y por lo tanto también hay que darles un efecto y si quieres que se disparen, también una condición previa.
Nuestro personaje de la enfermera va a ser un poco más simplista y tendrá dos conjuntos de planes para elegir.
El primero será tratar a un paciente.
Por lo tanto, su objetivo final es tratar al paciente.
Y eso va a requerir un plan de recogida de un paciente en espera, que requerirá que un paciente esté esperando
en primer lugar, así como que haya un cubículo libre disponible.
De este modo, se enlazará con nuestro cubículo de acceso al tratamiento, lo que satisfará
al paciente.
Ahora para hacer que la enfermera sea un poco más interesante en lugar de quedarse parada cuando no hay
nada que hacer.
También habrá una meta de descanso.
Y ese objetivo se activará cuando la enfermera se agote y, por lo tanto, la enfermera irá entonces a la sala
de descanso.
Antes de empezar a codificar, echemos un vistazo a cómo va a encajar esto conceptualmente.
Tenemos un agente y ese agente vive en el entorno del juego.
El entorno del juego va a tener un conjunto de estados del mundo, y eso va a ser cosas como cuántos cubículos están disponibles,
cuántos pacientes están esperando, y ahí cosas en las que el agente puede basarse cuando está tratando
de determinar si puede lograr un objetivo.
Así que en algunos casos será una de las condiciones previas a la meta.
Ahora bien, el propio agente también va a tener un conjunto de estados sobre sí mismo porque, por ejemplo,
si está enfermo, esa creencia o ese estado pertenece al propio agente, no al mundo real del juego.
Así que lo estoy llamando creencias en este caso, pero realmente es como los estados del mundo local que pertenecen
al agente.
Ahora el agente también va a tener un conjunto de objetivos y un conjunto de acciones.
Ahora, para alinear todas estas acciones de manera que se puedan alcanzar los objetivos, tendremos un planificador, por lo que
cada agente tendrá un planificador.
Esto significa que con la información de los estados del mundo, las creencias o el estado del agente.
El objetivo que hay que alcanzar y todas las acciones disponibles.
El planificador elaborará un plan, se lo devolverá al agente y éste lo ejecutará.
De acuerdo.
Así que ese es el sistema de esperanza que vamos a desarrollar.
Así es como va a funcionar conceptualmente.
Y una vez que entramos en el código, aunque es esencialmente bastante simple, todavía hay un
poco de él para escribir y armar.
Entonces, ¿por qué posponerlo más?
En el próximo vídeo, volveremos a empezar la codificación.