Hallo Leute,
Ich habe wieder mal ein Problem mitgebracht.
Ich arbeite an einer Multiagentensimulation, die ihre Grundparameter aus aktuellen Geodaten bezieht.
Wir sprechen hier von ca. 25.000 Agenten pro Simulation.
Dabei handelt es sich bereits um die reduzierte Anzahl, aber auch gleichzeitig um die Mindestvorgabe. Weiter dürfen wir nicht runtergehen, weil die Simulation dadurch an Aussagekraft verlieren würde - so zumindest unsere Analysten........ - mir macht diese Zahl an Agenten Bauchschmerzen.
Im Rahmen der Simulation interagieren die Agenten jeweils mit dem Agenten, der ihnen am nächsten ist. (Interaktionen sind hierbei sowohl Bewegungen, als auch z.B. Kommunikation).
Dazu muss jeder Agent natürlich zunächst einmal herausfinden, welcher Agent denn der nächste ist.
Und genau hier liegt mein Problem:
Verschiedene Operationen kosten bereits viel Rechenzeit und machen die Simulation dementsprechend langsam.
Ich möchte daher vermeiden, dass jeder Agent zu Beginn jeder Aktionsrunde erstmal durch alle anderen Agenten iterieren muss. Das wären dann 25.000 x 24.999 abfragen und das in jeder einzelnen Runde...
Jetzt suche ich nach einem möglichst effizienten Konzept, diese Abfrage durchzuführen. Hat da einer eine gute Idee für mich?
Im Wesentlichen kann ich von jedem Agenten die Koordinate (x,y) erhalten.
Ich habe wieder mal ein Problem mitgebracht.
Ich arbeite an einer Multiagentensimulation, die ihre Grundparameter aus aktuellen Geodaten bezieht.
Wir sprechen hier von ca. 25.000 Agenten pro Simulation.
Dabei handelt es sich bereits um die reduzierte Anzahl, aber auch gleichzeitig um die Mindestvorgabe. Weiter dürfen wir nicht runtergehen, weil die Simulation dadurch an Aussagekraft verlieren würde - so zumindest unsere Analysten........ - mir macht diese Zahl an Agenten Bauchschmerzen.
Im Rahmen der Simulation interagieren die Agenten jeweils mit dem Agenten, der ihnen am nächsten ist. (Interaktionen sind hierbei sowohl Bewegungen, als auch z.B. Kommunikation).
Dazu muss jeder Agent natürlich zunächst einmal herausfinden, welcher Agent denn der nächste ist.
Und genau hier liegt mein Problem:
Verschiedene Operationen kosten bereits viel Rechenzeit und machen die Simulation dementsprechend langsam.
Ich möchte daher vermeiden, dass jeder Agent zu Beginn jeder Aktionsrunde erstmal durch alle anderen Agenten iterieren muss. Das wären dann 25.000 x 24.999 abfragen und das in jeder einzelnen Runde...
Jetzt suche ich nach einem möglichst effizienten Konzept, diese Abfrage durchzuführen. Hat da einer eine gute Idee für mich?
Im Wesentlichen kann ich von jedem Agenten die Koordinate (x,y) erhalten.