复杂系统计算机仿真

Download Report

Transcript 复杂系统计算机仿真

复杂系统的计算机模拟
探索复杂性的模型方法
方美琪
[email protected]
复杂
——诞生于秩序与混沌边缘的科学
一场激动人心的科学观念的革命
瞬间照亮了各个学科领域,其中的原
则和思想影响是如此地深远和广泛,
以至于绝大多数学科都卷入其中!
过去我们用数学给出世界完美的描述,我们很陶醉,
以为我们已经认识了世界。但近来我们发现世界
其实很复杂,并不确定,偶然的小情况可能放大
为决定性的事件,影响了整个历史进程复杂地发
展。
原来组成系统的个体是有适应性的。个体的适应性
就产生了系统的复杂性。
用计算机程序描述个体的行为,在一定的框架之
下,个体平行地动作起来,这包括个体对外界的
适应,偶然的小情况,个体的相互作用…..如
此,计算机模拟就比较真实地反映了复杂世界的
一个个方面。
第一节 复杂性科学
1. 确定性的终结、复杂性科学的
兴起
2. 路径依赖的反思
3. 复杂性研究的方法
第二节 复杂系统
1.系统理论
2.复杂适应系统
第三节 模型与模拟方法
1.
2.
3.
4.
5.
模型
建摸与模拟
模拟软件平台SWARM的介绍
模拟软件平台STARLOGO的介绍
应用举例
第一节 复杂性科学
• I 确定性的终结、复杂性科学的
兴起
终结!
I 确定性的
拉普拉斯决定论
宇宙不过是一台机械的钟表
•
宇宙的未来完全由它的过去决定。
•
世界是可被预知的。只要我们明白了支配
宇宙的规律,那么我们就能推察过去,预言
未来。
•
宇宙的统一规律已找到了(牛顿),宇宙
的图景已被描绘出来了。
确定性的乐观
诗人蒲柏为伟大的牛顿写下的墓志铭所言:
自然和自然的法则在黑夜中隐藏,
上帝说,让牛顿去吧
于是一切都已照亮。
通向混沌
• 初始条件的微小变动就会导致轨道完全
不一样。 “差之毫厘,失之千里”
• 牛顿定律本身虽是确定性的,但它所描
述的具体事物,很可能出现随机行为。
• 混沌 = 非线性动力学 =难以精确求解
洛伦兹与气象混沌
• 1963年的一天,气象学家洛伦兹踱进麻省理工
学院的咖啡馆。而在他进来之前,他刚把一个
数据输入他那台现在看来工作速度其慢无比的
计算机,以验证上一次的结果。他知道结果还
需要等一个来小时,他大可一边躲开噪音,一
边来悠闲地享受点咖啡。当他回到自己的工作
室时,令他惊讶的事发生了:这次的结果与上
次的结果在开始时相同,但到后来却出现了很
大的差异。他的结果是通过曲线表示的,这就
是说两条曲线只是在开始时相吻合,而到后来
两者却分道扬镳了。
混沌与复杂
• 复杂是多体系统
• 多体之间的交互关系是非线性的
• 单独一个主体的运动轨迹是混沌
• 系统整体则涌现出一定的秩序和结构
例子:湍流与水分子 社会与人 历史规律
经济周期与经济主体 股票行情与股民的
行为
在传统的社会科学研究中,解释和预测间的过渡
看来太随意而缺乏严谨了——对一个社会现象
的正确解释并不意味必然能够对这个现象的未
来进行预测,特别当内在机制中有非线性关系
时,这种从解释到预测之间的思维延伸几乎百
分之百是不可能的。复杂理论告诉我们,即便
我们能够很清楚地界定和完全掌握了对个体行
为影响的所有因素,对组织或机构行为的预测
仍然是非常不充分的。
人类认识实践中的经验教训
大自然对人类线性思维的教训
•
水坝生态
•
中国垦荒与沙漠化
•
美国西部的风尘暴
•
核泄露
•
人工生态实验的失败
《失败的逻辑》事情因何出错,
世间有无妙策
为什么铁路信号系统工作正
常时,列车仍然会发生撞车
事故?为什么所有操作人员
警觉地坚守着工作岗位,核
反应堆依然会发生灾难性的
熔化事故?为什么我们制定
得甚好的那么多专业和个人
计划,会如此频繁地出岔子?
对人类思维方式的反思
• 德国 心理学迪特里希.德尔纳 思维复杂
性研究
• 用计算机模拟情景试验
• 让不同的专家以游戏的方式 发掘决策思
维模式的一般特征
• 理性思维的局限性:逻辑严密 线性思维
方式
• 直觉、联想=思维的并行
直觉思维整体思维的回归
• 世界上原来不只存在一种逻辑思维方式
• 神秘主义思潮和新时代(new age )运动
II 路经依赖的反思
路经依赖
• 系统的发展与其初始条件紧密相关,与
其发展过程中的偶然事件密切相关
• 个体微不足道的行为可能产生出乎意料
的结果
马屁股的宽度决定了火星探测
发射器的宽度?
• 马屁股的宽度决定了双马马车的车辙宽
度 决定了 电车轨道的宽度
• 电车轨道的宽度决定了铁轨的宽度(修
建第一条铁路顺着马车的车辙印记)
• 铁轨的宽度决定了火车的车厢的宽度
• 决定了火箭发射仓的最大宽度(为了运
载方便)
• 决定了火星探测发射器尺寸
• 故事是颇有趣的。从一定意义上说,今
天世界是最先进的运输系统的设计,或
许是由两千年前两匹战马的屁股宽度来
决定的。历史惯性的力量是多么的强大,
要冲破由惯性形成的规则又是多么的艰
难。
经济领域内的路经依赖
• 经济领域内的路经锁定:钟表的顺时针,
• 信息化的标准和垄断
• 微软的战略: 当盗版让人们已经习惯于使
用windows时,就会受制于它,很多人只会
使用装了windows的计算机.
• 高科技的竞争就是标准的竞争 DVD格式
无线上网的格式的争议
自然科学领域的路径依赖
• 极其微小的初始状态会成指数的放大,
极大地影响了混沌系统的输出
• 人类对世界的认识实践活动影响了世界
科学认识的反思
• 人类对世界的认识实践活动影响了世界
• 后现代科学:自然规律是自然的习惯
• 集体的习惯有被锁定成为既定成俗的倾向 个
人习惯之间的交互涌现出集体的习惯
• 自由落体难道是铜球的一种难改的积习?
• 万有引力难道是物质世界的一种惯例?
• 惯性vs习惯
参考 作为习性的自然法则:科学的后现代基础
[英] 鲁珀特·谢尔德拉克 Sheldrake 网上有个人
主页
科学认识的反思2
• 科学的自然观,不以人的意志为转移的客观
世界是否存在?完全严格的重复试验是否可
能?
• 完全严格的重复实验是不可能的
• 人是否可以第二次踏入同一条河流?
• 反归纳法 归纳得到的现象越多,推广的余地
越小
• 正归纳 归纳得到的现象越多,推广到全部的
可能性越大
后现代科学
• 心理学家 麦独孤的老鼠迷宫实验
随着实验的重复进行,虽然选定重复实验
的老鼠是完全不同的个体,但老鼠的智
力却随着实验的重复而递增,后来参加
实验的老鼠比前面参加实验的老鼠更快
地学会走出迷宫
• 文化人类学和新时代巫术的兴起 影视界
的 《波利哈特》热
3. 复杂性研究方法
复杂系统的特征
•
•
•
•
•
•
•
•
涌现
非线性
反馈循环
开放式
部分不能包含整体
路径依赖,与历史相关(混沌特性)
多层次嵌套
边界模糊
复杂系统研究的议题和范例
• 发现和应用刻划社会系统、自然系统演
化的规律的普适性方法
• 对人工技术系统(企业信息化、互联网
络、数字化生存)的演化规律进行探讨
例如:企业信息化建模 信息经济学 人工
技术网络和社会网络的脆性研究 网络对
社会交往的影响 交往媒介的革新与社会
文化的变革等
复杂系统的普遍性
•
•
•
•
生命体
智力——神经网络
社会系统 蚁群 经济 股市
人际关系网 互联网 电讯网 航运线路
生命体的复杂性
• 2002年5月,英国《自然》周刊上宣布在冰岛北部
海下发现了一种迄今所知最小的生命。这种被称
为“Nanoarchaeum equitans”的微生物属于古细菌
的一种,其基因组的DNA碱基对仅有50万左右。
假设一个基因的平均长度为1000个碱基,那么这
个细菌所拥有的基因大约是500个。如果每个基因
编码一种蛋白质,那么这个细菌最多可以拥有500
种蛋白质。
• 哪怕是最小、最简单的生物体,也是由许多执行
不同功能的组分构成的。因此,生命复杂性的第
一个特征是,生命是一种复合体,不可能由一个
成分(一种基因或蛋白质)构成。
全
球
通
讯
网
络
全球通讯网络
航
空
交
通
网
航空交通网
分形图案
分形分布的宇宙:瑞士天文学家Franceso
Sylos Labini 宇宙平均看起来是各向同性的,
但却不是均匀的,我们在某一层级上。。。
CAS复杂自适应系统理论
• CAS理论的最基本的思想
• 系统的复杂性(整个系统的演变或进化,包括
新层次的产生、分化和多样性的出现,新的、
聚合而成的、更大的主体的出现等等,)是来
源于系统中的成员的适应性。所谓具有适应
性,就是指它能够与环境以及其它主体进行交
流,在这种交流的过程中“学习”或“积累经
验”,并且根据学到的经验改变自身的结构和
行为方式。 [1] 参见《系统科学》,徐国志等,
上海科技教育出版社 2000年 P252
返回
复杂系统研究的方法和理论
• 结构状态描述
分形分维 状态空间 自组织与耗散结构
• 演化机制的动力学描述
艾根超循环
协同学
• 复杂系统建模与模型表示
受限生成系统 网络模型 非线性动力学方程
元胞自动机
多主体系统 人工生命
复杂系统研究的方法和理论
• CAS理论
• 网络模型:复杂网络拓扑研究 小世界网
络 尺度无关的网络
为什么用计算机?
•1860 年,法国天文学家 Delaunay( Charles Eugene
Delaunay,1816-1872)为计算受到地球与太阳重力
影响的月球运动轨迹,花了二十年,计算过程填满一
本书,也只得到一个近似解
•1970年, 用符号方程检查他的计算,计算机只花了20
个小时,不但求出更精确的近似解,还找出 Delaunay
的三个计算错误
•四色图问题
•整体大于部分之和:个体设计上的简单规则不能预料
交互过程中涌现出的整体新特征
•根本原因:——非线性方程的不可积,不能精确求解,
不能长期预测
人工社会
• Sugar scape 模型 糖域模型 芝加哥大学社
会政治学研究所
• 人工社会拓展了社会学、人类学研究的
手段
• 在虚拟的社会中观察战争、文化等因素
的形成
• 例如:货币的形成过程。在一个追求交
换效益最大化、以分工细化为方向的人
工社会中这是必然发生的。
统一规范与计算机建模工具
计算机建模工具应该 规范研究 方便研究
方便交流
• 工具化
• 标准化
• 简便化
• 跨学科性
如 Swarm Repast Ascape Satrlogo Dynamo等
模型方法是现代科学的一种核心方法
• 用于复杂性研究的典型信息模型是一种
半经验半理论模型。
• 模型是知识表示的基本概念和工具
第二节 复杂系统
•
•
系统理论
复杂适应系统
系统理论
系统
什么是系统?贝塔朗菲认为,系统
是处于一定相互关系中与环境发生关
系的各组成部分(要素)的总体。
或者说,系统是集合内各要素按
一定的结构组织而成的一个整体,并在
与外部环境进行物质、能量、信息的
交换过程中体现出一定的功能。
系统科学
• 系统科学是探索系统的存在方式和运动变化规
律的学问,是对系统本质的正确反映和真理性
认识。系统科学已经形成了一个学科群:如系
统论、信息论、控制论、运筹学、博奕论、协
同学、耗散结构理论等。
• 系统科学方法是按照系统科学的观点和理论,
把研究对象视为系统来解决认识和实践中的各
种问题和方法的总称。
系统科学方法的原则
运用系统的观点研究和处理对象时,要把
握以下一些原则:
(1)整体性原则。整体性原则是系统方法
的首要原则。
(2)动态原则。这是指系统方法的历时性
原则。
系统科学方法的原则(续)
(3)最优化原则。
亦称整体优化原则。本着
“多利相权取其重,多害相权取其轻”的精神
进行综合优化和系统筛选。
(4)模型化原则。 采用系统科学方法需要这真
实系统模型化。模型化原则是采用系统化方法
时求得最优化的保证。
前两个原则是基础,第三个是目标,第四个是
手段。
系统科学方法的作用
为人们提供了新的思想模式,是
推动科技整体化、综合化的重要
方法。兼具多种认识功能,是研
究复杂系统的有效工具。为人们
提供了制定系统最佳方案以实行
优化组合和优化管理的手段。
探索复杂性的方法
一 探索简单性
• 研究相对简单的对象特别是把用简化的
方法研究事物,称为探索简单性。
• 近代自然科学基本上属于探索简单性的
科学,人们形成了一种信念,即认为一
旦掌握了简单性的实体和关系,任何复
杂的对象都可以构造和计算出来。
二 探索复杂性
•
•
•
•
强调整体与部分的关系是一种非加和性。
复杂系统各要素之间存在非线性。
系统变化过程服从因果反馈规律。
系统不但存在,还在生长和消逝着。
复杂性探索的方法论启示:
•
•
•
•
•
从还原论到整体论的转变;
从线性观到非线性观的转变;
科学兴趣从简单性向复杂性的转变;
从崇尚解析方法向重视非解析方法的转变;
确定论和概率论两套描述体系从对立到沟
通。
复杂适应系统理论
的最基本的思想
• 复杂适应系统也即CAS(Complex Adaptive
System)。
• 我们把系统中的成员称为具有适应性的
主体(Adaptive Agent),简称为主体。
• 所谓具有适应性,就是指它能够与环境
以及其它主体进行交流,在这种交流的
过程中“学习”或“积累经验”,并且
根据学到的经验改变自身的结构和行为
方式。
• 整个系统的演变或进化,包括新层次的
产生,分化和多样性的出现,新的、聚
合而成的、更大的主体的出现等等,都
是在这个基础上出现的。
复杂适应系统的例子
•
•
•
•
生物有机体
生态系统
经济
运输
为什么使用
Agent-Based Modelling
• 传统的建模方法能够描述宏观的系统,
但是并不能解释一些特性的来源;
• 不能很好的处理离散系统;
• ABM能够很好的针对以上问题进行处
理,它是传统建模方法的一个补充。
CAS基本思想
1994年正式提出
我们把系统中的成员称为具有适应性的主体
(Adaptive Agent),简称为主体。所谓具
有适应性,就是指它能够与环境以及其它
主体进行交流,在这种交流的过程中“学
习”或“积累经验”,并且根据学到的经
验改变自身的结构和行为方式。整个系统
的演变或进化,包括新层次的产生,分化
和多样性的出现,新的、聚合而成的、更
大的主体的出现等等,都是在这个基础上出
现的。
基于CAS思想的要点:
A)主体(Adaptive Agent)是主动的、活的实休。这
点是CAS 和其他建模方法的关键性的区别。正是
这个特点,使得它能够用于经济、社会、生态等
其它方法难于应用的复杂系统。
B)个体与环境(包括个体之间)的相互影响,相互作
用,是系统演变和进化的主要动力。以往的建模
方法往往把个体本身的内部属性放在主要位置,
而没有对于个体之间,以及个体与环境之间的相
互作用给予足够的重视。这个特点使得CAS方法能
够运用于个体本身属性极不相同,但是相互关系
却有许多共同点的不同领域。
基于CAS思想的要点:
C)这种建模方法不象许多其他的方法那样,
把宏观和微观截然分开,而是把它们有
机地联系起来。它通过主体和环境的相
互作用,使得个体的变化成为整个系统
的变化的基础,统一地加以考察。
D)这种建模方法还引进了随机因素的作用,
使它具有更强的描述和表达能力
CAS了描述复杂适应性的6个特点:
• 分散的相互作用
全局现象是由许多分散的
异质主体的相互作用产生的,任意给定主体
的行动依赖于对有限数目其他主体的行动和
这些主体共同建立的积累状态。主体的差异
性导致积累行为的“永远新奇”
• 没有全局控制者
没有全局性实体控制相互
作用,控制产生于主体间的竞争和写作机制。
经济行为通过法律制度、设定的角色和波动
的联系调节。没有全局竞争对手—―个体可
以运用经济中的所有机会。
CAS了描述复杂适应性的6个特点:
• 层次交叉的组织 经济中具有许多层次和相
互作用。任何给定层次的单元(行为、动作、
策略和产品)都作为构建较高层次的单元基
本块。整个组织不仅具有层次性,层次间还
存在许多相互作用。
• 连续的适应性 依据积累的经验,主体的行
为、动作、策略和产品不断调整,导致系统
不断适应,层次间还存在许多相互作用。
CAS了描述复杂适应性的6个特点:
• 永远创新
新行为和新结构可能刺激更新的行
为和更新的结构的创立,产生一个持续创新的
状态。经济中的新市场、新技术、新行为和新
组织不断创立新的环境,填充新环境的行动将
产生更新的环境。静态被动态代替。
• 偏离均衡的动态
由于新的环境、新的潜在力
量、新的可能性不断产生,经济运行远离任何
最优或全局的均衡。均衡是暂时的,非均衡是
常态。意味着改进通常是可能的,并且却是是
由规律的发生。
CAS的7个有关概念
• 1.聚集(Aggregation)有两个含义。
– 简化复杂系统的一个标准方法——即把相似的事物
聚合成类,例如树、汽车、银行等。
– 主体通过“粘合”形成较大的更高一级的主体——
介主体(meta-agent)。
• 2.标识(Tag)
– 在聚集体的形成过程中,标识机制在起作用。标识
的作用在于区别主体。聚集体的形成或者说主体的
聚集都是有选择的,并非任意个体都会聚集。标识
的作用在于促进主体选择性的相互作用。
3.非线性(Non-linearity)
非线性是指个体自身属性的变化以及个体之间的相互
作用并非遵从简单的线性关系。因为这样,复杂系
统的行为才会如此难以预测;才会经历曲折的进化
过程,呈现出丰富多彩的性质和状态。
4.流(Flow)
在个体与环境之间存在着物质流、能量流和信息流。
CAS理论认为这些流的渠道是否通畅、周转迅速到
什么程度,都直接影响系统的演化过程。
5.多样性(Diversity)
CAS理论认为,在CAS系统中,多样性既非偶然也非
随机。每个主体都安顿在由以该主体与其他主体相
互作用所限定的小生境上(niche,或翻译为生态位)
CAS理论认为,多样性产生的原因在于适应过程中,
是一种动态模式,具有持续性和内聚性。
CAS系统与其他系统的最重要区别在于组成CAS系统
的主体的多样性
• 6.内部模型(Internal Model)
– 主体复杂的内部模型是主体适应性的内部机制和精
髓,主体在适应过程中接受外部刺激,做出反应,
合理调整自身的内部结构。最终,结构的变化,必
须使主体能够预知再次遇到该情形时会随之发生的
后果,主体由此来适应环境。
• 7. 积木块(Building Blocks)
– 就像人往往通过将复杂问题分解成若干简单部分进
行理解一样,CAS内部模型用搭积木的方法对已测
试过的规则进行组合,产生新问题的处理规则,已
有的规则被形象化地称为积木块,它们是新规则产
生的基础。
第三节 模型与模拟方法
1.
2.
3.
4.
5.
模型
建摸与模拟
模拟软件平台SWARM的介绍
模拟软件平台STARLOGO的介绍
应用举例
具体地用模型与模拟方法探索
复杂性
模型
数学模型
模拟
基于主体的建模方法和CAS
模型方法
定义:模型是在结构或/和行为的
重要方面和所研究的系统相似的,
真实的或想象的系统的映象。
它往往能为大范围的观察事实提
供解释。
模型与原型
• 模型的建立不是“原型的重复”,而是按研究
目的的实际需要和侧重面,寻找一个便于进行
系统研究的“替身”。不同的人由于研究的目
标不同,就会对某些方面做出不同的简化。
• 在原型系统及模型之间存在着“反馈”的关系,
根据对原型系统规律的认识,可以建立模型。
而建立模型进行实验的过程又可发现一些新的
规律,由此预测未来或丰富对原型系统的认识。
模型应用范围
• 人类对世界的探索过程,就是建立各种模型表示的过
程。人类知识积累的过程,也是修正和具体化各种形
态的模型的过程。
– 静态结构的模型称为静态模型
– 描述事物发生、发展、演化过程的模型称为动态模
型。
• 历史地看,模型形态的变化也有一个逐渐从简单到复
杂的发展过程。
– 从最初原始的思维意象模型,发展到借用外在的工具搭建的
各种模型,包括绘画模型、建筑雕塑模型、工具模型等,再
到哲学和神学中发展出的各种理论模型。
模型分类
• 按照模型存在的空间,模型可分为物质
模型与思维模型两大类。
– 物质模型是以某种速度、形式相似、人造或
自然的模型实体去再现原型。物质模型是模
拟实验赖以进行的物质手段。
– 思维模型是人们在头脑中创造出来的,并且
运用它在思维中进行逻辑推理、数学演算和
“思想实验”,可分为形象的(唯象的)模
型和符号的(标志性的)模型。
建模动机
一般可以把人类建立模型的动机分为四个
层次:
(1)解释和理解的需要。
(2)预测的需要。
(3)控制的需要。
(4)技术理性和工具的需要。
一 近代常见的模型
物质形式的模型
——物理模型
思维形式的模型
——数学模型
——统计模型
——逻辑模型
物质形式的科学模型
物理模型对要研究的客体,按照一定的研
究目的,寻找一种天然存在的具有相似
性的实物或者人工地制造一种具有相似
形的实物,作为原形客体的实际模拟物,
即实物模型。运用这种实物模型,进行
模拟实验或模型实验,以获取关于客体
的某种规律性认识。
• 天然模型:以天然存在物作为模型。最为典型和运用得最多的就
是生物模型。其方法论作用:一方面生物所具有的奇妙器官和功
能作为仿生学的对象。 另一方面,把某类生物作为人的科学模型
来研究,获得对人体的认识。
• 人工模型: 即以人工制作物作为科学模型。
思维形式的科学模型
对要研究的对象,按照一定的研究目的,经过科
学的分析而抽象出它的本质属性 特征,构造
一种思维形式的模拟物,即思维模型,常表现
为抽象的、数学的、理论的形 态。
(1)理想模型:是对研究对象的一种简化和理
想化。
(2)数学模型:
(3)理论模型:
(4)半经验半理论模型:
二 建立模型的方法论原则
模型具有工具性与对象性双重性质。
建立模型的方法论原则:
• 相似性与简单性的统一。要求具有本质
上的相似性。
• 可验证性。
• 多种知识和方法的综合运用。
三 科学模型的多重功能
• 科学模型的研究纲领作用;
• 科学研究的间接方法;
• 思维模型可以起到思想实验的目的。思
想实验实际上是思维操作亦即逻辑推理
的结果。 是实际实验的逻辑补充。
• 模型是研究复杂系统的关键。
• 模型研究对实践的指导作用。
四 模型的多样性和有限性
• 多样性
• 局限性:常常过于简化。
模型的系统分析
语用
人
本体描述语言
语义
程序设计语言
认知
制作
?
客体
程序
客体
认知
形式
系统
描述
模型
系统
设计
模型抽象
模型表示
语法
模型组织
软件
制作
模型小结
模型:
——客观事物的反映
——客观规律的简化和抽象
——整理信息的概念框架
模型具有以下这些基本的性质:
•客观性:必须符合实际。
•主观性:对于目标有效。
•相对性:只反映客观事物
的某一侧面。
•渐进性:随认识和实践的
发展而发展。
模型的作用
模型是人类认识和改造世界的必
经之路:
——描述系统
——整理信息
——寻找规律
——预测未来
——设计人为事物
从模型到模拟
数学模型
计算机模拟
CAS
数学模型方法
数学模型是对于某个特定对象或一定问题,
采用形式化数学语言来描述其特征及数
量相依关系的一种数学结构,它是一组
数学关系式或一套具体的数学算法。即
用数学语言表达事物的状态、关系和过
程,经推导、演算和分析,以形成解释、
判断和预言的方法。
数学模型的类型
•
•
•
•
确定性数学模型;
随机性数学模型;
模糊性数学模型;
突变性数学模型。。。。。
数学模型的特征:
– 高度的抽象性;
– 具有严密的逻辑性;
– 具有应用的广泛性;
– 过程描述,非直观:如果是非线
性动力学方程,可表示、但却不
可求解。
数学方法在科学认识中的作用
• 为科学技术研究提供简洁精确的形式化
语言
• 为科学技术研究提供数量分析和计算的
方法:
• 为科学研究提供逻辑推理的工具
计算机模型方法:
所要研究问题的数学模型,转换
为能输入计算机进行数值运算的
形式,或直接建立计算机仿真模
型,在计算机上通过系统地变换
参数作大量数值计算。
计算机模拟-发展的历史
• 计算的历史主要是模拟的历史;
• 在PC上模拟人的智能、智能发育过程;
• 在平台上模拟系统,如人工生命,机器人足球,
蚁群算法;
• 在网络上模拟社会,如email,电子商务,网格
计算;
• 在平台上,网络上模拟智能agent,agent是虚
拟社会人,实质上是现实社会人的缩扩模型。
• PC,网络是系统,人,社会是系统,它们之
间是模拟关系。
模拟
• 计算机发展中模拟是不变的,而变化的
只不过是模拟的对象,那么什么是模
拟?
• 从系统观来看,模拟是两个系统之间的
关系,模拟的实质是两事物或两个系统
同一性的转化。
• 模拟要素有四:原型,转化,模型,系
统同一性。
传统建摸方法的问题
近代科学使用的各种建模方法普
遍存在以下几个缺点:
——宏观和微观的割裂。
——状态和过程的割裂。
——难以描述反映非线性过程。
——忽视个体或元素的主动性。
基于主体的建摸方法
新的方法具有三个显著的特点:
—— 宏观和微观的结合
—— 过程和状态的结合
—— 可操作性强,软件工具的提供。
基于主体的建模方法
多主体建模的理论常见缩写
CAS complex adaptive system
• MAS Multi-Agent System
• ABM Agent based Model
• ACE Agent based Computional Economy
• 。。。
广泛应用于各种社会科学、自然科学与工
程科学中(生态经济学 人工社会 政治科学 人工智能 人
工生命 商务经济模拟 工程模拟 地理信息系统 决策支持系统 生
物信息学)
计算机模型的一般特点
•
•
(1)计算机模型一般只输出一组离散
的数值。它不像解微分方程组那样给出
通解或一个函数。
(2)它不用深究变动机理,只需从实
际数据或直观感觉出发,来模仿描述系
统,然后通过逐步求精,最后达到正确
地反映系统。
计算机模型的一般特点(续)
• (3)计算机建模用其程序模拟现象,计
算机语言被证明是便于进行模拟的。计
算机语言的丰富的数据结构可以方便地
描述系统的状态。用计算机程序能灵活
地描述各种复杂的进程。
• (4)计算机建模的应用很广泛, 可用于
工、农、商及军事等各行各业的规划、
调度、设计和决策等等。
有人对美国1000家最大的公司的计划系统应用定量分析
方法的情况调查时,得到不同方法应用的频数表,发现
在各种定量分析方法中模拟方法所占的比重很大。
项
目
应用频数
所占百分比
模拟研究
线性规划
网络分析(包括PERT与CPM)
存储理论
非线性规划
动态规划
整数规划
排队理论
其他
60
43
28
24
16
8
7
7
12
29
21
14
12
8
4
3
3
6
合计
205
100
应用定量分析方法的频率
计算机模型的一般特点(续)
• (5)可充分发挥人和计算机的优势。
– 人具有直觉,其思维方式是很灵活的。在寻找复杂
的因果关系时,可以根据直觉与经验比较敏锐地给
出一个模型结构的框架。
– 计算机有大的存储器,又有高速运算的能力,所以
它可以同时顾及系统的各方面结构或易于展现系统
动态变化的具体情节
• 计算机模型发挥了人机两方面的优势,通过人
的直觉、思维和推理,一块一块地构筑模型,
送入计算机,然后可迅速地逐步计算。
计算机模型的一般特点(续)
• (6)计算机建模的实现方法灵活。一般来说,
用解析式表示量之间的关系,明确、清晰、令
人信服。然而,它只解决较简单而且有固定模
式的问题。对复杂而灵活的问题,就要用模拟
的办法。
• (7)智能化的发展方向。人工智能的原理就
是从人脑处理问题的模式中抽象出来的。计算
机模型把人机的优势结合,以解决传统数学方
法不易解决的复杂系统的认识问题,所以必然
利用人工智能所取得的成果。
计算机建模方法优势
•
•
•
经济性 对于一个大型的系统、直接实验成本
十分昂贵,使用计算机建模实验能大大地降
低实验成本,而且可以多次重复使用;
安全性 对于某些系统,如载人宇宙飞行器、
核电站控制、直接实验往往是危险的和不允
许的;
预见性 对于经济、社会、生物、战争等非工
程系统,直接实验几乎是不可能的。计算机
模型可用于预测系统的特性和外部作用的影
响,从而研究管理、控制的策略。
计算机模拟局限性
• 各种模型都是基于建模者的认知水平和观测能力的结
果,从而模型模拟的可信度缺乏统一的测量尺度,因
此结果很难被大众采纳而形成公共知识;
• 根据测不准定理,观测事实不过是一种近似结果,由
于建模者的参与,观测事实的细节和观测指标的取舍
都带有建模者预先设计的痕迹,得到的结果很难客观
• 第三,建模者本身就是有限信息和有限理性的主体,
就是现实系统的参与者。因此不大可能实现超越系
统、超越自身的理性。
• 这些局限在通常的实验研究方法中也同样存在,但在
计算机建模方法中更容易引起人们的质疑
模拟软件平台的介绍
Swarm
Starlogo
SWARM简介
1、背景
2、Swarm的历史与简介
3、面向对象的技术
4、 用Swarm建模的思想和方法
5、对Swarm的感性认识——例子
6、Swarm类库简介
1、背景
• 早期的科学家通常自己制造实验仪器,自己磨透镜,自
己连探测器,甚至自己制造计算机。研究者首先是工程师、
技师、电工,其次才是科学家。
• 计算机模拟程序实际上就是用软件制造的实验仪器,这
种方法在某些方面已经取代了物理实验仪器。
• 计算机模型常常使优秀的科学家变成糟糕的程序员。
• Swarm是一个高效率的、可信的、可重用的软件实验仪器。
其目标就是予科学家们一个标准的软件工具集,从而提供一
个设备精良的软件实验室,帮助人们集中精力于研究工作而
非制造工具。
2、Swarm的历史与简介
Swarm是一个面向对象的类库,用户可以通过调用这些
类库简化模拟工作。
用户通过在自己的程序中引入Swarm类建模。
Swarm类用Objective C编写,Objective C是一种面向对
象的C语言。图形用户界面用Tcl/Tk编写,这是一种用
于编写窗口小部件的脚本语言。
既可用于Unix平台又可以用于Windows 95/98/NT。
开发环境:
Swarm支持 SUN JDK 1.2或以上版本。因此,常用的开发工具,
如Jbuilder3,Visual Cafe 4等都可以用来编写和调试基于
Java的Swarm程序。
Unix下:
1)如果要使用Java,必须首先安装Swarm支持的Java虚拟机。
在Unix下,可以使用Kaffe
(http://www.alphaworks.ibm.com/tech/jikes),Blackdown JDK
(http://www.Blackdown.org)或SUN JDK
(http://java.sun.com/products/jdk/1.2/)。
2)系统中还必须安装emacs,emacs是一个GNU的编辑器,由于
它配置灵活,功能强大,可以免费获得,又与开发工具具有一
定的集成性,应用非常广泛。
3、SWARM的技术基础——面向对象的技术
对象(object)这个词在英语中的意思是被感知
或被触摸的事物。对象在客观世界中的意义是很简单的,
即明确的物体,小到一个螺丝钉、大到一个生物、一个
社会,都是实实在在的对象。作为系统的一个组成部分,
它们都为其所在的系统提供一定的功能,在系统中具有
一定的作用,担当一定的角色。实际上,我们在认识世
界的时候就是面向对象的,我们通过了解系统中这些实
实在在的对象来把握整个系统的各个方面。
消息
状态
变量
行为
方法
一个对象
程序
简单的术语
封装了对象的变量和方
法
实例
一个对象,也是一个类
的实例
父类
其变量和方法将被继承
实例变量
一个实例中的内部变量
子类
从父类处继承了变量和
方法
方法
函数. 可以通过给实例
发消息来调用
类
三大特点
封装
对象把他们的功能(方法)
和数据(实例变量和方法变
量)隐藏起来
继承
所有子类都继承其父类的所
有方法和变量
多态
一个类可以有多个对象,他
们有共同的行为,但是又有
不同的状态
父类
子类
4。用Swarm建模的思想和方法
Swarm建模框架是一系列独立的主体通过独立
事件进行交互。Swarm模拟可使用不同的领域如化
学、经济、物理、人类学和政治科学。
Swarm模拟的基本单位是主体,一个主体就象
系统中的一个演员,是能够产生动作并影响自身
和其他个体的一个实体。模拟包括几组交互的主
体。
主体定义Swarm系统中的基本对象——模拟
部件。一个时间表定义这些对象的独立事件发生
的流程。
在编程语言中的实现
get parameters
初始化,设定数据结构和输入
initialize
输出等
for 1 to timesteps do:
for 1 to num_agents do:
提供一些数据结构
agent-i-do-something
来存储主体的状态
end for
和行为
show state
end for
将状态数据输出给程序
quit
建模结构:
探测器
静态主体
活动主体
主体的组织结构
模型Swarm
输出界面
探测器Swarm
模型“swarm”
SWARM就是许多个体(对象)组成的一个群体,这些个体共享一
个行为时间表和内存池。显然“swarm”有两个主要的组成部分:
对象 ——模型“swarm”中的每一项对应模型世界中的每一个对象
(个体)。“swarm”中的个体就象系统中的演员,是能够产生动作并
影响自身和其他个体的一个实体。
时间表——时间表是一个数据结构,定义了各个对象的独立事件发
生的流程,即各事件的执行顺序。在SWARM中特定的事件发生在特定
的时间,按照时间表安排的顺序进行。每种行为是一个独立的动作。
模型按照这种安排好的事件的执行顺序向前发展,并尽量使这些事件
看起来象同步发生的。
输入输出——模型“swarm”还包括一系列输入和输出。输入是模型
参数:如世界的大小,主体的个数等环境参数。输出是可观察的模型
的运行结果:如个体的行为等等。
观察员“swarm”
模型“swarm”只是定义了被模拟的世界。但是一个实验不应只包
括实验对象,还应包括用来观察和测量的实验仪器。在SWARM计算机
模拟中,这些观察对象放在一个叫观察员“swarm”的“swarm”中。
•最重要的观察组件是——模型Swarm
•观察员行为的时间表主要是为了驱动数据收集,即从模型中将数据
读出,并画出图表。
•输入是对观察工具的配置,例如生成哪类图表;输出是观察结果。
在图形模式下运行时,观察员“swarm”中的大部分对象被用来调节用户
界面。这些对象可能是平面网格图,折线图或探测器,它们一方面与模
型“Swarm” 相连以读取数据,同时把数据输出到到图形界面,为用户
提供了很好的实验观察方式。
时间表
模型
探测器
图形用户界面
Swarm
主体
Sub-Swarm
Sub-sub-Swarm
探测器
• Swarm中所有的主体和
变量都可以被探测。
• 探测器将它自己和主
体联系起来, 它可以给
主体发送消息,还可
以通过直接读取或者
调用主体来获得或修
改主体变量。
被观测变量=10.2
探测器与图形用户界面(GUI)
• 探测器将主体与图形
界面联系起来
• 缺省的探测器图形界
面会显示被观测的主
体的所有变量——也
可以由用户自定义显
示变量。
打开该类的探测器
关闭探测器
输入变量值
执行方法
图形用户界面(GUI)
• 可用于绘制
–
–
–
–
线性图
柱状图
格栅图
Digraphs
• 图形用户界面的支持
对象可以实现数据的
收集,计算和更新。
给图形用户界面(GUI)提供数据
• 图形窗口输
出依赖于探
测器动态地
收集主体的
数据。
图形窗口
平均成本
平均价格
探测器
探测器
主体
建模思想:
• 这种建模方法不需要一个方程形式来体现系统中内生的关
系。
• 这种方法强调非均衡的发展路径,它的分析是基于进化和
突变行为而不是基于一种机械的观点来看待社会。
• 这种方法是基于单个主体的,因此用户必须为每个决策者
建立微观模型,而不是为整个市场建立宏观模型。
• 这种方法将经济系统看作是一个进化的复杂系统。
• 用户可以使用Swarm提供的随机数生成器轻松的引入随机
因素。
建模方法:Swarm是一种支持“自下而上”(bottom-up)
的建模工具。
5、对Swarm的感性认识——例子
热虫(Heatbugs)
热虫是Swarm的经典例子之一,它说明了简单的局部的
主体活动如何产生复杂的全局的行为。
结果显示
界面的样子
第一步:建立一个模型swarm
一个模拟的关键部分是模型swarm。这里是HeatbugModelSwarm的定义:
interface HeatbugModelSwarm : Swarm
{
int numBugs; // simulation parameters
double evaporationRate;
double diffuseConstant;
int worldXSize, worldYSize;
int minIdealTemp, maxIdealTemp;
int minOutputHeat, maxOutputHeat;
double randomMoveProbability;
id modelActions; // scheduling data
structures
id modelSchedule;
id heatbugList; // list of all the heatbugs
Grid2d * world; // objects representing
HeatSpace * heat; // the world
}
-getHeatbugList; // access methods into the
-(Grid2d *) getWorld; // model swarm. These methods
-(HeatSpace *) getHeat; // allow the model swarm to
be
observed.
+createBegin: aZone; // extra methods you
-createEnd; // provide for Swarms
-buildObjects;
-buildActions;
-activateIn: swarmContext;
第二步:定义一个主体
所有个体是整个模拟的中心。在模拟中的大部分工作来自于定义个体的行为,以
使模型与真实世界的现象类似。heatbug主体的定义如下:
interface Heatbug: SwarmObject {
double unhappiness; // my current unhappiness
int x, y; // my spatial coordinates
HeatValue idealTemperature; // my ideal
temperature
HeatValue outputHeat; // how much heat I put out
float randomMoveProbability; // chance of moving
randomly
Grid2d * world; // the world I live in
int worldXSize, worldYSize; // how big that world is
HeatSpace * heat; // the heat for the world
Color bugColor; // my colour (display)
}
- setWorld: (Grid2d *) w Heat:
(HeatSpace *) h; // which world are we
in
-createEnd;
-(double) getUnhappiness;
-setIdealTemperature: (HeatValue) i;
-setOutputHeat: (HeatValue) o;
-setRandomMoveProbability: (float) p;
-setX: (int) x Y: (int) y; // bug's position
-setBugColor: (Color) c; // bug's colour
(display)
-step;
-drawSelfOn: (id <Raster>) r;
第三步:建立主体
Heatbug们已经被定义,模型swarm需要创建它们。这里是HeatbugModelSwarm中
buildObjects方法的一段代码:
for (i = 0; i < numBugs; i++)
{
Heatbug * hbug;
int idealTemp, outputHeat;
// Choose a random ideal temperature, output heat from the specified
idealTemp = [uniformRandom rMin: minIdealTemp Max: maxIdealTemp];
outputHeat = [uniformRandom rMin: minOutputHeat Max: maxOutputHeat];
// Create the heatbug, set the creation time variables
hbug = [Heatbug createBegin: [self getZone]];
[hbug setWorld: world Heat: heat];
hbug = [hbug createEnd];
// Add the bug to the end of the list.
[heatbugList addLast: hbug];
// Now initialize the rest of the heatbug's state.
[hbug setIdealTemperature: idealTemp];
[hbug setOutputHeat: outputHeat];
[hbug setX: [uniformRandom rMax: worldXSize] // random position
Y: [uniformRandom rMax: worldYSize]];
}
第四步:建立空间对象
在swarm中,空间是另一种个体。在Heatbug模型中我们创建一个热空间,这是
swarm的space库中一个散射对象的子类。这里是HeatbugModelSwarm中buildObjects方法的一
段代码:
heat = [HeatSpace createBegin: [self getZone]];
[heat setSizeX: worldXSize Y: worldYSize];
[heat setDiffusionConstant: diffuseConstant];
[heat setEvaporationRate: evaporationRate];
heat = [heat createEnd];
第五步:模型swarm的时序安排
一旦所有的模拟对象在buildObjects中被创建,下一步的任务就是在buildActions方
法中确定它们的时序安排。
modelActions = [ActionGroup create: [self getZone]];
[modelActions createActionTo: heat message: M(stepRule)];
[modelActions createActionForEach: heatbugList message: M(step)];
[modelActions createActionTo: heat message: M(updateLattice)];
modelSchedule = [Schedule createBegin: [self getZone]];
[modelSchedule setRepeatInterval: 1];
modelSchedule = [modelSchedule createEnd];
[modelSchedule at: 0 createAction: modelActions];
第六步:建立图形化的探测器
模型swarm已经定义,下一步是安排图形化的探测器swarm。对于Heatbug模型来说,
代码段在HeatbugObserverSwarm中。探测器swarm的结构同建立模型swarm几乎完全相同。
interface HeatbugObserverSwarm : GUISwarm {
int displayFrequency; // one parameter: update freq
id displayActions; // schedule data structs
id displaySchedule;
HeatbugModelSwarm * heatbugModelSwarm; // the Swarm we're observing
// Lots of display objects. First, widgets
XColormap * colormap; // allocate colours
ZoomRaster * worldRaster; // 2d display widget
EZGraph * unhappyGraph; // graphing widget
// Now, higher order display and data objects
Value2dDisplay * heatDisplay; // display the heat
Object2dDisplay * heatbugDisplay; // display the heatbugs
}
第七步:建立数据图表
数据图表是HeatbugObserverSwarm中的一个对象,表示平均的不高兴程度。这段
代码用来创建这个对象:
// Create the graph widget to display unhappiness.
unhappyGraph = [EZGraph createBegin: [self getZone]];
[unhappyGraph setTitle: "Unhappiness of bugs vs. time"];
[unhappyGraph setAxisLabelsX: "time" Y: "unhappiness"];
unhappyGraph = [unhappyGraph createEnd] ;
[unhappyGraph createAverageSequence: "unhappiness"
withFeedFrom: [heatbugModelSwarm getHeatbugList]
andSelector: M(getUnhappiness)] ;
第八步:主函数
函数main()是你的程序中最先被调用的函数。所有的实际工作已经完成,剩下的就
是在合适的时间创建对象。
int main(int argc, const char** argv)
{
id theTopLevelSwarm ;
// Swarm initialization: all Swarm apps must call this first.
initSwarm(argc, argv);
// swarmGUIMode is set in initSwarm(). It's set to be 0 if you
// typed `heatbugs --batchmode' or `heatbugs -b', Otherwise, it's set
to
// 1.
if (swarmGUIMode == 1)
// We've got graphics, so make a full ObserverSwarm to get GUI
objects
theTopLevelSwarm
=
[HeatbugObserverSwarm
create:
globalZone];
else
// No graphics - make a batchmode swarm and run it.
theTopLevelSwarm = [HeatbugBatchSwarm create: globalZone];
[theTopLevelSwarm buildObjects];
[theTopLevelSwarm buildActions];
[theTopLevelSwarm activateIn: nil];
[theTopLevelSwarm go];
// theTopLevelSwarm has finished
processing, so it's time to quit.
return 0;
}
6、 Swarm类库简介
• Swarm类库有两个主要功能——被用户直接使用;用户使
用Swarm库来建立自己的子类,为专门的建模需要你建立自
己专门的类
Swarmobject
activity
simtools
该库包括两个重要的类,swarmobject 和swarm。Swarmobject
是所有模拟主体的根类,它定义了内存管理的接口并提供对探测
器的支持。Swarm类是模型的总控,ModelSwarm和ObserverSwarm
都从这一基类处继承有用的代码。
该库提供了对时间表的支持。时间表是模型运行的时序列表,用
户可以将周期性执行的动作按顺序放入这个数据结构中,并指明
运行间隔和触发条件,模型就可以按照这个约定运行而不需人为
的干预。
该库中包括支持探测器的类,这样就可以在模型的运行过程中观
察或修改变量。Simtools还提供数据分析和显示支持的工具,能
够产生统计数据汇总,画时序图等等。
Collection
defobj
random
Space
该库中提供了一系列对象的列表,如List、Array、Set等。Swarm
支持向一个列表中的所有对象传递消息,还可以将列表中的对象
按某个属性排序。
该库中提供了对消息、错误处理、调试和内存分配的支持,增强
了 Objective-C的功能。它还支持对象界面和实现分离,从而使
Swarm编写的程序的层次性更加清晰。
该库提供给用户一套随机数生成器。支持正态分布、均匀分布、
指数分布等多种随机分布。
该库是一个简单的空间库,包括一系列用于二维离散模型的类。
这些空间类型在生态系统模拟中经常用到。Space 中的类大多
数是从Grid2D,一个可以在指定格点上存储对象和整型值的二
维数组继承得来。
ga和neuro
遗传算法类和神经网络类。这是Swarm的第一个用户提供的库,
是由Juan J.Merelo 在访问桑塔菲研究所时编写的。
Starlogo
基于CAS理论的
模拟平台之二
Starlogo概述
• StarLogo是一个可编程的建模环境。
• 它用来研究分散系统的运行机制。所谓分
散系统是指:没有组织者而有组织,没有
协调者而协调的系统。
• 使用StarLogo可以对许多现实世界中的现象
进行建模并且观察研究,例如鸟群、交
通、蚂蚁以及市场经济。StarLogo非常适合
于研究人工生命。
•StarLogo is developed at
Media Laboratory, MIT,
Cambridge, Massachusetts,
with support from the
National Science
Foundation and the LEGO
group.
• Starlogo中有海龟(turtle)和点(patch)。其中,海龟是
我们自己创建的主体,点是画布(canvas)上固定的
一个个小方格。我们可以对海龟和点的行为及属性
进行编程,海龟主要固有属性是坐标位置, 头的朝
向, 颜色, 和画笔。点的主要固有属性是颜色和坐
标位置,我们还可以给它们自定义一些新的属性。
程序运行时所有的海龟和点都以系统规定的时间步
进,并行运转。Starlogo就是通过海龟和点的交互
运作来模拟现实世界的运转的。
• 另外,Starlogo允许对海龟进行分类(breeds ),例
如,我们可以创建两类海龟:狼和兔子,然后对这
两类分别定义它们的属性和行为。
• 界面
画布(canvas)、控件等
• 控制中心
海龟窗口:命令窗口+函数窗口
观察者窗口:命令窗口+函数窗口
界
面
控制中心
控制中心
海龟窗口:每一个海龟都执行
观察者窗口:创建海龟等外部工作
命令窗口:立即执行
函数窗口:被命令窗口中的命令
或按钮调用时执行
控件
•
•
•
•
•
•
•
按钮:通过按按钮调用函数控制程序的运行;
滑块:显示及调节常量的值;
监控器(monitor):实时监控变量值;
绘图:折线图、柱状图等;
速度:控制系统的时间步进;
画布:直观地表现海龟和点的运转;
output 窗口:程序中print语句的输出窗口。
特 点
• 距离:以画布的点的宽度为单位长度
• 时间:以可调整的speed为时间步进,每隔一个
speed时间系统中的observer和turtles并行执行当
前要求执行的命令。 也可用timer来确定标准
时间(以秒为单位)
• 海龟有序号( Who)
• 颜色:有14种主要色彩,每种主要色彩又都有
色彩深浅程度,可用数字来表示。
建立模型
建模就是要对现实世界进行抽象,剔除与主题无关的次
要因素,抓住主要因素,提炼规则,用计算机来模拟主
体在现实世界中依据一定规则运动的情况,观察结果,
总结规律。
不同的情况:
• 建模之前已经确切地知道会有怎样的结果,建模的目的
只是让结果更加形象化地表现出来。
• 建模之前对于结果的大致方向有一定的把握,建模后验
证了自己的判断并了解了更多的细节。
• 建模之前对于结果没有什么判断或者有错误的判断,建
模后出现了完全在意料之外的现象。这是最有价值的建
模。
可能应用的领域
•
•
•
•
生物学
流行病学
社会学
股市分析:每个股民有自己的行为规则,
思维方式,不受他人控制,但所有股民
的行为集合则在股市的涨落上体现了个
体所不具有的性质。
变
量(一)
• Starlogo中只有四种数据类型:布尔型、数
据列表型、数值型、字符串型。
• 状态变量:是海龟和点固有的特性,除了
坐标属性外它们都可以用set命令改变。
• 自定义变量:我们可以创建全局变量和海
龟、点及观察者的新的状态变量。一旦创
建了新的状态变量,系统便会自动生成相
应的函数集来方便这个变量的使用。变量
定义语句可以写在任何一个函数窗口中。
变
量(二)
• 变量的后缀:利用-at, -to , -towards 等后
缀我们可以读取、修改其它海龟或点的
状态变量
变
量(三)
• 全局变量:……
• 局部变量:与全局变量一样和任何点或
海龟无关。仅在定义所在的函数内有效。
(用let语句定义,以冒号开头)
• 函数参数:参数之前要加:,多个参数
之间用空格隔开。
list
• 可用list 或sentence命令或[ ]生成列表,但是要注意
这里只是针对数据列表,在Starlogo中,不能将执
行语句置于数据列表中
• Pick [数据列表] 随机返回列表中的一个数据
• copy-list [数据列表] 返回列表的一个副本
• Median-of-list[数据列表] 将数据列表按大小排序,
返回中值
• Mode-of-list[数据列表] 返回列表中出现次数最多的
项,如果不止一个,则返回他们的集合列表
• Setitem number[数据列表] thing 把列表中第number
项改为thing
输出方式
•
•
•
•
•
画布
Output窗口
Plot窗口
监控器
Info窗口
命令测试
• diffuse variable percentage
语言解释:
让每个点把自己的variable变量取出percentage(0 到1
之间的数),并分成八份给邻近的每个点一份。
程序测试:
初始状态:(0,0)点的color置为139,其他点都
置为0(黑色)。每调用一次go函数,每一个点都
把自己的颜色拿出20%来平分给邻近的八个点。
相关命令:
diffuse4 variable percentage ,和diffuse基本相同,只
是diffuse4是分成四份给上下左右的点。
Diffuse测试程序运行结果
初
始
状
态
运
行
一
次
后
运
行
运
行
12
27
次
后
次
后
此外,我们还可以利用 output 窗口将每次运行后所有点
的color值记录下来,定量地分析diffuse语句的含义。
• fd, step, jump, leap
语言解释:这四个都是让海龟前进的命令。但它们
又都不同。fd和step都是每移动一个step就要花一
单位时间,也就是说移动10个step的时间=10*移
动一个step的时间。但jump和leap是无论移动多少
个step所花的时间都一样。也就是说移动10个step
的时间=移动一个step的时间。jump和leap的区别
在于leap 要确定目标点上面没有别的海龟才执行
跳跃,而jump没有这个要求。fd和step的区别在于
fd后面要跟number ,可以前进多步,step就是前
进一步,不带参数。
• 程序测试:
to go
ask-turtle 1 [resett fd 10 print timer]
ask-turtle 2 [resett jump 10 print timer]
ask-turtle 3 [resett leap 10 print timer]
ask-turtle 0 [resett repeat 10 [step]
print timer]
end
• 运行结果:
打开output窗口观察结果
Turtle #1: 0.831
Turtle #2: 0.14
Turtle #3: 0.14
Turtle #0: 0.811
应用举例
1.
2.
3.
4.
国会山保姆公司模型
Akerlof模型
企业集群研究
ACE
1、国会山保姆公司模型
• 模型背景
一些主要在美国国会工作的年轻夫妇成立的组织,他
们愿意彼此之间充当保姆。国会山保姆公司通过印刷
临时票券来解决问题:每做一个小时的保姆工作(即
照顾别人的孩子)可以得到一个单位的票券,反过
来,请别人照顾孩子,则要付给别人一张票券。
• 困惑
出于对未来的预期而导致当前消费减少,从而发生经
济衰退。
模型的实现
• 每个保姆对未来预期的票数为:
• NumTicket = p * predictDay
• 当一个保姆手中掌握的票数大于他/她预
期的票数时,出行的概率增加,找工作
的概率下降;否则,找工作的概率上升,
出行的概率下降。
• 通过调整参数求得解决之道。
模型结果分析(一)
• 刚开始,找工作和出
行的人数基本相等。
由于货币供给不足而
导致的消费不足,最
终将导致失业率上升,
引发市场衰退。
模型结果分析(二)
• 通过政策调整达到市
场均衡
1、增加每个保姆手中的
初始票数,也就是增加
整个市场的货币投放量
2、减少人们的预期天数,
完善和健全贷款制度、
保险制度和社会保障金
制度
模型结果分析(三)
• 由于主体竞争能力不同而导致贫富分化,需要
税收政策等进行收入再分配
返回
2、阿克洛夫模型
• 模型以旧车市场上旧车的销售情况来解
释在非对称信息环境下产品销售方面的
不利选择问题。
• 它解释了在某些特定情况下,一种低效
率的市场是如何产生的。
• 所有外表相同的汽车都以同样的价格出
售。高质量的汽车在旧车市场上就无法
以预期的高价格出售。对于卖主是不利
的。
• 低质量汽车的卖主不愿意以较低价格卖
出,直到旧汽车的低质量性质将要显示
出来为止。
• 拥有高质量汽车的卖主往往将他们的汽
车撤出市场。这样旧汽车市场上汽车的
平均价格在下降。
模型的实现
• OBJECT:汽车、市场
• 汽车:定义汽车的属性和卖主的行为
• 市场:容量固定,记录当前高质量和低
质量的汽车的数量,和当前卖出的高质
量和低质量的汽车的数量。
• 如何表示市场上交易双方的信息不对称:
对于卖方,汽车的信息是完全的,即卖
方知道汽车是高质量的还是低质量的,
但是买方并不知道汽车是高质量还是低
质量的,只能根据上一轮的交易情况预
测本轮交易中市场上高质量和低质量汽
车的比例,并以此为基础给出买方购买
汽车的期望价格
模型结果分析
• 市场中汽车交易价格
下降
• 高质量汽车退出市场
• 市场萧条
• 与传统经济学相悖,
在非对称信息环境中,
商品质量依赖于价格。
返回
3。关于企业集群形成机制的研究
• 企业集群的形成是现代经济生活中引人
注目的一种现象。
• 我们用模拟的方法,观察了其形成的过
程,得到了一些有趣的结果。
应用举例4:ACE
1. 有限理性和经济进化
2. 基于主体的可计算经济学
3. 基于主体的可计算经济模型
1. 有限理性和经济进化
1.1 新古典经济学的理论基础
1.2 经济是一个复杂适应系统
1.3 经济主体行为的有限理性和经济进化论
1.1 新古典经济学的理论基础
• 经济主体行为的完全理性假设
• 经济系统的均衡假设
在此理论基础上,经济学者应用数学
工具推导出一系列经济结论,用于
分析经济理论和经济现实。
1.1 新古典经济学的理论基础
• 完全理性假设
(1)经济主体行动的完全理性,所有经济主体愿意
并能够极大化他们的预期效用或预期收益;
2)经济主体知识的完全理性,所有经济主体具
有理性预期。理性预期意味着所有经济主体关于其
他主体如何行动有相同和正确的信念(对称信息)
• 经济系统均衡假设
追求个体利益最大化的行为在市场机制的作用下,
能导致整个社会福利的最大化,资源达到最有效的
配置。
这里应用一个简单的竞争市场的静态模型
阐述经济主体行为完全理性假设的应用。
假设某行业中存在n个同质企业(n很
大 ),每个企业选择其产量x以使其利
润R
R ( x . p ) = px – c ( x ) 达到最大
化,其中p为价格,c ( x )是一个递增
的成本函数。
存在一个下降的需求函数
p = p ( n X ),表示价格是行业总产量n
X的反函数,其中X是行业中的 “平均”
企业(典型个体)的产量。每个企业的
价格p给定,选择x以使其利润最大化,
这意味着设置x以满足“价格等于边际成
本(p = c’( x ))”条件。
通过求解
x*=argmaxxR(x,p)=g(p)
来得到该问题的解,其中argmax意味着x的
最大值。由于p = p ( n X )依据市场需
求函数,我们可以表示x如下:
x=g(p(nX))=h(X)
因而,经济主体利润最大化假设能从给定
的平均企业归纳出一个个体(企业)的
优化选择。理性预期假设要求个体的选
择一致性。因为所有的企业是同质的,
一致性X=h(X),每个企业最终选择平均
企业的选择X。由于x=X=h(X),我们可以
断定每个企业都没有偏离平均企业产量
的冬季。这一例子说明,完全理性假设
可以用于分析竞争性市场。
西方经济学者一直追求的是建立一个综合
和统一的经济学理论。这个理论以经济
主体的完全理性行为假设出发,构造消
费理论、投资理论和生产理论,进而形
成完整的经济理论体系。随着数学工具
的不断引入,理论发展的越来越精密,
越来越机械,也离经济现实越来越远。
1.2 经济是一个复杂适应系统
复杂性意味着:
(1)系统是由一系列相互作用的主体(过程、元素)构成一
个网络;
(2)这些主体的活动自然形成了系统的动态积累行为;
(3)累积行为的描述可以与个别主体的细节知识无关。
适应性意味着:
(1)环境中主体的活动可以被赋予一个值(如效用、偿付或
适应);
(2)随着时间的推移,主体的行为趋向于使该值增加。
1.2 经济是一个复杂适应系统
经济是一种重要的复杂适应系统
•
•
•
•
经济是由无数个主体(如消费者)构成;
主体在重要的方面有所不同,如消费偏好和收入等;
主体被组织成群体或等级结构,如家庭和企业等;
主体为适应环境,必须从时间中学习或自然选择,
如教育和广告效应等;
• 主体的状态和行为随时间而改变,如价格调整;
• 主体的变化是反馈的结果,如购买或销售;
• 宏观层次行为从微观层次的相互作用中自然产生。
如通货膨胀和失业等。
1.2 经济是一个复杂适应系统
• 沙堆模型:倒塌沙量的分配是在指定时间段T上遵
循一种幂律分布。也就是说,一个给定沙崩量的平
均发生次数是和它的大小量成反比的。即大的沙崩
是很少的,小的沙崩是经常的。
• 例如,24个小时你可能观察具有1000沙粒的一个沙
崩,10个有100沙粒的沙崩,100个10颗沙粒的沙崩。
log(N) = log(K)-slog(c)
N=沙崩的数量,K=1000,c=沙崩中沙粒的数量,s=1
经济系统的许多行为,如股市崩盘,与此类似。
1.3 经济主体行为的有限理性和经济进化论
• 在复杂的经济系统面前,经济主体的理
性是有限的。
• 进化经济学者认为经济中也存在自然选
择。企业在市场中相互竞争,赢利的企
业增长扩大,亏损的企业收缩衰弱,直
至被淘汰出局。企业要在激烈的竞争中
利于不败之地,必须不断创新和不断适
应,以保持持久的竞争优势。
2. 基于主体的可计算经济学
•
基于进化经济学、认知科学和人工智能技
术产生出来的基于主体的可计算经济学
(Agent-based Computational Economics)
简称ACE,是研究经济理论和经济现实的
一个新的有效方法论。
• ACE把经济模型化成由一系列相互作用主
体构成的进化系统,是复杂适应系统的经
济学体现。
2. 基于主体的可计算经济学
2.1 计算经济学
2.2 传统人工智能技术及其在经济学中的应
用
2.3 基于主体的可计算经济学研究的基本内
容
2.4 遗传算法和分类器系统
2.5 基于主体的可计算经济学的建模过程
2.6 基于主体的可计算经济实验室
2.1 计算经济学
• 计算经济学(Computational
Economics)是应用计算技术研究经济
问题的方法论。
• 计算途径能对传统经济模型提供有效的
数量求解方法,即利用计算机的高速计
算和海量存储
• 计算途径可以提供更准确的洞察力,是
对传统经济研究途径的替代 。
2.2 传统人工智能技术及其在经济学中的应用
人工智能(Artificial Intelligence)是研究如何
制造出人造的智能机器或智能系统,来模
拟人类智能活动的能力,以延伸人类智能
的技术。
早在1992年一份美国国家科学基金的报告就
指出:“经济学是人工智能一个很有前途
的应用领域”,但人工智能在经济学中的
应用仍远远滞后于其他自然科学领域。
因为使用工具不同,研究途径不同。
2.2 传统人工智能技术及其在经济学中的应用
• 人工智能的传统技术是专家系统和神经网络
• 专家系统是一种在相关领域中具有专家水平解题
能力的智能程序系统,它能运用领域专家多年积
累的知识与专门经验,模拟人类专家思维过程,
求解需要专家才能解决的问题。
• 专家系统的最大优势是复杂系统的定性推理能力,
因而它可以作为传统定量计算程序(如计量经济
模型)的有力补充。专家系统能够有效的处理不
完全和不确定信息,而在现实经济中,不完全和
不确定信息是广泛存在的,因而专家系统在经济
学领域应该大有用武之地。
2.2 传统人工智能技术及其在经济学中的应用
• 目前,在经济领域应用最广泛的传统人工智能
技术是神经网络(Neural Networks)。神经网
络是一个计算机程序,它模拟了人脑的认知处
理过程
• 神经网络是由具有各种相互联系的单元组成的
集合。每个单元具有极为简化的神经元的特性。
神经网络常常被用来模拟神经系统中某些部分
的行为,生产有用的商业化装置以及检验脑是
如何工作的一般理论
2.3 基于主体的可计算经济学研究的基本内容
• 基于主体的可计算经济学ACE研究的主要内容是经济
的自组织和进化性,以及经济的模拟实验。
• ACE运用了计算机强有力的运算能力,尤其是OO程
序语言,来模拟经济政策导致的经济环境变化,在
“结构、行为和福利效果”这一框架中探讨经济政策
的可行性。这种方法使经济学进一步接近了现实世界,
并使经济政策在一定程度上可以如同科学实验一样得
到检验。
• ACE是从微观经济的角度(企业和消费者)分析宏观
经济的运行规律(经济政策机制和经济周期)。
2.3 基于主体的可计算经济学研究的基本内容
• 现代计算技术允许我们在计算机上建立一个人工经
济(Model Economy)
• 在人工经济中,允许出现广泛的微观个体行为及其
相互作用
• 进化过程可以被描述成自然选择压力直接作用于个
体行为的过程,而不是被描述成群体的运动规律
• 一旦所有个体的初始状态和行为模式以及个体――
个体和个体――环境相互作用的市场协议被确定,
经济系统中不存在集中控制,人工经济沿时间路径
自动发展
2.3 基于主体的可计算经济学研究的基本内容
发展现状
例如在在财税领域中的不少成果:美国霍普金斯大学
Young对财政决策过程的分析,美国耶鲁大学Shubik对
公共政策福利效应的研究,美国密执安大学Henrich对
公共资源合理运用的分析,英国牛津大学Chattoe对预
算过程的研究等等。
在2001年,国家著名经济学刊物《Journal of Economic
Dynamics and Control》《Computation Economics》和
计 算 机 刊 物 《IEEE Transaction on Evolutionary
Computation》都分别出版一期基于主体的可计算经济
学专刊,表明它已经成为当前经济学研究的一个热点 。
2.4 遗传算法和分类器系统
目前,经济学者主要应用遗传算法和分类器系
统来研究经济主体的适应行为
受达尔文进化论――适者生存的启发,Holland
于1975年提出了模拟遗传进化过程的计算方法
――遗传算法(Genetic Algorithms)
基本的遗传算法组成部分包括:
• 对主体(或其潜在行为)编码的符号串表示;
• 评价符号串对环境适应程度的适应值函数;
• 产生新符号串的遗传算子
2.4 遗传算法和分类器系统
• Holland(1986)提出分类器系统(Classifier
Systems)技术。分类器系统是并行传递消
息的基于规则系统,并能应用数学算法修改
其规则。
• 分类器系统由3部分组成:
(1)执行子系统;
(2)赋适应值子系统;
(3)规则发现子系统。
2.4 遗传算法和分类器系统
执行子系统规则:
IF<条件>THEN<结论><强度>
赋适应值子系统用某一算法计算适应值,
用于调整规则的强度。在每一个时间
片内,每一个满足条件的规则都要依
靠其强度进行投标。
规则发现子系统应用遗传算法发现新规
则,其中规则强度相当于适应值。
2.5 基于主体的可计算经济学的建模过程
• 问题识别 分析经济理论和经济现实中存在的
问题,并提出解决问题的目标
• 模型框架 描述人工经济的框架:
(1)主体的类型;
(2)主体之间相互作用的市场协议;
(3)人工经济一轮进化过程中的事件发生次
序;
(4)经济总量的统计方式。
2.5 基于主体的可计算经济学的建模过程
• 主体描述 描述每一类主体的状态和行为模式。
主体的状态决定其行为,主体的行为能改变
其状态,甚至改变行为模式本身(行为进化)
• 实验设计 选择一种人工适应主体技术和一种
计算机程序设计语言,模拟主体行为模式和
经济运行模式。确定每一类主体的数目,并
采用合适的方法为所有主体状态赋初值。
• 结果分析 观察模型运行的结果,并应用经济
学理论给予解释。
2.6 基于主体的可计算经济实验室
• 可计算实验室CL(computational laboratory )
• CL是一个可计算框架,它支持有若干相互作
用主体的系统依靠控制和可复制实验进行研
究。
• 具有清晰和简单的图形用户操作界面的CL使
得研究者可以进行严谨的可计算研究,很容
易操作。
• CL可以设计成为有标准的可扩展的。可以开
始使用可选择执行模块来实验,并可以使用
CL来扩展系统的应用范围。
2.6 基于主体的可计算经济实验室
• Trade Network Game(TNG)Lab (C++ /Visual
Basic
• SimBioSys,一个基于主体的进化模拟CL 主要
用于生物学和社会科学一般基于主体的进化模
拟;
• Swarm、Ascape (Java)、RePast (Java)平台;
• 一些建模语言,如MAML(Multi-Agent
Modelling Language)、 MATLAB 、 SDML (The
Strictly Declarative Modelling Language )、
StarLogo 和 StarlogoT等
3. 基于主体的可计算经济模型
3.1 ACE模型在经济理论研究中的应用
3.2 ACE模型在具体市场分析中的应用
3.3 Thomas Schelling的城市种族隔离模型
3.4 阿克洛夫模型
3.5 ACE模型的优势和存在的问题
3.1 ACE模型在经济理论研究中的应用
1989年,Kiyotaki和Wright(1989)建立了著名的货
币产生模型。 但是在完全理性假设基础上进行的
工作在Kiyotaki和Wright的基本环境中,Marimon等
人(1900)提出基于主体货币产生模型
Vriend(1995)应用分类器系统来模拟市场的自组织
过程,在有限理性假设下,验证了斯密的“看不
见的手”
Epstein(2001)应用一个基于主体的计算框架,实
验性的研究了社会准则进化的重要方面:主体思
考某个行为的时间和与此行为有关的社会准则的
强度负相关
3.2 ACE模型在具体市场分析中的应用
• 美国Santa Fe研究院研制的著名的人工股票市场
模型
• Tesfasion应用一个基于主体的劳动力市场模型,
研究职业容量、职业集中度和市场力之间的关
系。
• 工作供给者和雇主应用人工适应主体来描述,他
们在不断更新预期效用的基础上寻找合作伙伴,
相互作用基于囚徒困境模型,并随时间进化其行
为。
• 模型的主要发现是,在用于预测工作者与雇主的
相应市场力时,职业容量一贯优于职业集中度。
3.2 ACE模型在具体市场分析中的应用
• Kirman和Vriend(2001)建立了一个居于主体
的零售渔业市场模型,用于分析显示渔业市场
的两个特性即:价格分散和重复性购买
• 卖方的决策包括:产品供应量、产品要价和对
老顾客的优惠。买方的决策包括:在谁那里购
买和可接受的价格。他们应用分类器系统模拟
主体的决策行为。
• 实验结果表明:经过一段时期的协同进化,买
方成为给他较大优惠卖方的忠实顾客,而卖方
也通过优惠吸引老顾客以获得更大的收益。
3.3 Thomas Schelling的城市种族隔离模型
• 1.模型描述
Schelling著名的城市种族隔离模型主要描述一个城市
中的人们在不愿意有太多和他们不同类邻居的情况下,
怎样受响应局部干扰迅速由高度的综合转向高度的隔离。
在城市中种族隔离的准确度很强的依赖于主体快乐法则
的规范
• 2.模型实现
3.5 ACE模型的优势和存在的问题
优势:
• ACE模型的一个优势是群体中每个个体
的细节表示,他们的状态和行为存在重
要差异。
• ACE模型的另一个优势是群体中的个体
存在广泛的相互作用。
3.5 ACE模型的优势和存在的问题
问题:
• 几乎没有数学理论可以用来解释模型模拟的结果。
• 计算技术方面的问题
• 由于其研究工作起步较晚,它目前通常作为研究方法论
在实验室中进行研究
• ACE模型缺少完整系统的经济理论的支持。
•总 结
MATLAB
• http://www.mathworks.com/
四、几点思考
• 1。信息时代要求新的思维方法;
• 2。信息技术提供了新的工具和手
段;
• 3。他山之石,可以攻玉,学科之
间的交流是科学进步之道。
结 束 语
• 希望学习哲学和其他学科的同
行,对于这种方法给予更多的关
注,有更多的同学掌握和利用这
些工具,从新的视角观察和研究
丰富多彩的各种新发现的问题和
现象。