<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Netlogo on TouchingFish.top</title><link>https://touchingfish.top/tags/netlogo/</link><description>Recent content in Netlogo on TouchingFish.top</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Tue, 20 Sep 2022 00:00:00 +0000</lastBuildDate><atom:link href="https://touchingfish.top/tags/netlogo/index.xml" rel="self" type="application/rss+xml"/><item><title>缘木求榆（碳中和与一个突然靠谱的同门）</title><link>https://touchingfish.top/2022/elm-carbon-sequestration/</link><pubDate>Tue, 20 Sep 2022 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2022/elm-carbon-sequestration/</guid><description>&lt;p&gt;2022年3月。被老板安排了一个建模比赛。&lt;/p&gt;
&lt;p&gt;暑期学校那个打下手测试 netlogo 模型的同门，给我发消息了。&lt;/p&gt;
&lt;p&gt;他说他想进步。&lt;/p&gt;
&lt;p&gt;我盯着屏幕看了半天。上次听到类似的话，还是在本科毕业答辩的时候。那时候有个同学说，他选择这个课题是因为&amp;quot;想锻炼自己&amp;quot;，评委老师当场问：那锻炼得怎么样了呢？&lt;/p&gt;
&lt;p&gt;同门这次是真的想进步。&lt;/p&gt;
&lt;p&gt;老板近年的项目全是碳中和。系统动力学、Anylogic、植物种群生活史、固碳能力估算。这些词他倒是说得头头是道，至于具体怎么建模、怎么仿真，那是另外一回事了。&lt;/p&gt;
&lt;p&gt;我懂。我太懂了。
他只懂他懂的那一套，超过这个范围就装聋作哑。&lt;/p&gt;
&lt;p&gt;项目内容是基于种群生活史过程的植物固碳潜力评估模型。系统动力学（System Dynamics）本质上是一种通过微分方程描述反馈回路的建模方法，把植物种群看成一系列状态变量——种子库、幼苗库、成树库——随着时间演化。榆树从种子到成熟树要经历萌发、幼苗生长、成熟结果三个阶段，每个阶段的碳固定效率差异巨大。模型的任务，就是追踪碳在这条链路里的流动。&lt;/p&gt;
&lt;p&gt;用 Anylogic 软件做仿真，看不同降水情景对固碳能力的影响。&lt;/p&gt;
&lt;p&gt;数据是现成的。浑善达克沙地、科尔沁沙地原生榆树疏林，Shapefile 文件里有区域降水信息。榆树疏林是沙地生态系统的顶级群落，根系深、寿命长、碳储量高。但榆树幼苗到成树的存活率差异极大——种子萌发需要充足土壤水分，幼苗期抗旱性弱，成熟后根系深扎才能利用深层地下水。这套生活史策略决定了不同阶段的固碳贡献完全不同。模型也是现成的——老板之前接过类似的项目，有一定基础。&lt;/p&gt;
&lt;p&gt;问题是代码。&lt;/p&gt;
&lt;p&gt;Anylogic 是个仿真软件，自带建模语言和环境。说实话，这东西比 NetLogo 复杂多了。NetLogo 至少文档的可读性很高。Anylogic 遇到问题，基本上只能靠玄学搜索。&lt;/p&gt;
&lt;p&gt;同门说他来写代码，我以为他在开玩笑。但他确实写了。几乎全部。&lt;/p&gt;
&lt;p&gt;我只是负责那些他解决不了的技术问题。他卡住的地方，我用英文搜索能力顶上——在 Stack Overflow 和 Anylogic Community Forum 里大海捞针，看看有没有人遇到过类似的问题。&lt;/p&gt;
&lt;p&gt;有时候找到了，解决方案稍微改改就能用。有时候找不到，那就得自己摸索。&lt;/p&gt;
&lt;p&gt;印象最深的是关于植物生长曲线的参数标定。模型里有个地方需要输入不同生长阶段的碳储量转换效率，文献里的数据要么单位不对，要么样本量太小，用上去之后曲线跑出来跟实际情况差得离谱。&lt;/p&gt;
&lt;p&gt;同门试了三天，没调出来。&lt;/p&gt;
&lt;p&gt;我去搜。也搜了半天。我们一起看，一起改代码，一起调试。&lt;/p&gt;
&lt;p&gt;最后跑通了。&lt;/p&gt;
&lt;p&gt;比赛结果倒是出乎意料。抱着打酱油的心态去的，结果模型作品成功入围。被迫在暑假某一个本可以睡到自然醒的上午早起，进行线上报告。&lt;/p&gt;
&lt;p&gt;报告是同门讲的。他讲得比我想象的好。不怯场，逻辑清晰，该强调的地方强调，该略过的地方略过。&lt;/p&gt;
&lt;p&gt;评委问了几个问题。有个问题关于模型的空间尺度效应，评委质疑我们没有考虑榆树个体之间的竞争关系。&lt;/p&gt;
&lt;p&gt;我想反驳，但一时找不到合适的论据。&lt;/p&gt;
&lt;p&gt;同门接话了。这一接，虽然没有答出个所以然，但成了他的研究方向。&lt;/p&gt;
&lt;p&gt;我在旁边看着，心里想：这小子什么时候变得这么能说了？&lt;/p&gt;
&lt;p&gt;他确实想进步。进步得还挺快。&lt;/p&gt;
&lt;p&gt;评委最后没再追问。报告结束，线上会议室的人数已经掉到了十几个。&lt;/p&gt;
&lt;p&gt;出来之后我问他，那个空间尺度的回答是谁想的。&lt;/p&gt;
&lt;p&gt;他说自己想的。&lt;/p&gt;
&lt;p&gt;妙。&lt;/p&gt;
&lt;p&gt;生活有时候就是这样。你以为有些人永远是那个样子，结果他突然就变了。变化来得猝不及防，让你措手不及。&lt;/p&gt;
&lt;p&gt;可能是因为遇到了合适的机会，可能是因为被谁刺激到了，也可能只是到了该进步的年纪。&lt;/p&gt;
&lt;p&gt;总之，碳中和这个项目，意外地成了他成长的一个节点。&lt;/p&gt;
&lt;p&gt;也成了我的。&lt;/p&gt;
&lt;p&gt;老板在水货这件事，我大概会记很久。但在水货手下干活，也不是完全没有好处——至少自由度够大。大到可以让我和同门一起摸索一些他根本不懂的东西，然后在他面前假装这些都是基于他&amp;quot;英明的指导&amp;quot;。&lt;/p&gt;
&lt;p&gt;成年人的世界，就是这么虚伪而务实。&lt;/p&gt;
&lt;p&gt;同门后来又找了我几次，问了一些技术问题。有些我能回答，有些不能。不能的那些，我就说等我查查。&lt;/p&gt;
&lt;p&gt;然后就去搜。&lt;/p&gt;
&lt;p&gt;用英文。&lt;/p&gt;
&lt;p&gt;在无数个深夜里。偷偷努力。&lt;/p&gt;</description></item><item><title>陷阱不只是交换学科（CSS Summer School）</title><link>https://touchingfish.top/2021/css-summer-school-memory/</link><pubDate>Sun, 15 Aug 2021 00:00:00 +0000</pubDate><guid>https://touchingfish.top/2021/css-summer-school-memory/</guid><description>&lt;p&gt;2021年7月，研0。&lt;/p&gt;
&lt;p&gt;研究生录取之后接到的第一个任务，是去上一个暑期学校。&lt;/p&gt;
&lt;p&gt;七月的最后一周，华中农大和帝国理工合办了一个计算社会科学方法论的暑期学校。课程安排在线上，每天从早到晚排满了课，结课还要交一个 NetLogo 模型。&lt;/p&gt;
&lt;p&gt;在这之前，我刚被电动车撞了。&lt;/p&gt;
&lt;p&gt;不是我自己被撞，是我妈。一大早出门买早餐，让一个跑单的骑手撞了。手肘肿得厉害，脚趾被前轮碾过，死皮掀开一大块。报警，ct，派出所，交警大队。一家人跑了一整天。&lt;/p&gt;
&lt;p&gt;第二天网课就开始了。&lt;/p&gt;
&lt;p&gt;我以为这就是全部了。后来发现，这只是开始。&lt;/p&gt;
&lt;p&gt;开课第一天早上 Georgiy 老师的课，我盯着屏幕里那个俄罗斯男人看了半天。客观来说，确实挺帅，专业背景也跟我比较 fit。我寻思着要是能保持联系以后说不定有用。&lt;/p&gt;
&lt;p&gt;上课讲了什么现在差不多忘光了。只记得下课前他演示了几个 NetLogo 模型，其中一个关于 covid 的印象深刻——后来我们小组的作业就是从这个模型改出来的。&lt;/p&gt;
&lt;p&gt;课间我骑着自行车出门把骑行卡的次数用完。回来接着划水。晚上的综艺追到三四点。&lt;/p&gt;
&lt;p&gt;现在回想起来，那大概是我最接近&amp;quot;帝国理工&amp;quot;三个字的一次。虽然线上，虽然只有一周，虽然本质上就是个 NetLogo 入门培训。但怎么说呢，title 好听啊。&lt;/p&gt;
&lt;p&gt;第二天下午的 Jerry 孙老师是全场最有人情味的一个。&lt;/p&gt;
&lt;p&gt;前半程用英文讲，听得云里雾里。后半程不知道谁提了一句能不能用中文，孙老师居然答应了。Koen 在旁边听了一会儿，大概是觉得没意思，中途下线回血。&lt;/p&gt;
&lt;p&gt;用中文讲果然效果好很多。那些&amp;quot;学习&amp;quot;、&amp;ldquo;贝叶斯网络&amp;rdquo;、&amp;ldquo;遗传算法&amp;quot;的概念，从孙老师嘴里说出来变得接地气了不少。他说微观到宏观的角度，说抽象和复杂的关系，我突然意识到这可能就是建模的思维方式。&lt;/p&gt;
&lt;p&gt;之前自学 NetLogo 的时候，只知道怎么把代码敲正确。从没想过为什么要建这个模型，为什么抽象，为什么复杂。&lt;/p&gt;
&lt;p&gt;抽象还是复杂？&lt;/p&gt;
&lt;p&gt;这是个哲学问题。&lt;/p&gt;
&lt;p&gt;小组作业是结课前才布置的。&lt;/p&gt;
&lt;p&gt;在此之前，我已经大概猜到了——每次小组作业的剧本都是这样的：定题那天大家头脑风暴热热闹闹，真正干活的就那么一两个人。选题的时候每个人都参与，讨论的时候每个人都发言，等到了写代码的阶段，环顾四周，发现只有自己。&lt;/p&gt;
&lt;p&gt;果然。&lt;/p&gt;
&lt;p&gt;为什么这些小年轻约 meeting 会约在早上，感觉被安排得明明白白。第一次讨论定题，我在同学掩护下闭麦装高手。大家都想做疫苗相关的话题，追热点嘛，都懂。在老师的建议下，我们决定在 SIR 模型基础上加疫苗干预，模拟社会网络中的传播阻断效果。&lt;/p&gt;
&lt;p&gt;选题确定得很快，但研究问题实际上并不明确。这也给后续工作埋下了隐患——我们是在已知模型能实现什么的前提下来设计实验，而不是先明确问题再选择方法。&lt;/p&gt;
&lt;p&gt;第二次讨论的时候，我已经甩了一个半成品模型上去。其实就一个晚上肝出来的，很多参数还没调，ODD 协议也没写。队员们看着屏幕另一端的模型面面相觑——这就开始了？&lt;/p&gt;
&lt;p&gt;我也没想到能这么早进入状态。但没办法，科研这件事嘛，都是自己催自己。无所事事，因为队友看起来不急。&lt;/p&gt;
&lt;p&gt;整个暑期学校有八堂课，我现在能回忆起来的没几门。&lt;/p&gt;
&lt;p&gt;Lecture 3 讲 ODD protocol。概念不难理解，不就是 Overview, Design concepts, Details 吗？但真到自己写的时候傻眼了。描述一个模型比理解一个模型难得多。这感觉就像看别人游泳觉得自己也行，等下了水才发现连换气都不会。&lt;/p&gt;
&lt;p&gt;Lecture 5 讲 GIS。Koen 老师说仿真在时空中演化，空间数据怎么处理，shapefile 怎么用。我想起之前学最大熵模型时也接触过这些概念，当时没学明白，这次还是没学明白。哪些模型需要 GIS，哪些不需要？地理信息在模型中起什么作用？这些问题是好问题，但我没有答案。&lt;/p&gt;
&lt;p&gt;Lecture 7 最有意思。白军飞老师是临时被拉来代课的，讲的是应用经济学研究的规范问题。他说很多所谓的研究只是在&amp;quot;讨论问题&amp;rdquo;，而不是&amp;quot;研究约束对行为的影响&amp;quot;。他还提到一个观点：交叉学科盛行今日，各自发挥优势比换学科更重要——&amp;ldquo;交换学科&amp;quot;的陷阱，迷失在其他学科之中，既丧失自身优势，也没有扎实基础与科班竞争。&lt;/p&gt;
&lt;p&gt;彼时我刚考上研究生，选的是生物统计。本科学生物，信息与计算科学也沾一点，机器学习也自学过一点。现在看来，哪哪都懂一点，哪哪都不精。&lt;/p&gt;
&lt;p&gt;这不就是&amp;quot;交换学科&amp;quot;的陷阱吗？&lt;/p&gt;
&lt;p&gt;但转念一想，如果不是因为什么都会一点，这个暑期学校的作业我也做不来。复杂适应系统、多智能体建模、NetLogo——这些词我之前连听都没听说过。&lt;/p&gt;</description></item></channel></rss>