第7讲:仿真模型的matlab实现_第1页
第7讲:仿真模型的matlab实现_第2页
第7讲:仿真模型的matlab实现_第3页
第7讲:仿真模型的matlab实现_第4页
第7讲:仿真模型的matlab实现_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数学建模课程综合设计数学建模课程综合设计 王 丹 理学院数学与系统科学系2016年夏季第第7讲讲 仿真模型与仿真模型与Matlab实现实现1/59例1:生命游戏 生命游戏(game of life)是由剑桥大学的数学家John Horton Conway在1970年提出来的。1) 元胞分布在规则划分的二维网格上;2) 元胞具有0,1两种状态,0代表“死”,1代表“生”;3) 元胞以相邻的8个元胞为邻居;4) 一个元胞的生死由其在该时刻本身的生死状态和周围八个邻居的状态决定。第第7讲讲 仿真模型与仿真模型与Matlab实现实现2/59生命游戏的规则:生存:对一个活的元胞,如果它的邻居中有两个或三

2、个元胞是活的,那么该元胞将继续生存下去。死亡: 对一个活的元胞 (a)如果它的邻居中有四个或四个以上的元胞是活的,那么该元胞将死去;(b)如果它的邻居中只有一个或没有活的元胞,那么该元胞也将死去。繁殖: 对一个死的元胞,如果它的邻居中有3个(不能多也不能少)活的,那么该元胞将成为一个活的元胞。第第7讲讲 仿真模型与仿真模型与Matlab实现实现3/59生命游戏的规则(数学形式):11,231,0,23tNttiittNNifSorif Sthen SifSorS11,30,0,3tNttiitNifSif Sthen SifS 规则的不断演化所形成的规律性与初始状态有关,不同的初始状态可能导致

3、不同的演化结果。第第7讲讲 仿真模型与仿真模型与Matlab实现实现4/59生命游戏的一些演化过程和形态演示(1)完全生成初始状态(2)脉冲星(Explore)(3)滑翔机(Glider)(4)小脉冲星(Small Explore)(5)10元胞行(10 Cells row)(6)轻型飞船(Lightweight Spaceship)(7)图姆勒图姆勒(Tumler)(8)滑翔机发射器滑翔机发射器(Gosper Glider Gun )第第7讲讲 仿真模型与仿真模型与Matlab实现实现5/59完全生成初始状态第第7讲讲 仿真模型与仿真模型与Matlab实现实现6/59脉冲星(Explore)

4、第第7讲讲 仿真模型与仿真模型与Matlab实现实现7/59滑翔机(Glider)第第7讲讲 仿真模型与仿真模型与Matlab实现实现8/5910元胞行(10 Cells row)第第7讲讲 仿真模型与仿真模型与Matlab实现实现9/59轻型飞船(Lightweight Spaceship)第第7讲讲 仿真模型与仿真模型与Matlab实现实现10/59图姆勒图姆勒(Tumler)第第7讲讲 仿真模型与仿真模型与Matlab实现实现11/59滑翔机发射器滑翔机发射器(Gosper Glider Gun )第第7讲讲 仿真模型与仿真模型与Matlab实现实现12/59滑翔机发射器滑翔机发射器(G

5、osper Glider Gun )第第7讲讲 仿真模型与仿真模型与Matlab实现实现13/59程序实现几个核心问题:(1)棋盘状态如何表示?(2)邻域活细胞总数如何统计?(3)元胞自动机的状态改变规则在程序中如何体现?(4)动画如何生成?(5)初始状态如何给定?第第7讲讲 仿真模型与仿真模型与Matlab实现实现14/59(1)棋盘状态如何表示? 用一个0-1矩阵表示元胞自动机的棋盘,即:(2)邻域活细胞总数如何统计?第第7讲讲 仿真模型与仿真模型与Matlab实现实现15/59(3)元胞自动机的状态改变规则在程序中如何体现?换一种写法:程序效率差异显著第第7讲讲 仿真模型与仿真模型与Ma

6、tlab实现实现16/59(4)动画如何生成?初始化:每次更新:(5)初始状态如何给定? 直接赋值,如第第7讲讲 仿真模型与仿真模型与Matlab实现实现17/59省略了赋初值语句第第7讲讲 仿真模型与仿真模型与Matlab实现实现18/59例2:Langtons ant 兰顿蚂蚁是元胞自动机另外一个经典的案例。其通过简单两条规则模拟蚂蚁的行为规律。 蚂蚁在方形网格上运动,网格分为黑色和白色两种,蚂蚁在网格上头可朝向上、下、左、右四个方向,头朝向哪个方向,下一步运动就向该方向,并且不改变头的方向,运动遵循两条规则:(1)若蚂蚁位于黑色网格,则头向右转90度,前进一步,并将原网格变成白色;(2)

7、若蚂蚁位于白色网格,则头向左转90度,前进一步,并将原网格变成黑色;第第7讲讲 仿真模型与仿真模型与Matlab实现实现19/59 通过模拟可以发现,蚂蚁表现出了相当复杂的行为。初始状态为一只小蚂蚁位于网格中间,且头朝上。随着蚂蚁的行走演变,系统行为表现为三个阶段:第第7讲讲 仿真模型与仿真模型与Matlab实现实现20/59第第7讲讲 仿真模型与仿真模型与Matlab实现实现21/59程序实现核心变量:(1)棋盘的状态改变(2)蚂蚁的当前位置和头的朝向用一个二维数组表示棋盘的状态,假设棋盘大小为200*200,蚂蚁位于棋盘中心(100,100)位置,初始蚂蚁头朝上。棋盘:cells(1:20

8、0,1:200) = 1; %白色棋盘 posx = 100; posy = 100; %蚂蚁当前位置 direct = 1; %1,2,3,4代表从上开始顺时针四个方向第第7讲讲 仿真模型与仿真模型与Matlab实现实现22/59棋盘大小全为白色棋盘设定图像显示蚂蚁初始位置和方向第第7讲讲 仿真模型与仿真模型与Matlab实现实现23/59当前位置为黑格头朝上头朝右头朝下头朝左第第7讲讲 仿真模型与仿真模型与Matlab实现实现24/59当前位置为白格头朝上头朝右头朝下头朝左第第7讲讲 仿真模型与仿真模型与Matlab实现实现25/59例3:森林火灾模拟 元胞空间采用2维正方形网格自动机,元

9、胞包括三种状态:正在生长的树(绿色),正在燃烧的树(红色)和空状态(黑色)。初始状态由这三种情况随机填充,邻域取Moore型。每一步按下述规则更新状态:(1)正在燃烧的树变为空状态;(2)如果正在生长的树格位最近的邻居中有不少于一棵树正在燃烧,则它将变为燃烧状态;(3)如果是空状态格位,则其以概率p生长出树;(4)考虑到闪电的作用,在最近邻居中没有正在燃烧的树(周围全是树且没有燃烧)的情况下,生长树在每个时间步以概率 f 变成燃烧的树。第第7讲讲 仿真模型与仿真模型与Matlab实现实现26/59第第7讲讲 仿真模型与仿真模型与Matlab实现实现27/59程序实现核心变量: 规则(1)规则(

10、4)的实现!用一个二维数组表示棋盘的状态,假设棋盘大小为100*100,初始根据概率随机确定是否有树。棋盘:S=rand(100); %随机生成0,1间的棋盘矩阵 S(S0.5) = 1; Sk=zeros(102); Sk(2:N+1,2:N+1) = S;第第7讲讲 仿真模型与仿真模型与Matlab实现实现28/59第第7讲讲 仿真模型与仿真模型与Matlab实现实现29/59第第7讲讲 仿真模型与仿真模型与Matlab实现实现30/59例4:基于元胞自动机的交通流模拟 将道路离散化为一维网格,车辆为元胞,匀速行驶,其在一维网格上的移动看成一维网格的状态变化,邻域取前后各一个位置,即邻域半

11、径 r=1,初始状态为道路入口处有一辆车,随着时间的进行,道路入口处按均匀分布随机产生一辆车作为道路的输入(产生概率决定了车流密度),车辆在道路上的移动可使用元胞自动机模拟。 将某一个位置的车固定不移动,还可模拟红绿灯和交通堵塞等情况,如将道路最后一个位置车辆不移动或固定时长移动,则可模拟红绿灯;将道路中某一个位置车辆不移动一定时长可模拟偶然交通事故。 第第7讲讲 仿真模型与仿真模型与Matlab实现实现31/59(1)在当前时间,某一个位置若有车,则下一个时间该位置有无车取决于前后位置是否有车;(2)若当前位置有车,下一个位置没有车,则当前位置下一个时刻有无车取决于上一个位置是否有车,如上一

12、个位置有车,则下一个时刻当前位置有车,否则无车,若下一个位置有车,则还决定于下一个时刻此车是否会前进,若前进,则当前位置下一个时刻有无车又由上一个位置有无车决定,否则当前位置有车;(3)若当前时刻无车,则下一个时刻有无车取决于上一个位置是否有车,若有车,则当前位置下一个时刻有车,否则无车。移动规则:第第7讲讲 仿真模型与仿真模型与Matlab实现实现32/59移动规则可表示成:1( )(1)1( )( )(1)tttttSiS iS iS iS i 上述这条规则隐藏了一个潜在的前提(假设):前进中的车辆应该有车距(一个车位),即若完全紧挨在一起的车辆在行进中要隔开一个车位。第第7讲讲 仿真模型

13、与仿真模型与Matlab实现实现33/59第第7讲讲 仿真模型与仿真模型与Matlab实现实现34/59 在这个模型基础上还可以加上红绿灯机制,如在路的最后设置红绿灯,给定红绿灯时间,只需在红灯时间内让道路口位置恒为1,在绿灯时间内让道路口位置恒为0即可。 红灯60个单位时间,绿灯120个单位时间第第7讲讲 仿真模型与仿真模型与Matlab实现实现35/59 增加偶然交通事故。在每个时刻,产生服从均匀分布的随机数,若随机数大于0.5%则发生一次交通事故,在有车的位置随机产生一个交通事故点,堵塞交通固定时间,如60个时间单位。具体实现上让这个位置在堵塞时间内恒为1即可。第第7讲讲 仿真模型与仿真

14、模型与Matlab实现实现36/59程序实现系统参数设置:S=100; %道路长度First(1:s+1) = 0; %一维数组表示道路Passtime = 120; %绿灯时间Stoptime = 60; %红灯时间 Ispass=1, curpass=0, curstop =0; %记录当前车辆已通过或停止的时间Accident = 0; %路面是否发生随机事故Acpoint = -1; %发生随机事故的位置Actime = 60; curactime = -1; %随机事故的阻塞时间第第7讲讲 仿真模型与仿真模型与Matlab实现实现37/59记录更新的道路状态阻塞道路末端打开道路末端红

15、绿灯规则实现第第7讲讲 仿真模型与仿真模型与Matlab实现实现38/59随机交通事故处理以0.5%的概率产生随机事故第第7讲讲 仿真模型与仿真模型与Matlab实现实现39/59车辆移动仿真从道路末端到起点车辆移动方程事故点附近处理第第7讲讲 仿真模型与仿真模型与Matlab实现实现40/59道路口进入车辆 以0.4的概率按均匀分布在道路起点处产生1辆车,更符合实际的是应该按照泊松分布或指数分布产生车辆,如:第第7讲讲 仿真模型与仿真模型与Matlab实现实现41/59 进一步考虑车辆加减速,设每辆汽车(元胞)有一个行驶速度,速度最小值为0,最大值为vmax,在当前时刻到下一时刻演化中,汽车

16、遵循以下原则: (1)加速:现实中司机总是期望以最大速度行驶,所以在每一步当可以加速时(前后车辆距离大于当前车速),司机进行加速,新的速度为maxmin(1,)nnvvv (2)减速:当前后车距过近,用当前速度前进会碰撞时司机进行减速,新的速度为min(,)nnnvv d dn为前后车距。第第7讲讲 仿真模型与仿真模型与Matlab实现实现42/59 (3)随机慢化:由于各种不确定因素(如路况,司机分心等)造成车辆减速,以概率p进行随机慢化,新的速度为max(1,0)nnvv (4)移动:车辆按照调整后速度向前移动nnnxxv 这个模型称为NaSch(Nagel和Schreckenberg提出

17、)模型。第第7讲讲 仿真模型与仿真模型与Matlab实现实现43/59 仿真场景1: 设在道路口处按均匀分布以40%的概率产生车辆,假设随机慢化概率很低,不超过5%,最大速度为2,则仿真结果显示:第第7讲讲 仿真模型与仿真模型与Matlab实现实现44/59 仿真场景2: 设在道路口处按均匀分布以40%的概率产生车辆,假设随机慢化概率很低,不超过5%,最大速度为5,则仿真结果显示:第第7讲讲 仿真模型与仿真模型与Matlab实现实现45/59 仿真场景3: 设在道路口处按均匀分布以80%的概率产生车辆,假设随机慢化概率40%,最大速度为4,则仿真结果显示:第第7讲讲 仿真模型与仿真模型与Matlab实现实现46/59 仿真场景4: 设在道路口处按均匀分布以60%的概率产生车辆,假设随机慢化概率40%,最大速度为2,则仿真结果显示:第第7讲讲 仿真模型与仿真模型与Matlab实现实现47/59程序实现系统参数设置:S=200; %道路长度First(1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论