电力电子半实物仿真 半实物仿真( 二 )


不过,当时的学习过程很痛苦 。因为 Sante Fe 研究所选用了一门当时非常冷门的语言作为 Swarm 的编程语言 。
好在风水轮流转 。后来,你可能听说了,这门语言被 Apple 看上了,一度成了开发 iOS App 的默认语言,又火了起来 。
只是那时候,我已经把好不容易学会的这门语言,给忘得差不多了 。惭愧 。
不过,Swarm 确实不适合普通人来入门复杂系统仿真,使用起来也不是很方便 。正如我在《学 Python ,能提升你的竞争力吗?》一文中跟你提过的 。一门语言本身好坏固然重要,但更重要的,是网络效应,也就是有多少人愿意用 。
有良好的社区,你就能很容易学习,遇到问题也容易从同侪那里找到答案;有新的需求,也会有更多的可能获得积极响应和改善 。
所以后来,当我发现 Netlogo 的时候,很开心 。
工具
和 Swarm 不同,Netlogo 一上来的定位,就是让更多人,特别是非专业编程人员,也能很容易上手复杂系统仿真 。
究竟有多容易呢?
这么说吧 。你连安装软件都不需要 。
只要有一个浏览器,你就可以在里面输入这个链接:
https://www.netlogoweb.org/launch
然后,就能欢快地使用了 。
方便吧?
不但功能齐全,Netlogo 还具有非常丰富的文档 。
更让人兴奋的是,各种学科的模型样例,都很齐全 。这是长年以来,社区日积月累的结果 。
如果你要研究的问题,跟这些已经做好的模型相似,那么你只需要修改一下模型,就可以用于自己的研究 。
我之前做教育部项目,研究虚假信息传播的机制模型与应对策略 。其中一篇研究成果《基于复杂系统仿真的微博客虚假信息扩散模型研究》,用的基础就是 Netlogo 中的计算机病毒传播模型 。
里面模型运行出来,是这样的:
看到这里,你可能早已跃跃欲试了 。
别忙,刚才告诉你的,都是好消息那一面 。
坏消息是,Netlogo 的语法,非常古怪 。
对于从来没有接触过编程的人,困难在于模型一旦复杂化,阅读理解会有些困扰 。
然而对他们来说,这种语法的怪异倒还好 。他们的背景知识空缺,犹如一张白纸,往上面挥毫泼墨,还算容易 。只要功夫深,铁杵磨成针 。还是可以通过长期学习和反复练习来增强弥补 。
怕就怕你之前学过 C, Java, Javascript 或者 Python 这样的高级语言 。那初学 Netlogo 的时候,真的会让你有苦不堪言之感 。
你直觉上正确的语句,写出来几乎全都是错的 。
那感觉,肯定是不怎么样 。
为什么会这样呢?
因为 Netlogo 看似一个玩具语言,简简单单 。但是你千万不要被它的表象迷惑住 。它属于编程语言里一个非常古老而奇异的家族 ——Lisp 。
这个语言的其他亲戚,学起来也会让你觉得不那么直观 。
例如下面这段:
所以著名的漫画 XKCD 系列里面,是这样揶揄 Lisp 的:
但是,长得怪不要紧 。Lisp 这个语言家族的功能非常强大 。
如果你掌握了其精髓,那便如同会用了独孤九剑 。逢强则强,变化无穷 。
问题的关键,在于你如何学习它 。
教程
Netlogo 的教程,一直都很稀缺 。那些真正的专家,往往会过度低估 Netlogo 的入门和上手难度,只是希望把它作为工具,介绍复杂系统研究 。
例如 Melanie Mitchell 的课程,便是如此 。
在这些课程里,Netlogo 会被广泛用到,但是其功能使用的细节,不作为重点,很多地方一带而过 。你听着挺清楚,自己如果想要实践,或者需要定制修改模型,还是会一头雾水 。
直到 2015 年,Netlogo 的作者 Uri Wilensky,和 Bill Rand合作,才出了一本真正意义上的权威入门教程 。我当时在美国访学,书刚一出版就从亚马逊下单,买了一本,背了回来 。挺沉的 。


特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。