Viendo 4 entradas - de la 1 a la 4 (de un total de 4)
  • Autor
    Entradas
  • #2125
    Avatar del usuariosanchis135
    Participante

    Me ha surgido una duda…si por ejemplo quiero simular cientos de agentes, es decir, ¿es necesario crearte los agentes uno a uno como se ha hecho en este curso? Por ejemplo, para la simulación de un supermercado. Conforme los clientes pagan, se van eliminando. Y con el tiempo, van llegando nuevos clientes. Y al cabo de un día, por ese supermercado han pasado cientos de clientes. ¿Cómo se haría en este caso? ¿Creando una función de creación de agentes y otra función de eliminación de agentes? En ese caso, ¿cómo se haría exactamente?

    #2127
    Avatar del usuarioUadla Games
    Superadministrador

    Hola Sanchis135,

    El que se creen muchos agentes es para acelerar el aprendizaje. En el primer ejemplo, el de las bolas la única finalidad de crear varios agentes con varios escenarios es que se tarde menos tiempo en obtener un agente entrenado.

    Otra cosa sería que los agentes tuvieran que interactuar entre ellos, en ese caso sí que podríamos tener varios agentes en el mismo escenario. Pero no hace falta poner tantos como haya en el juego.

    En resumen, que puedes entrenar con un solo agente y luego usar el cerebro en tantos agentes como quieras de forma simultanea.

    En el caso que cuentas, que no se si te he entendido, pero creo que ya es con el agente entrenado, la duda es como poner varios agentes en el juego, no? Si es así, se suele crear un spawner de objetos. No es nada más que un dispensador, puedes hacer como tu dices, que los crea y los destruye. O hay una forma más óptima que es crearlos todos al principio y que el mismo spawner los vaya activando / desactivando, y que al activarlos les ponga las variables y la posición al valor inicial. Mucho mas optimo que ir creando y destruyendo gameobjects.

    En todo caso, te dejo un enlace, don explico como crear un spawner, que espero te sea útil:

    https://martra.uadla.com/?s=spawner

     

     

    #2139
    Avatar del usuariosanchis135
    Participante

    Muchas gracias por la rápida respuesta.

    Entonces, en modo resumen (para aclarar ideas), lo ideal será:

    1º) Crear un agente y entrenarlo. Se puede entrenar al agente más rápidamente creando varios agentes en varios escenarios (como se hizo en el Proyecto 1 del curso).

    2º) Una vez tienes al agente entrenado, guardar el cerebro (que llamaré ‘cerebro base’).

    3º) Crear un escenario en el que los múltiples agentes que se creen en él usen el mismo cerebro base (entrenado previamente en el paso 2).

    4º) En lugar de crear y destruir constantemente los agentes. Es mejor (optimización), crear todos los agentes necesarios al principio, e ir activando y/o desactivando según convenga.

    Creo que está todo claro..de todas formas, le echaré un vistazo al enlace que me has pasado, para comprender como funcionan los spawners.

    Aprovechando este mensaje quería preguntar otra cosa (que incluso, lo has comentado ya en tu respuesta)…si quiero que exista comunicación entre los agentes, ¿se puede hacer mediante intercambio de mensajes?¿o en Unity solo te permite la interacción entre agentes mediante aprendizaje del entorno?

    Por último, muchas gracias por toda esta información, me está siendo muy útil para comprender mejor el funcionamiento de Unity. Además, quería felicitarte por el curso que has creado. Me deja mucho más claro las ideas  sobre MLAgents, además que está en español (lo cual es muy complicado de encontrar). Enhorabuena por este gran trabajo!

    #2141
    Avatar del usuarioUadla Games
    Superadministrador

    El resumen esta perfecto 🙂

    Puedes enviar mensajes a los agentes, en realidad son un gameobject normal y corriente. No se si acabo de tener clara la intención, pero les podrías cambiar variables que indican el estado o modificaran su forma de actuar. Yo por ejemplo en un juego tengo los agentes en modo patrulla, navegando por el escenario, con el cerebro desactivado (se mueven siguiendo una ruta) y al encontrarse con el player se les activa el cerebro (mediante un ontriggerenter) y cambian a modo persecución, aqui el cerebro es el que se encarga de perseguir al player.

    Tan solo he entrenado la persecución, en otro estado el agente se comporta como si no tuviera un cerebro.

    Muchas gracias por tu opinion! Encantado de que haya sido útil.

    Saludos.

Viendo 4 entradas - de la 1 a la 4 (de un total de 4)
  • Debes estar registrado para responder a este debate.