¿Se puede representar este problema de juego como un circuito eléctrico? [cerrado]

0

Estoy creando un juego donde cada usuario tiene una red de nodos conectados que tienen una cantidad específica de energía. Los nodos intentarán distribuir la energía de manera uniforme entre ellos. Si un nodo tiene más energía que el promedio, debería entregarse a la red. Si un nodo tiene menos del promedio, debería recibir de la red. Un ejemplo de red sería este, donde + significa más que el promedio y - significa menos que el promedio:

Ahora, la única pregunta que he estado tratando de resolver por un tiempo: ¿cómo puedo calcular la cantidad acumulativa de energía que fluye a través de todos los bordes cuando la red se vuelve a equilibrar? Por ejemplo, sabemos que el nodo en la parte superior izquierda distribuirá 7 de energía a la red, pero ¿dará 5 abajo y 2 a la derecha? ¿O algo más?

¿Podríamos potencialmente este problema como un circuito eléctrico y luego resolverlo así de alguna manera? Tenga en cuenta que cada borde tiene la misma 'resistencia'. ¿Deberían las fuentes de energía estar representadas por fuentes de voltaje?

    
pregunta Willem Mulder

3 respuestas

1

No puedes. Hay algo que falta.

Puede ver esto como un problema eléctrico, donde cada nodo es un condensador cargado a un voltaje específico. Cuando se conectan simultáneamente a través de iguales resistencias, la corriente se dirigirá a fluir a través de cada borde (resistencia) para igualar el voltaje. Estoy en lo correcto?

También puedes considerarlo como un problema hidrostático. Cada uno de los nodos es un tanque cilíndrico lleno de agua hasta una cierta altura. Todos los tanques están conectados en sus fondos por tuberías con igual sección. El agua fluirá hasta que todos los tanques igualen sus niveles de agua.

Lo que falta es (a) la capacitancia del condensador (eléctricamente) o (b) el diámetro del tanque de agua. En realidad lo mismo.

De cualquier manera, la corriente o el agua fluirán durante un cierto tiempo hasta que la tensión / altura sea igual. La corriente que fluye durante este período no será constante, disminuirá con los voltajes que se acercan entre sí. El proceso es transitorio y es difícil de calcular para más de 2 nodos. Es por eso que todos los simuladores eléctricos utilizan métodos numéricos de predicción, intentan diferentes valores y etc., hasta que resuelven todas las variables para un momento dado del tiempo, luego pasan al siguiente momento del tiempo ... y así sucesivamente ...

ACTUALIZACIÓN: Digamos que solo tiene 2 tanques: con 10 m de agua en el primer tanque y 6 m en el segundo. Al final, ambos tendrán el mismo nivel y lo interesante es que el nivel no puede ser de 8 m. Dependerá de los dos diámetros de los tanques. Solo si son iguales el nivel será de 8m. Lo mismo es eléctrico - depende de la capacitancia.

La otra cosa: si asumes que son iguales, puedes obtener fácilmente el nivel final. Pero para saber la cantidad exacta de agua que fluye de un tanque a otro, excepto la altura, debe conocer el diámetro (sección transversal) para calcular el volumen. Es lo mismo con la electricidad; excepto en el voltaje delta, debe conocer la capacidad para calcular la cantidad de energía en julios que se movió desde una tapa. a otro.

    
respondido por el Todor Simeonov
1

De hecho, puedes lograr esto con algo parecido al gráfico en sí:

Esfera cargada en lugar del punto y el conductor con un amperímetro y el interruptor "cerrar en el momento 0+" en lugar de la línea. El valor del punto será la carga total de la esfera en el momento 0, como algunos múltiplos de una unidad que determine. Luego, las integrales de las corrientes desde el tiempo 0 hasta el infinito proporcionarán la respuesta.

* update *

Prometí mejorar mi respuesta pero está muy apresurada y equivocada. Mejor olvidarlo.

Nueva respuesta:

Aquí todos suponemos intuitivamente que el sistema tiene que alcanzar un equilibrio. Eso requiere un medio con pérdidas y, por lo tanto, tiene que haber una salida de energía fuera del sistema. Eso creó la confusión y tu pregunta ha sido rechazada.

Quiero revivir la pregunta porque no existe tal requisito. Una red LC se ajustará a las reglas. Oscilará como agua hirviendo hasta el infinito, porque solo intenta hacer una cosa en particular: " ... Los nodos intentarán distribuir la energía de manera uniforme entre ellos ... ". Es básicamente un problema de energía cinética potencial sin fricción, como un péndulo de reloj.

Ahora, si busca alguna relación sobre los niveles de energía en t = 0 y la distribución después de t = 0, el espectro de potencia de cada inductor es el camino a seguir.

El circuito es algo así y a tu computadora no le gustará:

Lo mostré para un nodo, su voltaje inicial es la raíz cuadrada del nivel de energía porque la energía es proporcional al cuadrado del voltaje del capacitor.

    
respondido por el Ayhan
0

A menos que a @TodorSimeonov se le ocurra algo grandioso, me he dado por vencido para determinar la solución exacta directamente. Lo que creé al final es un algoritmo iterativo que se aproxima a una distribución natural.

El código se puede encontrar aquí:

Aproximadamente se ejecuta de esta manera:

Paso 1

Para todo el conjunto de nodos, encuentre todos los subgrafos desconectados, es decir, encuentre todas las redes separadas.

Paso 2

Para cada red separada, calcule la posición de energía promedio. En el ejemplo, la posición de energía promedio es 0. Luego, calcule lo que cada nodo debería entregar a la red o recibir de la red. Esos son los +7, -2, etc. que vemos en la imagen de ejemplo.

Paso 3

Preparamos una lista de nodos que queremos procesar. Esta lista contiene inicialmente todos los nodos que desean distribuir cualquier energía a la red.

Luego, el algoritmo se ejecuta para un número específico de rondas. Cada ronda

  1. Recorrerá la lista preparada y distribuirá cualquier energía "excedente" a los nodos conectados. Estos nodos conectados almacenan la energía entrante en un cubo de 'energía entrante' por ahora.
  2. El algoritmo recorre todos los nodos y agrega toda la energía entrante para ese nodo y lo establece como la energía excedente para distribuir en la siguiente ronda.

Así que después de, por ejemplo. 50 rondas, la energía de un nodo específico ha saltado sobre 50 nodos y se ha distribuido a una red bastante grande.

Para mantener las cosas eficientes, utilizo algunos trucos

  1. Si hay menos de 1 energía para distribuir para un nodo, se eliminará de la lista de nodos que queremos procesar. Esto se debe a que no queremos distribuir cantidades de energía cada vez más pequeñas en la red. Se volverá a agregar un nodo a la lista si cualquier energía entrante para ese nodo mueve su energía excedente > 1.
  2. Si un nodo tiene solo 1 nodo conectado, entonces sabemos exactamente cuánta energía se transferirá entre ellos. Por ejemplo, el nodo A tiene +3 y se conecta solo al nodo B. Entonces, sabemos que A transferirá toda esa energía al nodo B, sin importar qué. Por lo tanto, confirmamos la distribución de energía entre esos nodos y eliminamos el nodo A de la lista que se procesará. Aún mejor, si esa conexión se confirma, eso podría significar que el nodo B podría quedarse solo con una conexión a un nodo C, que también puede confirmarse, etc.
  3. Si la lista de nodos que se procesarán es 0, obviamente se rompe.

El algoritmo parece lo suficientemente rápido en este momento (1-2 ms para algunas redes no tan complicadas).

Cualquier sugerencia aún muy apreciada!

De nuevo, el código completo se puede encontrar aquí: enlace

    
respondido por el Willem Mulder

Lea otras preguntas en las etiquetas