Ich habe einen zweidimensionalen zellulären Automaten. In einigen Zellen kann ein Akteur (Agent) sein. Jeder Schauspieler ist ein roter Faden. Ich muss den Schauspieler basierend auf den 9 Zellen um die Schauspielerzelle herum bewegen. Ich möchte dies gleichzeitig tun, damit der Schauspieler in einer Zelle (4,5) die Nachbarzellen (3,4), (4,4), (5,4), (3,5), (5,5) verwenden kann. , (3,6), (4,6), (5,6) und keine anderen Akteure können diese Zellen benutzen. Wenn ein Schauspieler diese Zellen in seiner Nachbarschaft hat, muss er warten, bis sich der erste Schauspieler bewegt hat. Aber ich möchte es erlauben, den Schauspieler, der keine gemeinsame Nachbarschaft hat, gleichzeitig zu bewegen. So kann sich der Schauspieler in (4,5) gleichzeitig als Schauspieler in (10,5) bewegen, weil er keine gemeinsame Nachbarschaft hat.Concurrent Cellular Automata Schauspieler bewegen
Was ist die beste Lösung dafür? Kannst du etwas vorschlagen?
Mehrere Fragen über das, was umgesetzt werden sollte: 1. Der Faden bewegt sich in der neuen Zelle, zeigen Sie sie dort für eine feste Zeit schlafen (mal 1 sec sagen) oder nicht? 2. Benötigen Sie eine UI-Visualisierung (Swing)? In diesem Fall könnten Sie Threads für "Warten auf Verschieben" rot und Threads für Verschieben/Schlafen grün markieren. Als eine Option für die Implementierung können Sie eine Matrix von Zellen erstellen "Cell [] [] Matrix". Immer wenn Thread zur nächsten Zelle geht, besitzt er den Monitor auf dieser Zelle: 'synchronized (matrix [i] [j]) {Thread.sleep (1000); } ' –