¡Bienvenidos a la creación de videojuegos! › Foros › Curso de Inteligencia Artificial con ML-Agents de UNITY. Introducción. › Simular muchos agentes
- Este debate tiene 3 respuestas, 2 mensajes y ha sido actualizado por última vez el hace 2 años, 10 meses por Uadla Games.
-
AutorEntradas
-
enero 25, 2022 a las 5:56 pm #2125sanchis135Participante
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?
enero 25, 2022 a las 7:10 pm #2127Uadla GamesSuperadministradorHola 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
enero 26, 2022 a las 9:44 am #2139sanchis135ParticipanteMuchas 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!
enero 27, 2022 a las 1:03 pm #2141Uadla GamesSuperadministradorEl 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.
-
AutorEntradas
- Debes estar registrado para responder a este debate.