Pregunta

estoy creando un programa de modelado basado en agentes en Java.

Estoy tratando de determinar la mejor manera de animar a los agentes.He visto varios ejemplos que utilizan una cuadrícula, lo que permite que cada agente ocupe sólo una celda a la vez.

Estoy buscando algo más fluido, donde los agentes puedan "fluir" a través de la ventana en todas direcciones.

¿Alguna sugerencia?

¡Gracias!

Editar:

El entorno será simple y bidimensional.Habrá desde un agente hasta varios cientos de agentes.

Me gustaría representar a los agentes como pequeños círculos con algún tipo de indicación de dirección (los detalles son irrelevantes;la cuestión es que el agente necesita la capacidad de rotar).

Segunda edición:

Actualmente estoy leyendo este tutorial: http://www.giosoft.net/Development/Java-Asteroids-Tutorial.html

Parece que me ayudará con lo que estoy tratando de lograr.

¿Fue útil?

Solución

No puedo decir lo que realmente estás preguntando.¿Quizás estás haciendo (o pretendes hacer) estas tres preguntas?

  1. "Para mi modelo basado en agentes, ¿cómo debo representar a mis agentes en el espacio?"

    Al realizar un modelado basado en agentes, debe diseñar su simulación de manera que tenga sentido para su dominio.Nadie aquí puede darle una respuesta razonable sobre qué opciones espaciales tomar a menos que tenga alguna idea sobre su dominio.

    Podrías optar por una visualización bidimensional o tridimensional.Es posible que desee utilizar el espacio toroidal.Podrías imponer una cuadrícula (p. ej.dimensiones x e y discretas) o podría permitir un espacio continuo.Es posible que tengas ciertas reglas sobre la proximidad (p. ej.sólo un agente puede ocupar un espacio de la cuadrícula a la vez).Es posible que desees seguir algún otro conjunto de reglas.

    Nuevamente, la clave es encontrar un conjunto de reglas que tengan sentido para su dominio.Recomendaría encontrar el conjunto de reglas más simple que aún cree los tipos de comportamiento esenciales para su modelo.

  2. "¿Qué bibliotecas de animación basadas en Java debo considerar?"

    Una vez que haya decidido los aspectos espaciales de su modelo basado en agentes, entonces Estarás listo para decidir qué tecnologías utilizar para mostrarlo.Este es un tema amplio, pero te recomendaría que eches un vistazo a Processing, Piccolo2D, JavaFX, Java 2D y Java 3D.

    En realidad, esta pregunta es un poco más amplia de lo que dije anteriormente.Probablemente te importe algo más que la animación.Los modelos basados ​​en agentes pueden estar controlados por GUI y/o interfaces de línea de comandos.Si desea una GUI, necesitará varios controles de entrada para poder ajustar los parámetros del modelo.Querrás considerar, al menos, Swing y JavaFX.

  3. "¿Qué conjuntos de herramientas o bibliotecas debo utilizar para ayudarme a construir mi modelo basado en agentes?"

    El Comparación de Wikipedia de herramientas de modelado basadas en agentes Es la lista más completa que he visto hasta ahora, pero puede que te abrume.En mi experiencia, los compañeros de trabajo y pares tienden a gravitar hacia uno o más de los siguientes:NetLogo, RePast Simphony, AnyLogic o MASON.A algunas personas (incluyéndome a mí) a menudo les resulta más rápido rodar el suyo propio.Si sigue ese camino, le recomiendo encarecidamente que eche un vistazo a lenguajes de alto nivel como Ruby, Scala o Python para poder centrarse en la lógica del dominio en lugar de en los detalles del lenguaje de bajo nivel.

Otros consejos

Es posible que desee echar un vistazo a MASÓN. Es una plataforma Java de código abierto para simulación de múltiples agentes. Algunas de las demostraciones (por ejemplo, MAV) muestran cómo hacer exactamente lo que describe.

Comida es otra plataforma Java que podría ser una opción.

Finalmente, Netlogo Hace lo que describe extremadamente fácil. Aunque es posible integrar Netlogo con otro código Java, tiene su pequeño lenguaje que permite un desarrollo muy rápido.

Entre 2000-2006 trabajé en Tryllian, una empresa holandesa especializada en sistemas de múltiples agentes. La compañía no es activa ahora.

La primera idea en Tryllian fue construir un dispositivo de búsqueda basado en agentes (llamado Gossip). Esto tenía una aplicación de cliente gráfico con una serie de agentes circulares de colores brillantes con ojos lindos. Cada agente tenía una brecha en la espalda en la que se podía arrastrar una 'mochila'. La mochila podría contener una consulta de búsqueda y una serie de resultados de búsqueda (URL, documentos, imágenes, etc.). Para hacer una búsqueda, el usuario tuvo que arrastrar a un agente con una mochila preparada en el 'Portal a Internet', que era una especie de puerta de aterrizaje con un fondo estrellado como se ve en las películas de ciencia ficción. Luego, el agente sería 'teletransportado' al servidor Tryllian, donde sería dirigido a una 'sala de temas' por un 'agente de butler' que vivía en el servidor. En la sala podría interactuar con otros agentes e intercambiar intereses de búsqueda y resultados. Parece que todavía puedes descargar chismes aquí.

Here's what the Gossip client looked like

Más tarde, Tryllian decidió desarrollar un kit de desarrollo de agentes (ADK) con el que se podía crear aplicaciones de agentes como el chisme más fácilmente. Ofreció un modelo basado en tareas para el comportamiento del agente de programación. Su agente obtendría muchos eventos (agente, etc.) y, en el evento, los controladores podrían agregar tareas que a su vez también obtendrían eventos (tareas, etc.) y podrían programar comportamientos más complejos (posiblemente en forma de subtareas). La API estaba realmente bien hecha.

La característica clave del ADK era en mi opinión, la movilidad del código que ofreció; Los agentes no solo podrían viajar entre habitaciones virtuales en su local es (entorno de tiempo de ejecución del agente), sino que también podría viajar a otro servidor. Esto implicó la serialización de la clase y una solución de carga múltiple que era bastante revolucionaria en ese momento (nos gustaba pensar). Esta característica habilitó diseños donde lleva el código a los datos en lugar de tener que pasar datos (bombear datos sigue siendo una característica principal de la mayoría de los sistemas empresariales que conozco). Por ejemplo, Tryllian desarrolló una aplicación de auditoría remota que permitió a los analistas de la empresa de auditoría codificar las reglas de auditoría en un agente y enviarla de forma segura al servidor de su cliente para monitorear los procesos.

Me detendré antes de que esta respuesta comience a ponerse De Verdad largo (-;

Probablemente todo esto sea un poco más de lo que está buscando lograr en este momento. Si puede formular sus preguntas un poco más específicamente, podría dar algún consejo sobre cómo configurar su sistema de múltiples agentes (cómo modelar mensajes entre los agentes también es un tema muy interesante, por cierto, oh lo siento, dije que me detendría. ..).

¿Cuál sería el propósito de su sistema de múltiples agentes? ¿Qué haría un agente? ¿Se ejecutaría en una máquina o se distribuiría? ¿Los agentes serían codificados, configurables o completamente dinámicos en su comportamiento/reglas?

Una última sugerencia: un punto de partida razonable para pensar en modelar agentes simples es Sense-Plan-Act que generalmente se asocia con robots.

Editar: Respuesta a su comentario

El modelo de agente Tryllian se centra más en la mensajería que en la interacción estrecha con un entorno físico simulado. Mirando el sitio de ejemplo que publicó, parece que el rendimiento es bastante crucial, especialmente cuando el número de agentes aumenta. No estaría explotando los puntos fuertes del agente Tryllian: movilidad de código, programación basada en tareas, genericidad, por lo que creo que no sería la mejor herramienta para una simulación como esta.

Mencionas un enfoque de 'cuadrícula' versus 'suave'. Creo que en una simulación por computadora siempre necesitará representar el tamaño, las coordenadas, la velocidad y la dirección de los agentes dentro de algún tipo de sistema discreto de coordenadas. Por lo tanto, siempre habrá algún tipo de cuadrícula, pero puedes hacer que las 'celdas' sean más pequeñas para que parezca más suave.

¿Quizás hay algunos recursos útiles que se pueden encontrar en el dominio de los juegos? (Sprites, detección de colisiones, etc.)

¡Buena suerte y diviertete!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top