您好,欢迎来一对一服务网! [请登录]  [免费注册]
咨询电话:400-008-1115
  • 登录注册 >>
  • 选择书籍 >>
  • 填写订单 >>
  • 提交订单 >>
  • 等待收货
www.otoworld.cn
数控编程与操作
出版日期:2009-08 作    者:王骏 郑贞平
出 版 社:机械工业出版社 语    言:简体中文
条    码:978-7-111-27513-8 重    量:0KG
页    码:0 版    次:1-1
装    帧:平装 开    本:16
类    别:1114 国    家:中国
市场定价:24 OTO价格:24.00 为您节省:¥0.00
联系我们 在线服务
服务电话:0755-89631115
400-008-1115
 

数控编程与操作

   本书介绍了采用Swarm for Java进行仿真的基本原理及其实现方法。主要内容由三部分构成,第一部分为Swarm基础部分,主要介绍Swarm的安装过程、开发环境、设计框架及开发流程。第二部分为Java应用基础,主要介绍Java语言基础和流程控制、面向对象程序设计的基本概念、继承与多态、异常处理及Java应用程序接口。第三部分为Swarm for Java的编程及实现,通过具体实例讲解了Swarm基本编程、环境编程及主体行为观测界面设计,并给出3个应用实例。
    本书可作为研究生的基于多主体的仿真课程教材或教学参考书,也可作为高年级本科学生的选修课用书,还可作为科学研究人员及仿真爱好者的参考书。
 

目 录

让经济学更加鲜活(代序)
前言
第一部分 Swarm基础部分
第1章 Swarm概述 1
1.1 复杂适应系统与Swarm 1
1.1.1 复杂适应系统 1
1.1.2 主体及其基本性质 2
1.1.3 基于多主体的Swarm仿真 3
1.2 Swarm应用简介 4
1.2.1 Swarm在金融研究中的应用 4
1.2.2 Swarm在博弈论研究中的应用 6
1.2.3 Swarm在管理决策中的应用 7
1.2.4 Swarm在生态系统与人工生命中的应用 8
1.3 Java运行环境及开发工具简介 10
1.3.1 Java运行系统与开发流程 10
1.3.2 Java运行环境的安装和配置 11
1.3.3 Java开发工具包 13
1.3.4 Java源文件编辑环境的选择与设置 14
1.3.5 编写运行Application 16
1.4 Swarm for Java开发环境 18
1.4.1 Swarm for Java的安装与配置 18
1.4.2 Swarm for Java开发工具简介 20
1.4.3 编译运行Swarm for Java程序 22
1.5 本章小结 24
1.6 思考题 25
第2章 Swarm for Java的仿真框架及开发流程 26
2.1 Swarm的系统结构 26
2.1.1 Swarm的主体构成结构 26
2.1.2 Swarm中各种主体之间的逻辑结构 26
2.1.3 Swarm中各种主体内部的调度过程 28
2.2 Swarm程序开发模型 28
2.2.1 主体模块 28
2.2.2 ModelSwarm模块 28
2.2.3 ObserverSwarm模块 29
2.2.4 main模块 30
2.3 程序流程实例讲解 31
2.3.1 背景介绍 31
2.3.2 主体编程 31
2.3.3 ModelSwarm的编程 32
2.3.4 ObserverSwarm的编程 34
2.3.5 main编程 36
2.4 本章小结 38
2.5 思考题 38
第二部分 Java应用基础
第3章 Java语言基础 39
3.1 语言符号 39
3.1.1 标识符 39
3.1.2 关键字 40
3.1.3 常量 40
3.1.4 变量 41
3.2 数据类型 41
3.2.1 整型数据 42
3.2.2 浮点型数据 42
3.2.3 字符型数据 43
3.2.4 布尔型数据 44
3.3 运算符与表达式 45
3.3.1 赋值运算符与强制类型转换 46
3.3.2 算术运算符 47
3.3.3 关系运算符 49
3.3.4 逻辑运算符 49
3.3.5 位运算符 51
3.3.6 复杂运算符 51
3.3.7 运算符的优先级 51
3.4 数组 52
3.4.1 一维数组 52
3.4.2 多维数组 54
3.5 本章小结 56
3.6 思考题 56
第4章 流程控制 58
4.1 选择(条件)控制 58
4.1.1 条件语句(if-else) 58
4.1.2 多分支语句(switch…case) 59
4.2 循环控制 62
4.2.1 for语句 62
4.2.2 while语句 63
4.2.3 do-while语句 63
4.3 转向控制 65
4.3.1 break语句 65
4.3.2 continue语句 66
4.3.3 return语句 67
4.4 其他控制 67
4.4.1 异常(例外)处理语句 67
4.4.2 注释语句 67
4.5 本章小结 67
4.6 思考题 68
第5章 面向对象程序设计的基本概念 69
5.1 Java面向对象基础 69
5.1.1 类和对象 69
5.1.2 类的定义 70
5.1.3 类修饰符 73
5.2 对象的创建和引用 74
5.2.1 对象的定义 74
5.2.2 对象成员变量的引用 78
5.2.3 对象方法之间的消息传递 79
5.3 成员变量 79
5.3.1 成员变量的定义 79
5.3.2 成员变量修饰符 80
5.4 方法 81
5.4.1 方法声明 81
5.4.2 方法调用 81
5.4.3 方法参数的传递 82
5.4.4 方法修饰符 83
5.5 本章小结 84
5.6 思考题 85
第6章 继承与多态 86
6.1 继承与派生 86
6.1.1 子类生成(extends关键字) 86
6.1.2 this与super关键字 87
6.1.3 多重继承与接口 89
6.2 接口 89
6.2.1 接口定义 90
6.2.2 接口实现 91
6.3 多态 92
6.3.1 构造函数 92
6.3.2 方法覆盖 93
6.3.3 方法重载 95
6.4 包 95
6.4.1 包的定义 96
6.4.2 包的引用 97
6.5 本章小结 97
6.6 思考题 98
第7章 异常处理 99
7.1 异常的概念 99
7.1.1 异常的定义 99
7.1.2 异常处理的特点 99
7.1.3 异常类的层次结构 100
7.2 异常处理机制 102
7.3 异常处理方式 102
7.4 捕获异常 103
7.5 抛出异常 106
7.6 自定义异常 108
7.7 本章小结 109
7.8 思考题 109
第8章 Java应用程序接口 111
8.1 Java API中的包 111
8.2 java.lang类 112
8.2.1 java.lang.System 类 112
8.2.2 java.lang.String 类 113
8.2.3 java.lang.StringBuffer类 116
8.3 java.math类 117
8.4 java.util类 119
8.4.1 日期类Date 119
8.4.2 随机数类Random 121
8.5 java.io类 122
8.5.1 输入流与输出流 122
8.5.2 文件输入输出 123
8.5.3 缓冲区输入输出 126
8.6 本章小结 128
8.7 思考题 128
第三部分 Swarm for Java的编程及实现
第9章 Swarm for Java的类库结构 129
9.1 Swarm的类库结构 129
9.2 Swarm的类库 130
9.3 Swarm的基本类 134
9.3.1 Globals类 135
9.3.2 Selector类 138
9.4 本章小结 140
9.5 思考题 140
第10章 Swarm for Java的编程基础 142
10.1 主体集合的操作 142
10.1.1 数组操作类 142
10.1.2 字符串操作类 144
10.1.3 主体链表的基本操作类 146
10.1.4 主体链表的映射处理类 148
10.2 随机数的产生 151
10.2.1 均匀分布随机数类 152
10.2.2 正态分布 153
10.2.3 对数正态分布随机数类 155
10.2.4 指数分布随机数类 157
10.2.5 伽玛分布随机数类 159
10.3 Swarm的基本操作 160
10.3.1 Arguments类 160
10.3.2 HDF5Impl 162
10.3.3 Zone类 164
10.4 本章小结 166
10.5 思考题 166
第11章 环境编程 167
11.1 行为集合创建与调度 167
11.1.1 行为集合创建 167
11.1.2 序列事件调度 171
11.1.3 并发事件调度 175
11.2 对象集合的管理 177
11.2.1 随机选择对象 178
11.2.2 集合对象排序 179
11.2.3 标记对象 181
11.3 环境变量观测显示器 183
11.3.1 变量观测器 183
11.3.2 行为观测器 185
11.3.3 行为与变量观测显示 187
11.3.4 关联变量和类 190
11.4 本章小结 192
11.5 思考题 192
第12章 主体行为观测界面设计 195
12.1 统计分析结果显示 195
12.1.1 统计分析函数 195
12.1.2 时序曲线图 198
12.1.3 绝对量的柱状图 203
12.1.4 数据分布柱状图 207
12.2 图形界面显示 212
12.2.1 构建调色板 212
12.2.2 构建光栅 216
12.2.3 显示一个二维栅格 221
12.2.4 在图框中画图形 224
12.2.5 在面板上画图形 227
12.3 二维空间及显示设计 230
12.3.1 二维离散空间 230
12.3.2 二维空间中值的显示 233
12.3.3 二维对象空间 236
12.3.4 二维空间中对象的显示 238
12.4 仿真控制面板设计 241
12.4.1 观测设计步骤 241
12.4.2 控制面板设计 244
12.4.3 通过界面对变量与行为进行观测 248
12.5 本章小结 251
12.6 思考题 252
第13章 Swarm仿真实例 253
13.1 能源市场与环境市场的交互影响仿真分析 253
13.1.1 问题描述 253
13.1.2 问题建模 254
13.1.3 初始条件与实验数据 255
13.1.4 仿真结果及分析 256
13.1.5 结论 257
13.2 产业创新升级阶段市场结构演化仿真分析 258
13.2.1 问题描述 258
13.2.2 问题建模 260
13.2.3 初始条件与实验数据 263
13.2.4 仿真结果及分析 264
13.2.5 结论 268
13.3 西电东送对全国电力市场的影响仿真分析 269
13.3.1 问题描述 269
13.3.2 问题建模 269
13.3.3 初始条件与实验数据 272
13.3.4 仿真结果及分析 273
13.3.5 结论 277
13.4 本章小结 278
参考文献 279
 
 

 
 
 

让经济学更加鲜活
(代序)

经济是人类与自然界的交互,经济学既要研究资源配置,也要研究人的行为,后者尤为重要。原有的经济学在将人的行为简化抽象成理性假设的基础上,重点研究资源的优化配置,这主要是由以一般商品的竞争市场为研究对象和工具手段发展的阶段性所决定的。现实社会经济活动和人的行为特征越来越复杂,如当前人们正面临的由美国次贷危机引发的金融海啸蔓延波及全球的经济危机,以及能源短缺、生态恶化和局部的市场动荡等,对传统经济学构成了强烈的冲击和挑战,为经济学今后的发展提出了更高的需求,需要理论更加丰富多彩、鲜活生动。
自20世纪80年代以来,当代经济学新的前沿分支不断涌现,科学技术的迅猛进步提供的有力支持,促使经济理论研究正在发生着行为转向和复归,打开行为黑箱,撩开理性面纱,向更深和更广的领域进军,试图揭示微观个体简单的行为特征与整体形态和复杂现象的内在关系。刘贞博士敏锐地捕捉和顺应了这一新的动向,做了一些很好的应用案例,在此基础上与程勇军合作,适时地编撰和推出这本《Swarm for Java仿真及编程实现》学术专著,相信其对系统仿真、复杂性科学和经济社会复杂问题研究等有关人员大有益处。
目的与动机
Swarm的初衷是为研究群体行为而设计的一种强大的基于主体的仿真工具,它包含了许多功能模块,从而减少研究人员的程序开发量。随着时间的推移,它越来越多地应用于自然科学、工程技术、社会科学和系统科学等其他领域,如金融学、政治学、社会学、生物学、生态学、物理学、地理学、军事、航天工程以及计算机科学等许多方面。为了让更多领域的人了解和掌握Swarm,迫切需要一本系统详细地讲解如何应用Swarm工具实现多主体仿真的书籍。
在经济学研究过程中,Swarm是一种能够帮助研究人员对经济学思想和理论方法进行有效性检验,并对各种假设条件下的主体和群体行为进行观察的仿真工具。为了促进经济学研究人员的相互交流,需要一本介绍如何通过Swarm实现这种仿真验证的书籍。
Swarm还处于不断的发展和完善过程中,因此其相关的英文参考文献尚未及时更新完善。其Java版的用户使用手册只相当于一个功能说明书,介绍了Swarm类与方法的基本功能,而没有对这些类与方法的应用进行说明。所以,在现阶段也需要这样一本深入讲解Swarm仿真实现的书籍,以促进经济学仿真的进一步发展。
在Swarm的学习过程中,需要掌握一些Java语言的基础知识。由于Java语言的功能非常强大,用途也比较多,涉及到应用程序、Applet程序、网页编程和服务器编程等,这往往使Swarm初学者感到无所适从。实际上Swarm仿真只需要掌握Java应用程序编程中非常基础的一部分即可。因此需要一本仅介绍Swarm所涉及Java方面的书,而若为此单独成书内容又显得比较单薄,这就需要把涉及到Swarm的Java部分和Swarm结合起来进行讲解,以减小Swarm使用者的学习负担。
基于Agent的微观分析建模方法
经济行为主体的主动性、异质性、交互性和多变性等,使社会经济系统比自然的和物理的系统更加复杂。由于认识观念和理论方法的局限性,现代经济学重点研究一般商品的竞争市场,基于随机数学理论和统计学进行定量实证分析,而类似于基于Agent建模的微观分析方法,却能模拟“人”的真实行为,更加全面深入地分析现实的经济行为特征,就能进行复杂系统的动态仿真,有望解释像当今的金融海啸引发的全球性经济危机,像能源短缺和生态恶化等人类与自然界交互中的微观成因、结构效应和宏观涌现,解决像转折、突变、跳跃和动荡等传统方法力所不能及的复杂问题。
在计算机模拟技术的应用中,有两种不同的建模方法:基于Agent的建模方法与基于数学方程的建模方法。这两种方法都是在计算机上建立模型来对系统进行模拟,它们的主要区别在于所建模型的形式和模型的运行方式不同。在基于Agent的建模中,模型由一组Agent构成,这些Agent仿效了组成系统的主体,并封装了这些主体的行为。模型的运行由这些Agent的行为组成。在基于数学方程的建模方法中,模型由一系列方程式组成,模型的运行过程就是计算这些方程式的过程,经典理论的计量实证分析大多数都采用这类建模方法。
对基于Agent的建模方法,在用计算机模拟方法进行研究时一般需要用一定的理论作为建模的理论基础。复杂自适应系统(CAS)理论是基于Agent建模思想的理论基础,是由J?霍兰教授提出来的,把系统的成员看作是具有自身目的与主动性的、积极的、具有适应性的“活的”主体(adaptive agent)。更重要的是,CAS理论认为,正是这种主体的主动性以及它与环境反复的、相互的作用,才是系统发展和进化的基本动因。适应性造就复杂性是CAS理论的基本思想。
基于Agent的建模方法正是上述CAS理论的具体应用,主要由封装在计算机系统中的Agent、Agent间的互相作用、Agent所在的组织结构这3个基本要素组成。建模者的任务是定义系统中具有自适应性的Agent,赋予它们必要的行为规则和合适的参数,让它们在一个系统中进行对策。整个系统的宏观现象以这些Agent的行为规则、参数、学习过程等为基础体现出来。这种建模方法有明显的特点,首先Agent是主动的、活的实体,这点是CAS建模和其他方法建模的关键性区别;同时,在模型中,系统演变和进化的主要动力是个体与环境(包括个体之间)的相互影响,而不是个体本身的内部属性;再有,基于Agent的建模不仅把宏观和微观有机地联系起来,还引进了随机因素的作用,且处理随机因素的方法是很特别的。
多主体(Multi-agent)仿真是近年来出现的一种较新的基于Agent的建模仿真方法,在许多领域得到了广泛的应用,尤其与复杂性研究关系密切。多主体仿真是一类微观仿真技术,它利用分布式人工智能领域的最新研究成果,依靠计算机强大的计算能力,采用自下而上的思路,对复杂系统建立模型,其中的微观个体与环境之间的相互作用,涌现出系统的宏观特征,从而在微观和宏观之间建立起联系的桥梁。多主体仿真建模灵活、自然,个体属性和行为不受限制,特别适合对由具有一定智能性的微观个体组成的复杂系统进行研究,受到生物学、经济学、社会学和管理学等学科的重视,成为一种新颖的研究工具,对提升社会科学研究方法有很大益处。
面向对象与面向用户
从一个用户的角度来看,随着计算机软件技术的不断进步,一种又一种基于Agent建模方法的应用平台先后被开发出来,它们的功能越来越强大,使用起来也越来越方便。目前常见的应用平台有StarLogo、Ascape、AgentSheets、CelLab、Cormas、JADE、MadKit、MASON、NetLogo、RePast、Swarm、TNG Lab和PS-I等,关于各种平台的比较一直没有定论,实际应用时往往是对哪种平台用熟练了,就喜欢用哪种平台。
1)StarLogo。StarLogo是MIT的Media Laboratory和Teacher Education Program在l989~l990年开发的一个可编程的建模环境,它通过两类实体,即海龟和草坪的交互运作来模拟现实世界的运转,其功能简单,易学易用,适合于初学者。
2)NetLogo。NetLogo是由美国西北大学的CCL(Center for Connected leaning)和Computer Based Modeling研发的,从2002年5月开始正式推出第1版起,先后推出了多个版本,最新的版本是Version 4.4,在2008年12月推出,可用于科学研究,而且可以供老师和学生在课堂的网络教学环境中使用,因而备受青睐。
3)RePast。RePast(Recursive Porous Agent Simulation Toolkit)是芝加哥大学的社会科学计算研究中心希望有一个比Swarm更方便的模拟软件来满足他们一个较短的学习周期的需要而设计的一个基于Agent的“类Swarm”的模拟软件架构。RePast最主要的特点是底层结构的抽象性,很强的可扩展性和良好的表现能力。
4)Ascape。Ascape是布鲁金斯研究所(the Brookings Institution)开发的一个高度抽象的基于Agent的建模平台。Ascape有很强的表达力,功能健全,且可以在任何环境下开发。Ascape的结果显示功能也非常强大,有关联的二维视图、一维滚动视图和单一视图,使用者还可在运行时通过选择不同的制图特征来定制自己的视图。
5)TNG Lab。TNG Lab(Trade Network Game Lab)是美国爱荷华州立大学开发的一个最初主要为研究商业网络而设计的特殊的可计算实验室。在TNG Lab中建模也是一种基于Agent的思想,它的内部主要包括买家、卖家和经销商人3类独立的主体,每一类主体可以反复地选择各自认为更合适的商业合作伙伴,从而参与到无合作博弈的有风险交易中,并随时间推移改进他们各自的商业策略,其在经济研究和教学中应用十分广泛。
6)MASON。MASON是一个离散事件多主体仿真核心Java库,用做大型自定义Java仿真的基础,还提供轻量级仿真所需的一序列工具。MASON实现比RePast更小、更快的核心库,关注执行速度、跨平台能力,对于经验丰富的程序员实现计算密集型仿真是个好的选择,结果精巧,运行速度快,可以在多台计算机之间分配任务。
TNG Lab是一个相对专用性的平台,在经济学的教学和研究中应用比较好。还有一种平台Z-tree,适合实验经济学的数据处理分析,也比较广泛地用于一些高校的教学和研究中。
总的来看,无论是通用的还是专用的模拟平台,都可大致上划分为面向对象(问题、任务)与面向用户或使用者两类(当然,还有针对计算机专业人员的,有面向语言、算法的等)。Swarm是应用最早,应用领域最广泛,也最有影响的仿真平台之一,Ascape、RePast和MASON都可以看作是Swarm的一族,经改进后许多方面都比Swarm更有效,主要是针对交互主体类问题设计开发的。另一类则是以NetLogo为代表的Logo一族,可以说是面向用户或使用者的,其最大的特点是易用性好,应用也很广泛,功能通用比较强大,是目前众多学习者的首选;但对于大型模型来说,NetLogo还有待检验。
本书的特色
本书是作者对实践经验的总结和提升,是对用现代计算机技术解决复杂经济问题所做的积极探索和尝试。本书主要有以下几方面的鲜明特色:
1)面向用户的定位把握准确,相应的技术介绍、应用案例的选择和编排合理恰当,使读者易学易用,还提出一些有待探索的问题。
2)把Swarm for Java中的Java部分和Swarm部分统一,对Swarm中用到的Java部分进行了精心挑选,以便读者在较短的时间内掌握和运用Swarm for Java进行相关的研究工作。在具体编写过程中采用理论、实际操作与案例相结合的方式,针对每条语句进行讲解,并给出相应的代码与实际操作图片。
3)为了便于读者理解和接受,在章节编排上由浅入深,分3部分逐层展开。首先讲解Swarm for Java的应用、安装、调试及其结构和开发流程;紧接着,为了使读者更深入地理解Swarm的内涵,对涉及到Swarm的Java部分基础知识进行讲解;然后在此基础上,对Swarm for Java的各部分功能、内涵及观测器界面显示进行详细阐述。
4)在内容上采用统一的结构模式,以便于读者轻松阅读和及时查询相关信息。本书的内容主要涉及到两种类型:基本语法和类与方法的使用讲解。对于语法的讲解分为语法说明、例题、运行结果和程序说明5部分。对于类与方法的讲解主要分为常用方法、方法举例、例题、运行结果和程序说明5部分。讲解时图文并茂,通过例子的源程序代码来说明语法和类与方法的使用,通过运行结果和程序说明来对程序做进一步的说明和讲解。
应用展望
早在10年前,我们就与中国人民大学的陈禹教授商谈,如何在中国推广应用复杂适应系统理论、基于主体建模和实验经济学等,并于2000年在北京合作举办了全国性的“博弈论与Swarm应用”专题研讨班,这应该算是国内在这一领域的标志性事件。如今,人文社会科学、自然科学中的物理经济学,系统科学的基于自适应性主体的建模,计算机的人工虚拟经济和计算经济学(ACE)等跨大学科门类的交叉,有了一个明确的共同指向,多路进军汇集在这一领域,形成了强大的力量,创造了良好的时机。
随着计算机模拟技术的不断进步,基于Agent的模拟平台也会不断地继续发展,这种发展主要体现为两个方面:一是易用性;二是大型化。就目前可预见的来说,基于Agent的模拟平台可能会朝着以下几个可行方向发展。
1.对使用者编程基础的要求将更低,从而可供更多的研究者使用
模拟平台的作用已得到公认,但由于很多研究者缺乏编程基础,只能望而却步,像Swarm和RePast虽功能强大,但往往不知道怎样开始使用。将来的建模平台会通过增加与用户的交互性来降低对编程的要求,但是,对于一些要求很高的大型平台,这个方面的要求会放松,就像MASON一样,计算平台的终极目标是完成任务,有时易用性会影响到模拟的科学性,但在保证科学性的前提下易用性仍是计算平台发展的主要方向。
2.分布式模拟技术的进一步应用
仿照现实决策流程和情景进行分布式决策模拟,在目前所见到的几种模拟应用平台中,NetLogo的最新版本已经在这方面有了一定的突破,MASON可以在多台计算机之间分配任务,以后,易于使用的分布式模拟的类库会逐渐出现在各种平台中,这样模拟平台从功能上和技术上都会有大的改进。
3.基于网络(web-based)的模拟会逐渐在各个模拟平台中体现
与互联网对接,一方面是能直接从互联网上获取信息资料,另一方面是能将已建好的模型以一定的数据结构在Web上发布,并提供相应的模拟功能。同时,各种模拟软件框架之间相互通信的问题也将被解决,形成一种统一的基于主体的建模软件框架。目前,由于各种平台软件众多,形成了诸侯争霸的局面,这是平台发展初级阶段的体现,下一步将是各种软件开始互相兼容的阶段,进一步形成统一的平台框架。
4.模拟平台对数据库技术的依赖会越来越强
复杂系统的分析模拟需要更大规模的数据挖掘和数据库技术。大型的模拟必然需要也将产生大量的数据,这些数据的存储和分析就需要数据库的支持。虽然现在的模拟框架,例如NetLogo、Swarm都提供了一定的数据处理功能,但主流数据库的数据存储和处理功能是不可替代的,估计Matlab以后有可能会被一些平台软件链接,以利用Matlab强大的计算、图形功能。
5.在表现技术上,3D技术将会逐渐引入各类模拟平台
逼真是模拟的生命力所在,也是经济理论研究的发展趋势。目前的模拟平台有光栅图、柱状图和曲线图等表达方式。在引入3D技术、情景动画后,综合处理数字、图表、文字、图像、音频、视频以及历史上以不同方式保留下来的珍贵资料等数据、信息资源,模拟平台在运行和结果显示的表达方面将大大加强。图形功能的加强,才可能使得仿真的效果更加逼近真实,实现动态可视化,进一步达到仿真的目的,更加有力地推动经济学研究,支持科学决策。
让经济学更加鲜活,插上现代科学的翅膀,飞的更高,更远……

勉为序!

王国成
 

前 言
Swarm for Java是桑塔费研究所(SFI)开发的一个用来帮助研究人员分析复杂适应系统的多智能体仿真工具,由于它是作为Java的一个类库来进行扩充与发布的,因此,它很快成为经济学、金融学、政治学、社会学、生物学、生态学、物理学、地理学、军事以及计算机科学等领域的主流仿真工具。Swarm的建模思想就是让一系列独立的Agent通过独立事件进行交互,帮助研究由多个体组成的复杂适应系统的整体行为。用户可以使用Swarm 提供的类库构建模拟系统,使系统中的主体和元素通过离散事件进行交互,并通过相应的类来分析、控制与显示复杂自适应系统的仿真过程与结果。由于Swarm 没有对模型和模型要素之间的交互进行任何约束,因此基于Swarm仿真平台的应用研究得以迅猛发展,为复杂系统建模方法带来了崭新的概念、思路和方法。
为了便于理解,本书在编写上充分体现了简单易用的特点,步骤清晰、内容丰富,并带有许多插图以便帮助读者理解基本内容。同时,本书在内容编排和例题选择上进行了严格的控制,以确保一定的深度和广度。书中需要掌握的知识都举有实例,每个例题紧紧围绕仿真过程中可能遇到的问题,并配有执行结果插图和对源程序的详细说明。学习本书的读者应该对计算机操作有一定的认识,有一门计算机高级语言基础的读者学习本书会感到得心应手。
本书分为三部分,第一部分为Swarm基础部分,主要介绍Swarm for Java的背景知识、相关概念、安装工具、配置方法及开发流程。第二部分为Java应用基础,主要介绍Java编程中常用的类、变量、语法及函数。对于有Java基础的读者,可以跳过该部分。第三部分为Swarm for Java的编程及实现,主要依据Swarm程序开发流程中所涉及到的类来讲解Swarm。
为了便于读者阅读本书,本书在编写过程中,始终遵循以下几项原则:
(1)本书本着把程序应用基础与当前研究工作相结合的思想,以帮助采用Swarm进行研究的工作人员解决在实际研究中出现的问题。希望读者在读完本书之后能够掌握Swarm仿真的基本思想,掌握Swarm编程的基本方法,能够应用Swarm解决实际工作中出现的问题。
(2)本书在结构编排上更侧重于依据读者的学习认识过程进行教材的编排,可使读者由浅入深地掌握该工具,并能结合具体实例应用该工具开展一些实际工作。本书首先对Swarm应用背景、主要用途、基本思想及结构进行讲解。为了便于读者掌握,本书还针对Java语言基础应用进行了讲解,并结合实例,一步一步地使读者掌握Java编程的基本思想及实现方法。在奠定了Java应用程序编程基础之后,本书开始讲解Swarm中的具体结构的实现,并介绍了比较常用的Swarm类库中的类及其使用方法。为了使理论与实践相结合,便于读者学习,本书在最后给出了3个简化的应用实例,一个是能源市场与环境市场的交互影响仿真分析模型,一个是产业创新升级阶段市场结构演化仿真分析模型,第3个是西电东送对全国电力市场的影响仿真分析模型,并给出Swarm仿真的源代码及注释。
(3)为了便于读者阅读本书,本书在编写过程中,也遵循以下几项原则:
1)每一段理论后要有一道例题,对于语法的讲解,主要分为【语法说明】、【例题】、【运行结果】和【程序说明】4部分。对于类的讲解,则主要分为【常用方法】、【方法举例】、【例题】、【运行结果】和【程序说明】5部分。
2)所有的例题都尽量与实际应用相结合,并且做到前后呼应,以便形成一个完整的知识理论体系。
3)本书的所有例题均通过上机调试,特别是一些经典例题,本书是经过上机调试通过后才给予引用的,希望这些例题能给读者提供一些帮助。
4)本书所使用的所有计算机软件都可以从http://ftp.swarm.org/pub/中免费下载,即使读者的计算机没有与局域网或Internet相连接,也可以在一台独立的计算机上完成本书所有源代码的编译、执行操作。
本书在编写的过程中,得到中国社会科学院数量经济技术经济研究所、中国博弈论与实验经济学学会主席王国成教授,清华大学常务副校长、原清华大学经济管理学院院长何建坤教授,以及清华大学能源环境经济研究中心主任张希良教授的大力支持与帮助,在此向他们表示衷心的感谢!
在本书编写的前期,刘云、鲜康两位同学为本书资料的收集和程序的调试做了不少工作,在此表示感谢。
本书是国家自然科学基金《西部能源复杂高层建模方法》(批准号:90410016)中国博士后科学基金《基于过程理性的可再生能源上网激励机制研究》(批准号:20090450367)的研究成果之一。
由于作者水平有限,书中难免有错误之处,恳请读者批评指正。

编 者