只靠自然语言对话,AI 就能帮你做 NetLogo 仿真了?

门槛

2026 年 8 月 9 日上午,我在知识星球里兴奋地记下了一段话:

今早用 AI 驱动 NetLogo 做仿真,以内置病毒传播 Model 为例,AI 全自动调节参数,多轮仿真分析随机性和干扰对策影响,生成一系列分析结果。全程我没有和 NetLogo 界面、菜单、代码编辑器打任何交道,结果数据和可视化就都自动完成。以后这部分讲授轻松多了。

你可能听说过 NetLogo

在复杂系统仿真这个圈子里,它被广泛用于教学和研究:免费开源,自带一整个模型库,装好就能跑现成的模型。

从小学课堂到研究生课程,都有人拿它教学;拿它做研究、写论文的,数以千计。

可它的门槛,对从没接触过编程的人来说,也着实不低。

做教育部项目研究虚假信息传播那阵子,我就用 NetLogo 内置的电脑病毒传播模型,搭过微博客虚假信息扩散模型,那篇研究发表在《情报科学》上;后来我在 2020 年的 《如何高效入门复杂系统仿真?》 里回顾过这段经历。

下面截图中那个网状图,正是从 NetLogo 病毒模型迁移过来的样子。

2021 年,我在 《如何高效入门 NetLogo 复杂系统仿真工具?》 里写过一句话:NetLogo「门槛很低,但是天花板极高」。模型跑起来不难,难的是从「看见动画」走到「按自己的问题改模型、做实验、解释结果」。

难在哪?先难在语法。NetLogo 来自 Lisp 语言家族,命令组织和常见高级语言很不一样。学过 C、Java、JavaScript 或 Python 的人,第一次接触未必比零基础的人更轻松。

另外,之前 NetLogo 的详细入门教程一直稀缺。2015 年,我在美国访学时特意背回来过一本厚厚的英文教材,也给研究生推荐过英文视频。学生很无奈:「老师,全英文的……」

好在 2021 年,集智俱乐部编著、张江教授与集智学园团队打造的《NetLogo 多主体建模入门》出版了,终于给中文研究者提供了更轻松的入门路径。

可就算有了优秀的中文教程,学习者仍要读懂模型语言,要会配 BehaviorSpace,要处理随机实验、输出文件、统计图和异常结果。真正的门槛不是一个点,而是一串环环相扣的动作。

这件事最近起了变化。

变化

变化来自 AI 编程助手。它们中有些已经不光会写代码,还能直接操作你电脑上的软件:装应用、点菜单、跑命令。这种能力有个专门的名字,叫 computer use—— 让 AI 像人一样看屏幕、移动光标、点击和输入。再加上多模态,也就是能看懂屏幕上的界面和图表,两样凑在一起,原本「先学会工具再谈想法」的门槛,正在塌陷。

拿这次 AI 操作 NetLogo 的试验来说,自然语言负责表达我的意图;computer use 让它看得见、点得动图形界面;多模态让它读懂截图、曲线和界面状态;文件与命令执行能力让它完成模型创建、批量运行和数据分析。原先隔在代码与图形界面之间的那堵墙,开始变薄了。

于是 8 月 9 日,我用 OpenAI 的 Codex 做了一次完整的试验。Codex 是我日常用的 AI 编程助手之一,之前在 《Claude Code, Codex, OpenClaw,我是怎么让它们配合干活的?》 里我已经为你介绍过它。

这次的试验,从升级 NetLogo、读懂一个现成模型、设计并跑完 120 次实验,到把这个模型改造成另一个领域的新模型、再跑 120 次、最后揪出一个图表错误,全程我没写一行代码,只是不断给出中文指令。

看完之后,相信你不仅能了解如何用 AI 驱动 NetLogo 做仿真,更可以举一反三,把它用在你自己独特的研究路径与环境中。

起步

我对 Codex 说的第一句话是:

「把 NetLogo 升级到最新版,告诉我都有哪些不同」

每年秋季,我都会给学生介绍复杂系统仿真方法,所以去年装过一次 NetLogo。但你知道的,软件一直在更新,去年装的早就不算最新版了。我又懒得自己查版本差异,索性让 Codex 代劳,哈哈。

Codex 接手之后先摸了底:我机器上装的实际是 7.0.3,包管理器 Homebrew 里还残留着一条已经失效的 7.0.2 登记,而官方当前提供 7.0.4。第一次常规升级就被那条残留登记卡住了。它的处理不是硬来,而是先清掉无效登记,再重新安装 7.0.4,然后把主程序、应用签名(软件没被篡改的凭证)、能否脱离界面运行这些安装细节挨个验证了一遍,旧版移进废纸篓留了后路。嗯,很是稳妥嘛。

当然,这些细节我事后看记录才知道。当时我看到的,就是一句「已完成升级:NetLogo 7.0.3 → 7.0.4」。

升级完,NetLogo 打开后,我自己手动选择了内置模型里的 Virus on a Network。

打开后,界面长这样:

左边是参数控件,中间是网络视图,右边是状态曲线。

理解

下面是我给 Codex 的第二句指令:

「给我解读我现在打开的这个 NetLogo model」

它只看界面,便认出这是官方示例 Virus on a Network,一个电脑病毒在网络中传播的模型:圆点是计算机,连线是病毒能走的通道;蓝色易感,红色感染,灰色有抗性。界面上的基线参数它也一并报了出来:150 个节点,平均每个节点 6 条连线,3 个初始感染源,每次接触 2.5% 的传播概率,每 1 个 tick(仿真里的一步)查一次毒,查到后 5% 概率康复,康复后 5% 概率获得抗性。

这些信息哪来的?原来是它自己点击上方标签栏,分别查看了模型自带的 Info 页和 Code 页。

Info 页是作者写的说明书,讲模型用途和玩法。而 Code 页,则是对应的代码:

Codex 从代码里抓出了一个说明书没明说的细节:这个模型虽然常被概括成经典的 SIR(易感、感染、康复免疫)三态模型,但代码实际是 SIS 和 SIR 的混合体。感染的节点康复后,大多数会重新变回易感,只有一小部分获得长期抗性。

别小看这一条。它意味着同一组参数下,病毒可能几步就偶然熄灭,也可能反反复复传很久。后面所有实验结果的解读,都建立在这个机制之上。

我还让 Codex 留了一张真实运行的证据。它调用 NetLogo 自带的预览命令编辑器,实际执行了 setup repeat 75 [go],也就是初始化后连跑 75 步:

图里的红蓝灰节点,是模型真跑出来的状态。

仿真

之后,我告诉 Codex :

「你合理的调整参数,执行几次,帮我对比」

Codex 先定了仿真方法:以当前参数为基线,每次只改变一个关键因素。理由它也讲了:这是随机模型,单次结果说明不了问题,每组要重复运行多次,比较感染峰值、持续时间和最终免疫比例,而不是拿单次随机结果下结论。

落到设计上,就是六个情景:基线、高连通(平均度 6 翻倍到 12)、高传播(传播率 2.5% 翻倍到 5%)、慢检测(查毒周期 1 拉长到 4)、快康复(康复率 5% 提到 10%)、高抗性(抗性概率 5% 提到 50%)。每个情景独立跑 20 次,一共 120 次,每次最多观察 2000 个 tick (NetLogo 中的时间步骤)。

批量仿真,用的是 NetLogo 内置的 BehaviorSpace。你可以把它理解成「实验流水线」:把参数组合和重复次数登记进去,它负责一遍遍地跑,把每一步的数据记下来。

上面是 Codex 配好的六个实验的列表。下面是基线实验的配置窗口,七个参数、20 次重复、每步采集的指标、启动和停止条件,全在里面:

批量仿真这活儿,搁在过去是要翻着手册学的。现在 Codex 替你配好了。

Codex 对快康复情景最初想设 15% 的康复率,结果这个值超出了界面滑块 10% 的上限。Codex 自己检测后,那组数据随即作废,按 10% 重新跑。自然语言降低了操作门槛,却没有取消仿真纪律。

120 次仿真跑完,结果如下:

这里比较特殊的是慢检测那一行。查毒周期从 1 放宽到 4,平均感染峰值冲到 86.1%,而且 20 次运行到第 2000 个 tick 时全都还有感染,终点平均还有 21.3% 的节点带毒。

出图

仿真结果数据有了,我又提了一个要求:

「用合适的方法对你得出的结论进行可视化」

但是我一眼看到,Codex 尝试去调用一个之前定义好的 Skill 。这和我的需求不符,于是我果断叫停,然后补充道:

不用调用什么专属工具,用你觉得最合适的方法来。

然后,我觉得还没有表达清楚,就又暂停,细化了要求:

「我觉得你所要呈现的,应该不只是一张图能说清的。对不同类型的问题,用不同类型的图。如果你觉得有必要的话,也可以使用动图来处理,完全放飞。」

它交出来的,是一套按问题分工的图。每张图只回答一类问题。

第一张,总览图,回答「六个情景总体差多少」:

第二张,分布图,回答「同一组参数下,随机性到底能折腾出多大差异」:

基线 20 次运行里,短的 3 个 tick 就自然熄灭,长的拖到 1769 个 tick。同一组参数,命运天差地别。看到没,你要是只跑一次、挑条「看着典型」的曲线放进报告,那就不合适了。

第三、四张是一对,早期轨迹回答「暴发怎么形成」,完整轨迹回答「感染能拖多久」:

两张必须分开。因为如果只看完整窗口,快康复和高抗性的早期变化会被压扁;只看早期窗口,又看不到慢检测的长尾。

第五张,生存曲线,它回答「感染在某个时点还活着的概率」:

第六张,终态构成,回答「结束或到达观察终点时,各状态各占多少」:

它还做了张动图,用固定坐标轴把六个情景的中位感染轨迹放在一起演变:

图做完,Codex 没有直接反馈给我,而是自己搞了一轮盲测,还真查出六个具体缺陷:长中文标题会挤成一团、动图的时间标签和图例打架、生存图里写死了特定情景的名字,诸如此类。全部修完,又另起一轮独立审查,把六个情景、120 次运行、删失数量(跑到观察终点仍未结束的样本数)和文件哈希(文件有没有被改动的校验值)核了一遍,结论是「通过,可以同步并交付」。

之后,才是你看到的前面展示的图形。

我全程没有指定过任何一张图的画法。我给的只有一个标准:不同的问题,配不同的图

变换

现成模型这条线已经走完:升级、读懂、实验、出图。

接下来才是我真正想干的事。接着,我又对 Codex 提了一个新要求:

Read more

添加评论
点赞收藏
点踩分享查看原文
评论
?
参与讨论