可编程元胞自动机
Programmable Cellular Automata
查看机构详情
- University of Malta(马耳他大学)
- University of the Witwatersrand(金山大学)
- New York University(纽约大学)
机构由 AI 辅助整理,请以论文原文为准。
浏览论文内容
中文总结 AI 辅助
本文提出可编程元胞自动机,用Python模块化局部与全局函数,在PCG基准三个游戏中测试,全局函数减少迭代次数,并揭示游戏关键因素。
中文摘要 AI 辅助
元胞自动机是一种局部计算范式,其中复杂行为可由简单函数之间的局部交互产生。该范式已被用于解释许多系统,如生物过程、交通模拟、计算机网络等。在游戏中,元胞自动机已被用于《模拟城市》等游戏以及洞穴或地牢等空间内容的生成。然而,创建有效的局部规则是困难且不直观的。元胞自动机可以被有效地演化,但可能仍然难以解释。在这项工作中,我们引入了可编程元胞自动机的概念,其中我们将系统表示为Python代码。我们还将元胞自动机模块化为局部函数和决策函数。局部函数接收局部邻域并返回一个值,而决策函数接收局部函数的输出并决定下一状态的值。将元胞自动机分离为用Python编写的模块有助于理解这些系统是如何工作的。我们还探索了添加全局函数,它们接收整个状态并从中计算一个函数。我们测试了为PCG基准中的三个不同游戏生成关卡。结果表明,全局函数减少了元胞自动机解决问题所需的迭代次数,并且对于某些问题,仅使用局部函数无法找到解决方案。查看生成的函数,我们可以看到在不同实验中使用的常见函数,这不仅帮助我们理解生成器,还帮助我们更好地理解这些游戏及其重要因素。
英文摘要
Cellular automata is a local computation paradigm where complex behavior can arise from local interactions between simple functions. This paradigm has been used to explain many systems such as biological processes, traffic simulation, computer networks, etc. In games, cellular automata have been used in games such as SimCity and for the generation of spatial content such as caves or dungeons. However, creating effective local rules is hard and unintuitive. Cellular automata can be effectively evolved, but may still be hard to interpret. In this work, we introduce the concept of programmable cellular automata, where we represent the system as Python code. We also modularize the cellular automata into local functions and a decision function. Local functions take a local neighborhood and return a value, while the decision function takes the output of the local functions and decides the value of the next state. Separating the cellular automata into modules written in Python helps with understanding how these systems are working. We also explore adding global functions where they take the whole state and compute a function from it. We tested generating levels for three different games from the PCG Benchmark. The results showed that global functions decrease the number of iterations that cellular automata need to solve a problem, and that we cannot find solutions for some problems with purely local functions. Looking into the generated functions, we can see common functions that have been used in different experiments, which not only helps us understand the generator but also helps us understand these games better and what is important for them.