合作的复杂性:基于参与者竞争与合作的模型 · 第四十九节
《合作的复杂性:基于参与者竞争与合作的模型》第四十九节
本节讨论基于参与者模型的编程工具与编程习惯。作者介绍了Swarm编程环境,它功能强大,能嵌套定义参与者、控制事件时序、随时探测状态,可在SantaFe研究所网站免费下载……
本节讨论基于参与者模型的编程工具与编程习惯。作者介绍了Swarm编程环境,它功能强大,能嵌套定义参与者、控制事件时序、随时探测状态,可在SantaFe研究所网站免费下载,但需在UNIX下用ObjectiveC编程,有一定门槛。由于StarLogo不适合严肃研究,作者建议初学者从过程语言中选择:Basic简单易用但计算慢,FORTRAN老旧,Pascal结构化易掌握,本书模拟多用它编写,C专业常用且是C++、Java的基础。选语言的关键是身边有人能答疑或有课程可学,否则按目的来定:小试牛刀用VB,长期发展用C或C++。
基于参与者模型的编程应实现三个目标:有效性,即程序正确实现模型,遇到意外结果要分清是程序错误还是模型本身的推论;可用性,即让后来者能解释结果、理解原理,因此要记录每个版本在数据处理、参数、行为规则上的差异;可扩展性,即方便后续使用者按新用途改写程序。为达成这些目标,工作须仔细,编程、文件编制、数据分析都要兼顾,切忌急于求成。作者给出八条建议:变量用长名并在程序开头全部定义清楚;多写注释,说明变量含义和子程序用途;程序版本设计成向上兼容,通过子程序和开关变量保留旧功能;输出要标示日期、版本号、参数、随机数种,以便精确复制运行;编程谨慎,声明变量取值范围,少用指针;每个版本都存档,说明模型、算法、输入输出,新版本只需写清与旧版的差异;数据分析尽量交给商用软件,自己程序只做平均数等简单处理,用数据表或Mathematica作统计和作图。