×

工业设计互动平台

手机短信,快捷登录

微信登录,快人一步

QQ登录

只需一步,快速开始

元胞自动机蚂蚁法则问题的代码解法图文过程

发布于 2014-2-3 1 点赞 19 评论 10624 浏览

之前在王老师的书中看到元胞自动机——蚂蚁法则的电池图,发现十分复杂艰深,就跳过了。
这两天入门了vb语言,意识到用编程来解决蚂蚁法则的问题十分便捷。

代码部分其实很简单,就是把蚂蚁法则转换成了横纵坐标以及颜色0、1(0*255,1*255)的逻辑判定

初始状态.png
初始状态

运行十步.png
运行十步

运行100步.png
运行100步时调出了运算时间显示。此时代码部分只用了8ms。

运行1000步.png
运行1000步。1000步也只用了13ms。主要的运算集中在成面上。但也只有半秒。
这样就可以放心地运行10000步啦。

运行10000步.png
运行10000步。发现仍然处于混沌状态,而王老师给的文献中10000步时已出现逃逸“公路”。

再尝试运行11000步
运行11000步.png
发现此时“公路”出现。说明之前10000步公路出现与否其实和初始状态有关系(起始方向和位置)。(后面进一步验证)

继续12000步
运行12000步.png
已十分稳定。


接着我们试着改变初始状态。
改变初始状态.png

改变后11000步.png
运行11000步后仍然处于混沌状态。

改变后20000步.png
两万步。还在混沌……

改变后21000出现公路.png
21000步。终于出现“公路”!


最后总结下用代码解元胞自动机的利弊。其利在于极快的运算速度。运行20000步都不到10秒。而其弊端在于其循环或者说迭代并不逐步显示,要想观察其动态变化只能手动调拉杆。
不过其弊端也正是运算速度快的原因,最庞大的运算量集中在坐标值和颜色布尔值的加减,而不是不断呈现图像,使得其在大数据处理时有强大的运算力。

QQ截图20140203050346.png

程序已封包,想看vb的可下载打开。
元胞自动机——蚂蚁法则.rar (5.64 KB, 下载次数: 180, 售价: 5 个大洋)
参与人数 1经验 +8 大洋 +10 收起 理由
wyx10022 + 8 + 10 很给力!

查看全部评分

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

精彩回复

文明上网理性发言、请文明用语

wyx10022 | 网校特聘讲师 | 发表于 2014-2-3 20:16:21
本帖最后由 wyx10022 于 2014-2-3 20:20 编辑

看来机器的配置非常重要……我的双核2G机器看不到过程,而HF同学发的视频就可以看到过程……
楼主的最后结果用point cloud运算器显示即可,不用planar surface封面

顺便问下,楼主的VB学了多久了?
0 回复

举报

此间的少年 · 发表于 2014-2-4 01:03 点评

过几天有时间我会用拉杆做个动画出来,打算输出12000帧,一步一帧。 vb学了一天……之前有学过free pascal和c程。vb的语法和它们差不多。 不过蚂蚁法则这个用vb解不需要很深的代码知识,只需要懂得把左转右转之类的

此间的少年 | 设计师 | 发表于 2014-2-4 01:03:57
本帖最后由 此间的少年 于 2014-2-4 02:10 编辑
wyx10022 发表于 2014-2-3 20:16
看来机器的配置非常重要……我的双核2G机器看不到过程,而HF同学发的视频就可以看到过程……
楼主的最后结 ...

过几天有时间我会用拉杆做个动画出来,打算输出12000帧,一步一帧。
vb学了一天……之前有学过free pascal和c程。vb的语法和它们差不多。
不过蚂蚁法则这个用vb解不需要很深的代码知识,只需要懂得把左转右转之类的规则翻译成数据变换,问题可以迎刃而解。

额听了老师的建议用了点云显示后,运算速度快了十倍不止,现在12000步只需要2s
QQ截图20140204020906.png
0 回复

举报

hf0419001 | 资深设计师 | 发表于 2014-2-4 04:42:40
本帖最后由 hf0419001 于 2014-2-4 04:52 编辑

把for循环主体摘出来,用hoopsnake一类插件来循环,算是一种办法。只要每步都显示,速度都会慢很多的。其实也可以单纯的把代码的原理用GH实现,直观的图形处理换成字符处理后速度也能提高不少。
0 回复

举报

此间的少年 · 发表于 2014-2-4 12:29 点评

有了hoopsnake之后的grasshopper是一个图灵完备系统,理论上任何可计算的问题都能实现。 只是grasshopper的强大在于数据,与python、ecotect、GIS等软件的衔接都是基于数据结构。所以处理好数据衔接这块,把多个软件

此间的少年 | 设计师 | 发表于 2014-2-4 12:29:28
hf0419001 发表于 2014-2-4 04:42
把for循环主体摘出来,用hoopsnake一类插件来循环,算是一种办法。只要每步都显示,速度都会慢很多的。其实 ...

有了hoopsnake之后的grasshopper是一个图灵完备系统,理论上任何可计算的问题都能实现。
只是grasshopper的强大在于数据,与python、ecotect、GIS等软件的衔接都是基于数据结构。所以处理好数据衔接这块,把多个软件结合起来,解决grasshopper自身解决会很繁琐的问题,可以更有效率地使用grasshopper。
不过如果是想要把grasshopper研究到透,还是很需要继续学习它的逻辑抽象结构,而不能靠别的接口走捷径了。
0 回复

举报

wyx10022 | 网校特聘讲师 | 发表于 2014-2-4 20:02:19
不错,希望继续能够深入研究代码……
论坛有不少代码高手,大家可以一起研究学习……
0 回复

举报

hskcool | 设计师 | 发表于 2014-2-5 11:33:17
以前接触的大部分元胞自动机都是所有点同步判断状态式的,这种从一点出发,移位式的规则也挺有意思的。
0 回复

举报

zxd_819030709 | 实习生 | 发表于 2014-3-12 23:47:58
下下来看看,支持高技术人员发帖
0 回复

举报

qht777333 | 设计助理 | 发表于 2014-3-14 21:48:20
太好了,我也想学
0 回复

举报

melonpooh | 设计助理 | 发表于 2014-4-24 10:50:34
附件打不开呀 ghcluster格式
0 回复

举报

并且无i | 设计助理 | 发表于 2014-8-1 09:55:45
[s:135]你们代码都是在哪儿学的?为什么一个个都这么厉害?为什么我都搜不到合适的教程:'(我超级想学
0 回复

举报

并且无i | 设计助理 | 发表于 2014-8-1 09:56:58
王老师,您什么时候出代码的教程视频呢?大伙都急着学呢
0 回复

举报

godfatherxi | 实习生 | 发表于 2014-9-26 17:56:13
不明觉厉的样子,下来看看
0 回复

举报

二叶花 | 实习生 | 发表于 2015-5-20 21:25:23
ghcluster格式 为什么打不开?
0 回复

举报

HenrySun | 设计助理 | 发表于 2015-11-9 18:15:12
感谢~分享!!!
0 回复

举报

Alexander_Mcque | 实习生 | 发表于 2015-11-25 15:19:26
怎么打开呀
0 回复

举报

GREAT123456 | 设计助理 | 发表于 2017-3-15 15:09:53
谢谢谢谢,向大神学习
0 回复

举报

fang930714 | 实习生 | 发表于 2018-6-6 17:46:50
下载下来看看先
0 回复

举报

fang930714 | 实习生 | 发表于 2018-6-6 17:48:33
SADASFDFDFDF
0 回复

举报

LANAE | 实习生 | 发表于 2019-8-5 01:01:36
此间的少年 发表于 2014-2-4 01:03
过几天有时间我会用拉杆做个动画出来,打算输出12000帧,一步一帧。
vb学了一天……之前有学过free pascal ...

请问我下载的封包为什么后端为s和c而不是pt
0 回复

举报