En esta conferencia, vamos a empezar a construir la clase de agente.
Así que abre tu clase básica de agente que ya has creado.
En la parte superior, tenemos que añadir la biblioteca de enlaces.
Lo utilizaremos un poco más tarde para clasificar nuestros objetivos en función de su prioridad.
Así que será el enlace de puntos del sistema.
De acuerdo.
También tenemos que añadir una pequeña clase de ayuda en la parte superior, que definirá nuestros objetivos.
Ahora bien, normalmente en estos sistemas se puede crear un único objetivo que el agente tiene, y el agente puede ir a
satisfacer ese objetivo y luego volver.
Pero en este caso, vamos a crear un montón de objetivos que tienen subobjetivos y que harán que el sistema
sea un poco más flexible si quieres que el agente haga tareas realmente complejas.
Así que crearemos una clase pública para el sub-objetivo.
Y va a ser bastante corto, pero va a tener un diccionario, por supuesto, así que diccionario público y será la misma estructura
que hemos estado usando todo el tiempo porque necesitamos mantenerlo muy consistente y
vamos a llamarlo como objetivos aquí.
Y luego vamos a tener también un bool público remove.
La razón es que a algunos agentes se les quiere dar un objetivo cuando han satisfecho ese
objetivo, entonces el objetivo se elimina de su lista de intenciones que quieren hacer.
Así, por ejemplo, en el caso del paciente, éste podría necesitar un tratamiento.
Así que va a venir una vez que se cura, no necesita pasar por todas esas cosas de nuevo y por lo tanto
ese objetivo puede ser eliminado.
Pero si quieres un objetivo que se active una y otra vez, entonces puedes crear uno que
no elimines después de haberlo satisfecho.
Así, por ejemplo, la enfermera va a tener un objetivo de descanso para poder salir y tener un periodo de descanso
durante el turno de trabajo.
Eso sí que se repetirá una y otra vez.
Así que es un objetivo que no queremos eliminar del sistema una vez satisfecho.
Va a ser una especie de objetivo ocioso hasta que se cumpla una de sus condiciones.
Bien, ahora vamos a crear este sub objetivo tan público y pasaríamos una cadena para nuestro
valor clave int I para su valor real y el bool son para eliminar.
Entonces aquí dentro.
Fijemos objetivos iguales a un nuevo diccionario.
Para nuestra cadena y nuestro int.
Y las escuelas no añaden la que estamos atravesando.
Así que se y yo.
Y luego también vamos a hacer quitar va a ser igual a lo que son cuando se pasa a través de.
Ahora el propio agente va a tener una lista de acciones y una lista de objetivos y ese tipo de cosas.
Así que en la parte superior, en primer lugar, declarar una lista pública de acciones G, y la acción G será las acciones que hemos
dado a nuestro agente para lograr.
Así que aquí tenemos la acción, y que va a ser igual a una nueva lista de acciones G o acción singular.
No pongas una S.
Y también necesitamos muchos goles.
Así que va a ser un diccionario público de diccionario.
Así que básicamente es un diccionario de sub objetivos que son básicamente otro diccionario int para nuestros objetivos
de valor es igual a nuevo diccionario y luego queremos sub objetivo y int.
Y luego necesitamos un planificador, así que lo llamaremos planificador G.
Planifica.
Todavía no hemos creado el planificador, pero va a ser nuestra clase la que salga a hacer la planificación.
Teniendo en cuenta los objetivos.
Lo que va a devolver es una Q de la acción.
Así que vamos a usar Q aquí.
Así que será una cola de acciones g.
O g acción.
Llamémoslo nuestra cola de acción.
Y luego una acción pública g para la acción actual, de modo que podamos hacer un seguimiento de lo que el agente está haciendo en
cualquier momento.
Y luego también lo mismo para la portería.
Así que sub meta y que será el objetivo actual y vamos a grabar que ahora en el inicio tenemos que crear nuestra
matriz de acciones.
Vamos a hacer esto para que para nuestro agente pueda crear versiones de la clase de acción G aquí arriba y simplemente soltarlos en el agente
en el inspector, lo que significa que tenemos que recogerlos cuando el agente comienza a trabajar
y todos van a ir en una matriz.
Así que la acción g y vamos a llamar a esta x es igual a este punto obtener la acción g componente.
Y no sólo queremos una acción, sino que podremos poner muchas acciones.
Así que en realidad es conseguir componentes.
Así que todas las acciones que están sentadas en el agente serán recogidas y puestas en ese acto.
Entonces lo que vamos a hacer es que para cada acción G, a en acto, vamos a poner eso en nuestra lista de acciones para que
las acciones no se sumen.
I.
Algo similar a lo que hacíamos con nuestras acciones, donde creábamos estas matrices públicas que aparecían en el inspector,
y luego rellenábamos nuestros diccionarios con ellas en el awake.
Pero en el agente estamos haciendo eso dentro del método de inicio aquí.
Muy bien.
Así que ahora que hemos empezado, hemos recogido nuestras acciones, todavía tenemos que declarar nuestro planificador
G.
Ahora, me doy cuenta de que nuestras acciones aquí, probablemente debería poner un poco de s en el
final allí para asegurarse de que tenemos nuestra lista nombró lo mismo en nuestro inicio.
De acuerdo.
Y luego lo que vamos a hacer para ejecutar la acción para que el agente se ejecute a través del plan que ha dado aquí,
y que va a pasar aquí abajo en una actualización tardía.
Así que vamos a hacer que nuestra actualización sea una actualización ligera.
Y por ahora, vamos a dejarlo vacío porque tenemos que trabajar en este planificador.
Así, el planificador va a obtener los objetivos que hay que satisfacer, una lista de las acciones que tenemos
a nuestra disposición, así como los estados del mundo.
Y a partir de ahí va a construir un árbol de todas las acciones.
Así que se obtiene esencialmente un gráfico y ese gráfico lo buscamos a través del gráfico de
un extremo a otro donde llegamos a un plan que va a satisfacer el objetivo dado.
El planeta es un código bastante complejo, así que voy a dejar eso para el próximo vídeo para que podamos
dedicar todo el asunto a la estructura del planificador y a cómo reúne las acciones que satisfarán
los objetivos.