particle-life

particle-life

基于简单规则的粒子生命模拟系统

Particle Life Simulation是一个模拟原始人工生命的开源项目。它基于粒子间简单的吸引或排斥规则,生成复杂的自组织生命模式。项目支持C++、JavaScript和Python,并提供在线演示。通过调整参数,可探索多样化的模式,展示简单规则如何产生复杂行为。该项目为复杂系统和自组织现象研究提供了直观的工具。

粒子生命模拟人工生命自组织模式复杂系统GitHubGithub开源项目

GitHub 仓库大小 GitHub

粒子生命模拟

这是一个简单的程序,用于模拟原始的人工生命。通过类似原子的粒子之间简单的吸引或排斥规则,产生复杂的自组织类生命模式。除去图形界面元素,代码不到一页。视频教程和详细说明请见下方。

了解更多(YouTube 视频教程):

https://youtu.be/0Kx4Y9TVMGg

在线演示(JavaScript 版本):

点击这里查看实时演示(JavaScript):

界面(C++ 版本)

示例结果

一些有趣的模式复现:

复现这些模式时,参数不需要完全精确。获得有趣模式的最佳方法是先尝试随机参数探索,一旦发现有趣的模式,就尝试逐步微调。为避免陷入局部最优,可以偶尔进行大幅度的参数跳跃。通过这种方式,有趣且不同的模式将不断涌现。

使用方法:

下载此仓库。解压文件后,进入 /particle_life/bin/ 文件夹,点击 particle_life.exe

代码:

源代码有 C++、JavaScript 和 Python 版本。 观看此 YouTube 视频获取详细教程:https://youtu.be/0Kx4Y9TVMGg

如果你想为 C++ 程序做出贡献,核心算法位于 "/particle_life/src/ofApp.cpp" 文件的前 100 行。其余部分是由 openFrameworks 库提供的图形界面组件和渲染控制,这是一个开源且易用的图像渲染库。

首先,下载此仓库,然后从这里下载 openFrameworks 库:https://openframeworks.cc/。使用 openFramework 的 projectGenerator 并将 /particle_life/ 文件夹导入到项目中。

或者,生成一个新的 openFramework 项目并添加 ofxGui。一旦项目文件生成,用这里提供的 /src/ 文件夹替换原有的文件夹。

现在你可以在你的机器上编译 C++ 代码了。

其他移植版本:

JavaScript 代码就像这样简单:

另外,查看 particle_life.html 文件以获取更优化的版本 - 感谢那些做出贡献的人。

<canvas id="life" width="500" height="500"></canvas> <script> //Hunar Ahmad @ brainxyz m = document.getElementById("life").getContext("2d"); draw = (x, y, c, s) => { m.fillStyle = c; m.fillRect(x, y, s, s); }; atoms = []; atom = (x, y, c) => { return { x: x, y: y, vx: 0, vy: 0, color: c }; }; random = () => { return Math.random() * 400 + 50; }; create = (number, color) => { group = []; for (let i = 0; i < number; i++) { group.push(atom(random(), random(), color)); atoms.push(group[i]); } return group; }; rule = (atoms1, atoms2, g) => { for (let i = 0; i < atoms1.length; i++) { fx = 0; fy = 0; for (let j = 0; j < atoms2.length; j++) { a = atoms1[i]; b = atoms2[j]; dx = a.x - b.x; dy = a.y - b.y; d = Math.sqrt(dx * dx + dy * dy); if (d > 0 && d < 80) { F = (g * 1) / d; fx += F * dx; fy += F * dy; } } a.vx = (a.vx + fx) * 0.5; a.vy = (a.vy + fy) * 0.5; a.x += a.vx; a.y += a.vy; if (a.x <= 0 || a.x >= 500) { a.vx *= -1; } if (a.y <= 0 || a.y >= 500) { a.vy *= -1; } } }; yellow = create(200, "yellow"); red = create(200, "red"); green = create(200, "green"); update = () => { rule(green, green, -0.32); rule(green, red, -0.17); rule(green, yellow, 0.34); rule(red, red, -0.1); rule(red, green, -0.34); rule(yellow, yellow, 0.15); rule(yellow, green, -0.2); m.clearRect(0, 0, 500, 500); draw(0, 0, "black", 500); for (i = 0; i < atoms.length; i++) { draw(atoms[i].x, atoms[i].y, atoms[i].color, 5); } requestAnimationFrame(update); }; update(); </script>
</br>

相关主题: 粒子生命模拟、 原始汤 - 进化、 康威生命游戏、 细胞自动机、 自组织模式、

这个项目的灵感来自Jeffery Ventrella的Clusters http://www.ventrella.com/Clusters/。我无法访问Ventrella的代码,但我猜这个项目与其他粒子生命项目的主要区别在于我没有实现碰撞检测,这使得实时模拟数千个粒子成为可能。此外,我添加了GUI控件来实时更改参数,从而可以轻松微调和探索,因此,我能够发现一些从未见过的模式从一些极其简单的关系模型中涌现出来。 这里的代码可能比其他人工生命代码简单一个数量级,因为我最初编写这段代码仅仅是作为非程序员和普通观众的教育材料,以证明复杂性可以从简单性中产生。

待办事项:

  1. 添加保存和加载参数的功能(这样人们就可以轻松分享他们发现的有趣模型)
  2. 能够添加更多粒子类型(目前固定为四种粒子类型)
  3. 目前,最大的瓶颈是嵌套的for循环(计算所有粒子之间的成对距离),使计算复杂度呈二次方增长。如果我们能找到解决方法就太棒了。
  4. 作为第3点的替代方案,计算成对距离是极易并行的,因此可以在GPU上计算。
  5. 添加调整屏幕大小的功能,并改进边界检查,因为许多快速移动的粒子可能会逃离屏幕边界。
  6. 添加更直观的UI,以便对参数进行更精细的控制。
  7. 添加一个随机化按钮,或者更好的是,有一个简单的元规则来持续和递归地改变初始规则。这样,模式就永远不会陷入局部最大值,并且会不断变化!
  8. 更好的微调方法是使用进化算法来选择和优化参数,但需要为此编写一个适应度函数。我目前不知道适应度函数在这个程序的领域中对应什么。在我们的世界中,适应度函数是竞争和适者生存。然而,在这里,我们微调和选择产生有趣模式的参数,但"有趣"这个词说起来容易,定义起来难!

编辑推荐精选

Vora

Vora

免费创建高清无水印Sora视频

Vora是一个免费创建高清无水印Sora视频的AI工具

Refly.AI

Refly.AI

最适合小白的AI自动化工作流平台

无需编码,轻松生成可复用、可变现的AI自动化工作流

酷表ChatExcel

酷表ChatExcel

大模型驱动的Excel数据处理工具

基于大模型交互的表格处理系统,允许用户通过对话方式完成数据整理和可视化分析。系统采用机器学习算法解析用户指令,自动执行排序、公式计算和数据透视等操作,支持多种文件格式导入导出。数据处理响应速度保持在0.8秒以内,支持超过100万行数据的即时分析。

AI工具酷表ChatExcelAI智能客服AI营销产品使用教程
TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
AIWritePaper论文写作

AIWritePaper论文写作

AI论文写作指导平台

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

AI辅助写作AI工具AI论文工具论文写作智能生成大纲数据安全AI助手热门
博思AIPPT

博思AIPPT

AI一键生成PPT,就用博思AIPPT!

博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。

AI办公办公工具AI工具博思AIPPTAI生成PPT智能排版海量精品模板AI创作热门
潮际好麦

潮际好麦

AI赋能电商视觉革命,一站式智能商拍平台

潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。

iTerms

iTerms

企业专属的AI法律顾问

iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。

SimilarWeb流量提升

SimilarWeb流量提升

稳定高效的流量提升解决方案,助力品牌曝光

稳定高效的流量提升解决方案,助力品牌曝光

Sora2视频免费生成

Sora2视频免费生成

最新版Sora2模型免费使用,一键生成无水印视频

最新版Sora2模型免费使用,一键生成无水印视频

下拉加载更多