欢迎来到天天文库
浏览记录
ID:1235003
大小:519.00 KB
页数:44页
时间:2017-11-09
《netlogo建模基础知识讲解》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Netlogo建模基础知识讲解14302010008秦奕深NetLogo简介1.基本情况NetLogo是一个用来对自然和社会现象进行仿真的可编程建模环境建模仿真集成环境由美国西北大学连接学习与计算机建模中心(CenterforConnectedLearningandComputer-BasedModeling,CCL)开发。2002年发布了1.0版本,用户手册为4.0.2版本,最新为4.1.1版本2.主要功能多主体建模(重点)多个移动Agent分布在二维空间中,每个Agent自主行动,所有主体并行异步更新,
2、整个系统随着时间推进而动态变化。运行控制仿真输出提供了多种手段实现仿真运行监视和结果输出实验管理BahaviorSpace,自动管理仿真运行,并记录结果。系统动力学仿真参与式仿真HubNet模型库3.软件特色完全可编程简单语言结构是LOGO语言的扩展,支持智能体和网络结构可以定义无限个智能体和变量多种内置命令帮助使用支持整型和双精度型浮点数计算跨平台、可复用的应用。二、NetLogo仿真框架1.NetLogo软件2.模型的抽象总体:大量的可移动主体在二维空间中交互作用,随着时间推进,微观个体的属性不断发生变
3、化,系统的宏观特征也因此而变化。从三个方面理解:主体空间表达仿真推进(1)主体(Agents)虚拟世界由主体构成,主体能够接受命令,进行活动,所有主体的行为并行发生。NetLogo中共有三类主体,turtles(海龟)patches(瓦片)observer(观察者)主体类型turtles指能够在世界中移动的主体。世界是二维的,划分为由patches组成的网格,每个patch占据一个矩形小块。patch不能移动patch也是主体patch和turtle一样可以有自己的属性和行为observer是一个全局主体,
4、它观察着由turtles和patches构成的世界,能够执行指令获取世界全部或部分的状态,或实现对世界的控制。虚拟世界(2)空间表达每个patch有二维坐标(pxcor,pycor)坐标值为整数。默认情况下,二维世界的水平、垂直坐标范围为(-17,17)每个turtle也有坐标(xcor,ycor)turtle坐标不必是整数,因此turtle不一定正好位于某个patch的中心。一个patch上也可以同时有多个turtles。实际上对turtle而言,NetLogo的空间是连续的。(3)仿真推进没有明确的仿真
5、时钟变量,也没有提供特定的事件处理机制仿真推进是通过不断重复执行某个例程实现的模型中至少要有初始化例程和仿真执行例程初始化例程实现对模型初始状态的设置,生成所需的turtles,设置其状态,以及其它工作。仿真的执行通过例程go实现,在go例程中编写所需执行的各种指令,完成一个仿真步的工作。需要在Interface页中建立一个按钮与go例程相联系,该按钮是一个永久(forever)按钮,点击后将不断重复执行go例程,直到遇到stop指令或用户再次点击该按钮则仿真终止。2.建模基本过程NetLogo模型包括可视
6、化部件和例程两部分,二者具有紧密联系。先在Interface中创建可视化控件,然后在Procedures中实现相应的代码,通过设置控件的属性将二者联系起来。Interface中主要有三类部件运行控制参数控制仿真显示Procedure中的例程分为两类:命令(command)例程报告(reporter)例程仿真的基本框架初始化tosetup每一个仿真周期togo是否结束?结束对所有Turtle循环askturtles每个Turtle做出决策forward1是否三、编程指南breed[]turtles-own[]
7、globals[]tosetup[]endtogo[]endaskturtles[setpcolorwhite]set-default-shapeturtles"person"setxyrandom-xcorrandom-ycorsetturtles-ownrandomsetage(22+random53)setage(age+1)sethouse0clear-all(ca)forward(fd)1create-turles100sprout-breedsnumber[]sproutnumber[]hatc
8、hnumber[]hatch-breedsnumber[]askone-ofmen[setbreed]ififelse四、生态系统建模示例假设要模拟一个简单的生态系统,该系统中有一种生物以青草为食,通过吃草获取能量、该类生物经历成长、繁殖、死亡过程。1.初始化创建生物群体,并将它们随机分布在空间中。例程(demo1)tosetup;;定义例程setupclear-all;;设置整个世界为初始状态;;创建100个t
此文档下载收益归作者所有