论文标题
复杂系统的大规模桌面模拟的编程数据结构
Programming Data Structures for Large-Scale Desktop Simulations of Complex Systems
论文作者
论文摘要
对复杂系统的调查需要在许多时间迭代中进行大规模模拟。因此,提供有效的实施非常重要。本研究借鉴了吉尔伯特·西蒙登(Gilbert Simondon)的哲学概念,以识别对运行时间和内存使用影响最大的数据结构和算法。这些是实体$ e $ -tuple $ \ MATHCAL {E} $,而互联的更新功能$ ϕ $。根据当前的软件工程实践和根据理论上的考虑,专注于在C#中实现数据结构,$ \ Mathcal {E} $作为对象列表和一系列指针。蜂窝自动机模拟具有$ 10^9 $的实体在一个迭代中表明,具有动态键入和多状态准备就绪的对象列表对运行时间和内存使用情况具有巨大效果,尤其是动态键入,因为它对演变时间产生了很大的影响。与对象列表实现相比,指针阵列可以在C#中实现,并且更有效地运行时间和内存,但是它们很麻烦地实现。总之,避免在基于对象列表的实现或使用指针阵列中进行动态键入,即使在台式计算机上也可以接受的演变时间也可以接受。
The investigation of complex systems requires running large-scale simulations over many temporal iterations. It is therefore important to provide efficient implementations. The present study borrows philosophical concepts from Gilbert Simondon to identify data structures and algorithms that have the biggest impact on running time and memory usage. These are the entity $e$-tuple $\mathcal{E}$ and the intertwined update function $ϕ$. Focusing on implementing data structures in C#, $\mathcal{E}$ is implemented as a list of objects according to current software engineering practice and as an array of pointers according to theoretical considerations. Cellular automaton simulations with $10^9$ entities over one iteration reveal that the object-list with dynamic typing and multi-state readiness has a drastic effect on running time and memory usage, especially dynamic typing as it has a big impact on the evolution time. Pointer-arrays are possible to implement in C# and are more running time and memory efficient as compared to the object-list implementation, however, they are cumbersome to implement. In conclusion, avoiding dynamic typing in object-list based implementations or using pointer-arrays gives evolution times that are acceptable in practice, even on desktop computers.