anylogic仿真教学课件_第1页
anylogic仿真教学课件_第2页
anylogic仿真教学课件_第3页
anylogic仿真教学课件_第4页
anylogic仿真教学课件_第5页
已阅读5页,还剩116页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

1、anylogic仿真目录Anylogic简介Java Basics for AnylogicAnylogic基于智能体仿真Anylogic离散事件仿真Anylogic系统动力学仿真Anylogic 简介Anylogic简介主要功能最灵活最强大的仿真建模技术 AnyLogic提供了远胜其他任何工具的建模结构,用于结构,行为和系统数据的描述。对象,接口和等级层次,块图和流图,计时器,端口和消息传递,变量和代数微分方程,以及在模型中任何地方插入Java语言表达式,语句,或函数,等等这些构成了任何层次,任何专业的建模者都可以使用的终极工具箱。Anylogic简介主要功能分析 在AnyLogicTM中,

2、你可以创建随机性或确定性的模型,并对模型的输出数据进行分析。 AnyLogic支持超过35种随机分布,也允许自定义分布。用户可以根据实际情况进行蒙特卡罗试验,敏感性分析,优化,以及自定义的试验等。Anylogic简介主要功能优化 在AnyLogic中无缝地集成了世界领先的OptQuestTM优化器。OptQuestTM使用启发式方法,神经网络和数学优化方法,找到使目标函数值最大或最小的离散和/或连续模型参数的值。 Anylogic简介主要功能可交互的二维和三维动画灵巧的可于网络上运行的模型 AnyLogic模型(包括仿真引擎和动画)是100%的Java程序,可以运行在任何可以使用Java的平台

3、上(例如Windows,Solaris,Linux,MacOS等),甚至可以被当作Java小程序而放在网站上。AnyLogic简介界面项目视图属性视图、控制台视图、日志视图图形编辑器调色板视图AnyLogic简介几种视图(1)项目视图在项目视图中,可以访问当前工作空间中所有打开的AnyLogic项目。工作空间树便于在模型之间浏览。模型本身为最顶层活动对象和Java类活动对象的组成元素AnyLogic简介几种视图(2)调色板视图调色板视图由任务相关的包含各种绘图元素的模板所组成。所谓绘图元素是指您在建模过程中需要多次重复使用的模板上的几何图形。AnyLogic简介几种视图(3)属性视图属性视图用

4、于查看和修改当前选中的模型元素的属性。当选中了某个元素(比如在项目视图中或者图形化编辑器中),属性视图中将显示该元素的相应属性。AnyLogic简介几种视图(4)问题视图AnyLogic支持在任意位置检查类型、参数和图表的语法。在AnyLogic的工作空间中建立模型时,AnyLogic能够发现一些问题或者错误。在代码生成与编译过程中发现的错误将显示在AnyLogic的问题视图中。AnyLogic简介几种视图(5)检索视图该视图用于显示查询结果。检索结果以树形结构自顶向下组织,该树结构中包含了所有检索到的与检索表达式相匹配的模型元素。AnyLogic简介几种视图(6)控制台视图控制视图中显示模型

5、执行的输出结果,也允许输入必要的控制参数。控制台能够显示三种类型的文本,每种类型用不同的颜色加以区分。标准输出标准错误标准输入AnyLogic简介几种视图(7)帮助视图AnyLogic简介图形化编辑器每个活动对象类都有自己相对应的图形化编辑器,可以在图形化编辑器中定义每个活动对象的结构。主要包括以下几个方面:定义活动对象类的接口。使用几何图形与调节控件定义活动对象的界面与图标。图形化编辑器将几何图形的属性与活动对象的数据以及嵌入对象联系在一起。定义行为元素,如事件状态图等。定义嵌入对象以及它们之间的相互关系。AnyLogic简介图形化编辑器在项目视图中右击活动对象后,在弹出的菜单中选择Open

6、 in Graphical Editor或者在项目视图中直接双击活动对象。AnyLogic简介使用视图可以在AnyLogic的View菜单中控制视图打开与关闭,如果菜单中视图名称的前面标有对勾,则表示该视图已经打开。此外,也可进行的停靠、悬浮、移动、调整等AnyLogic简介使用代码提示功能AnyLogic支持代码提示功能,有了这项功能,在输入函数、变量以及参数的时候就不用输入它们的全名了,从而大大减轻了代码输入的工作量。可以使用代码提示向导输入变量名或者函数名。利用代码提示向导插入名称AnyLogic简介文本检索1.点击工具栏中的 按钮,打开检索窗口。2.在Containing Text文本

7、编辑框中输入想要检索的字符串。检索时需要区分大小写检索时需要指定模式面指定检索范围整个工作空间当前选中的模型元素AnyLogic简介仿真试验模型时间单位的设置。在项目视图选中目标模型。在其属性视图中设置合适的时间单位。AnyLogic简介仿真试验仿真试验属性介绍。AnyLogic简介仿真试验演示窗口介绍。工具栏状态栏AnyLogic简介快捷键为了能够使用键盘代替鼠标执行某些命令,AnyLogic给您提供了大量的快捷键。此外,AnyLogic还支持标准的Windows快捷键。AnyLogic简介快捷键为了能够使用键盘代替鼠标执行某些命令,AnyLogic给您提供了大量的快捷键。此外,AnyLog

8、ic还支持标准的Windows快捷键。AnyLogic模型创建新模型1.点击工具栏中的New Model 按钮,或者在主菜单中选择File | New Model,或者按下Ctrl + N键。2.New Model对话框将会弹出。3.在Model Name文本编辑框中输入模型的名字。4.为模型文件指定保存位置。点击Browse按钮,浏览文件系统,找到您所期望的位置,或者在Location文本编辑框中输入目标文件夹的位置。5.如果有必要的话,修改AnyLogic将要创建的Java包名。6.完成之后,点击Finish按钮。AnyLogic模型打开模型打开已经存在的模型点击工具栏中的Open 按钮,

9、或者在主菜单中选择File | Open,或者按下Ctrl + O键,Open对话框将会弹出。在资源管理器中找到您想打开的模型文件,双击该文件,或者选中该文件后点击Open按钮。打开最近打开的模型在File菜单最下方的最近打开的模型文件列表中选择您希望再次打开的模型。AnyLogic允许同时打开多个模型AnyLogic模型保存模型保存当前模型点击工具栏中的Save 按钮,或者在主菜单中选择File | Save,或者按下Ctrl + O键。把当前模型保存为其它名字在主菜单中选择File | Save As,Save As对话框将会弹出。输入您想保存的模型名称和位置。点击Save按钮。保存所有模

10、型点击工具栏中的Save All 按钮,或者在主菜单中选择File | Save All。AnyLogic模型关闭模型您可以随时从当前的工作空间中移除某个已经打开的项目。关闭模型在主菜单中选择File | Close。选中要关闭的模型,右击选择关闭。AnyLogic模型管理模型中的元素有的时候,可以将模型中的某些元素和(或)它们的名字从演示界面中移除,而不必将这些元素从模型中删除。在演示界面中显示/隐藏模型中元素的名称在图形化编辑器中选中该元素。在属性视图的General页面中选中/取消Presentation复选框。添加/排除模型元素在图形化编辑器中选中该元素。在属性视图的General页面

11、中取消/选中Ignore复选框。AnyLogic模型创建模型文档为了使得模型便于理解,AnyLogic允许您为模型中的每一个元素添加一段描述性的文字。添加模型元素的描述信息在图形化编辑器中选中一个元素。在属性视图的Description页面中输入该元素的描述信息。Java Basics for AnylogicJava Basicsgeneral remarksJava 变量名区分大小写: MyVar与myVar不同 变量名中不能出现空格: “My Var”是不合规则的。以分号“;”表示语句结束: MyVar= 150;每个函数后面都要带圆括号(): time(), add(a)注意整除运算符

12、“/”: 3/2= 1, 不等于1.5布尔值类型只有true和 false, 不能使用1和 0。点 “.”表示从属关系,即进入下一层: agent.event.restart()数组元素的索引值从0开始,到 N-1。Java Basicstypes原始类型int表示整数,如12, 16384, -5000double表示实数,如1.43, 3.6E18, -14.0Boolean表示布尔值,true和false。复合类型类String表示文本的字符串类型,如 “Hi there!”, “MSFT”ArrayList, LinkedList对象类的集合,HyperArray,在系统动力学模型中代

13、表多维数组其他Java Basicsexpressions算术运算符符号: +, , *, /, %(求余) 在整除中, 只保留商,如3 / 2= 1, 2 / 3= 0优先级:/,*,%,+, 。 “+”在字符值类型中表示连接,如“Any”+“Logic”结果为AnyLogic,“x=”+5结果为x=5比较运算符符号: , =, , =, =, !=Java Basicsexpressions逻辑运算符符号: &(AND), |(OR), !(NOT)优先级:!,&,|条件运算符符号: condition ?value-if-true :value-if-false快捷运算符符号: =, +

14、=, -=, *=, /=, %=, +, -举例: a+=b等价于a=a+b各符号优先级列表,见链接。圆括号可以改变优先级的顺序Java Basics调用方法和获取字段调用方法调用函数和方法时后面跟圆括号()。如果参数有多个,用逗号隔开。比如:x = time();/获取当前模型的时间moveTo(getX(),getY() + 100 );/将对象移至指定位置traceln(“Population is increasing”);/输出到日志中获取对象的字段或方法为了获取模型元素(如状态图、动画、活动对象类)的字段或方法,采用.,如:statechart.fireEvent( “go”);

15、 sum = sum+ agents.get(i).x;Java Basics注释在程序中,有两种注释方法:/* text*/:忽视“/*”和“ */”之间的文本/ text:仅忽视本行文本例子:/ Prepare Engine for simulation:engine.start( root );engine.runFast(); / fast mode no animationJava Basics复制对象复制的对象保存在集合中。索引值从0到N-1。获取对象集合的大小:people.size()获取某个元素:people.get( i )添加新元素到集合中:add_people();从集

16、合中删除指定对象:remove_people( person );Java Basics固定函数系统函数time(), getOwner(), pause(), isStateActive(), etc数学函数基本: sqrt, sin, cos, tan, exp, log, pow, etc数组: add, sub, mul, sum, avg, min, max, get, etc概率分布函数uniform, exponential, bernoulli, beta,triangular, etc时间相关函数: delay,time ,date ,minute , etcJava Bas

17、ics主要的语言结构赋值语句y = f(x1,x2) + 5*z;event.restart( uniform( 10, 20 ) );条件语句if ( friendsRatio attackConstant) attack(); else escape(); 循环语句double total = 0;for ( Person p : people )total += p.income;Anylogic基于智能体仿真基于智能体模型建模者在设计基于智能体的模型时,要确定实体和主体(可以是人、公司、项目、资产、车辆、城市、动物、船、产品等),定义它们的行为(如主要的驱动力,反映、内存、状态等),并

18、将它们至于某个环境里,可能还需建立关联,然后运行仿真模型。基于智能体模型实例介绍利用事件产生新的智能体,平均一分钟产生一个。通过这个实例能够掌握如何建立智能体,并对调色板视图中的常规面板有个初步的了解。实例介绍第1步:创建新模型1.点击工具栏上New Model按钮 。New Model对话框将会弹出。2.指定模型的名字。在Model Name文本编辑框中输入Event Generating New Agents。3.为模型文件指定保存位置。点击Browse按钮,浏览文件系统,找到您所期望的位置,或者在Location文本编辑框中输入目标文件夹的位置。4.点击Finish按钮。实例介绍第2步:

19、建立智能体1、在项目视图中,右击模型符号,选择新建-活动对象类。实例介绍第2步:建立智能体2、在弹出的对话框中填写智能体的名称,点击完成。实例介绍第2步:建立智能体3、打开新建的活动对象类,在属性视图常规一栏中,Name中填写Person并勾选智能体前面的复选框,完成建立智能体活动对象类。此时,Person活动对象类的图标由 变为实例介绍第3步:为智能体添加对象绘制代表人的图形。有两种方法:用户自行绘制。利用调色板视图中,展示折线画出一个人的形状,并填充颜色。 注意:运用此方法需要设置显示比例。选择软件自带的图片。在调色板视图中,从图片面板中选择需要的图片即可。为了节省时间,在此采取第二种方法

20、。实例介绍第3步:为智能体添加对象在调色板视图中,打开Pictures面板,将Person拖到图形编辑器中。要更改Person的属性,首先要取消组。实例介绍第4步:为Main添加元素在工程视图中,选中Person,拖到图形编辑器中合适的位置(会影响演示区域的起点)。同时添加事件元素和环境元素。实例介绍第5步:设置元素属性环境元素的属性使用默认设置。设置Person的属性。选中Person元素,在Name后面的文本框中填写people,更改元素名称。Environment:environment(此名称为建立的环境元素的名称,此处为系统默认名称)Repulication:0(根据实际情况需要建立

21、相应数目的对象群),其他属性默认。一定要有数字,此时people成为了一个数组,后面出现.设置事件元素的属性。实例介绍第5步:设置元素属性设置事件元素的属性。选中Event元素,在Name后面的文本框中填写newAgent,更改元素名称。Trigger type:rate(默认值为1个时间单位)action:add_people();此语句表示当事件发生时,添加一个people元素到main中。实例介绍第6步:运行模型在菜单栏中点击运行,在出现的二级菜单中选择Event Generating New Agent。运行结果如图所示。Anylogic离散事件仿真离散事件系统AnyLogic提供了企

22、业库(Enterprise Library),这是一个离散事件仿真库,其中包含多个对象,你可以使用这些对象来快速地仿真复杂的离散事件系统,如: 涉及车间布局细节信息的制造过程 简单和复杂的服务系统(例如:银行,机场等) 采用了基于活动的成本计算的商业活动 后勤与供应链模型 离散事件系统企业库面板1、企业库模板显示了库中的所有对象。 2、你可以点击模板中的任一对象,然后将它拖动到结构图中。 3、一旦你将此对象放置于结构图中之后,它即被选定,并且其属性显示于Properties(属性)窗口中。4、你可以调整对象属性为你的模型所需要的值。如果在稍后某个时刻需要调整对象属性,点击选取此对象,然后根据你

23、所需修改其属性。离散事件系统如何连接对象 对象需要彼此之间进行通信,因此你将需要把一个对象与另一个对象连接起来。你可以有两个选择:通过拖动一个对象的连接点到另一个对象的连接点上,或通过特殊的Connector(连接器)工具。离散事件系统银行营业部模型在这一章节我们将创建一个简单的服务系统,即一个银行营业部,它包括一台自动柜员机(ATM机)。我们将在这个例子中使用基于活动的成本计算,以了解该公司服务一个顾客需要有多少成本,以及哪些部分为等待成本,哪些部分为服务成本。银行营业部模型第1步:建立新模型1.点击工具栏上New Model按钮 。New Model对话框将会弹出。2.指定模型的名字。在M

24、odel Name文本编辑框中输入Bank。3.为模型文件指定保存位置。点击Browse按钮,浏览文件系统,找到您所期望的位置,或者在Location文本编辑框中输入目标文件夹的位置。4.点击Finish按钮。银行营业部模型第2步:创建模型流图添加流图模型的对象选中调色板中Enterprise Library模板下的Source元素 ,此元素可以产生实体,在此例中代表客户。拖至图形化编辑器中合适的位置松开鼠标。依次添加queue元素(表示等待服务的顾客)、delay元素(表示ATM的服务时间)、sink元素(表示流图的终点)。最终结果图如右图所示。连接流图中各个对象。最终结果图如右图所示。银行

25、营业部模型第2步:创建模型流图设置对象属性选中Source元素,常规Interarrival rate:0.67指定顾客到来的频率,服从指数分布,即=0.67。选中queue元素,常规queue capacity :15 收集数据 Enable statistics:选中状态 Exponential()函数是标准AnyLogic随机数发生器函数。AnyLogic也提供了其他随机数分布,例如正态分布,均匀分布,三角形分布等等。请参考用户手册(Users Manual)以查阅所有随机数发生器的详细描述。 根据实际情况选择合适的随机分布函数。银行营业部模型第2步:创建模型流图选中delay元素,常规

26、Name :ATM服务时间服从三角形分布,delay time:triangular(0.8,1,1.3) Enable statistics:选中状态仿真时间设为永不停止。点击运行Bank/Simulation,并观察其行为。银行营业部模型第2步:创建模型流图观察端口数据银行营业部模型第3步:创建模型动画模拟银行营业部真实布局动画,绘制一个椭圆表示ATM机选中调色板中Presentation模板下的Oval 元素。将 椭圆拖至图形编辑器区域,并进行调整,如图所示。 银行营业部模型第3步:创建模型动画绘制一个折线表示队伍。双击调色板中Presentation模板下的Polyline 元素。在图

27、形编辑器区域中合适位置点击鼠标,绘制如图所示的折线,靠近椭圆(ATM)。银行营业部模型第3步:创建模型动画绘制一个矩形代表ATM的状态。同理,绘制矩形,放在折线和椭圆之间。设置小矩形的动态属性。 动态Fill Color: ATM.size() 0? red: green 表示当ATM机忙时为红色,闲时为绿色。 设置queue的动画属性。 常规capacity:15 Animation Guide Shape:Polyline银行营业部模型第3步:创建模型动画设置ATM的动画属性。 常规Animation guide shape:Oval Animation type:single 银行营业部

28、模型第4步:收集统计数据用垂直柱状图表示ATM的利用率均值在调色板中,打开分析面板,添加柱状图,放在椭圆的右边,调整大小。在属性视图中,常规一栏,点击Add Data Items。图表Title: ATM utilization Value:ATM.statsUtilization.mean() 每个delay元素都有自带statsUtilization数据集,除了均值,还有最小值和最大值等统计量。银行营业部模型第4步:收集统计数据用垂直柱状图表示ATM的利用率均值在调色板中,打开分析面板,添加柱状图,放在椭圆的右边,调整大小。在属性视图中,常规一栏,点击Add Data Items。图表Ti

29、tle: ATM utilization Value:ATM.statsUtilization.mean() 每个delay元素都有自带statsUtilization数据集,除了均值,还有最小值和最大值等统计量。银行营业部模型第4步:收集统计数据用水平柱状图表示平均对长。在调色板中,打开分析面板,添加柱状图,放在折线的上面,调整大小。在属性视图中,常规一栏,点击Add Data Items。 Title: Queue length Value:queue.statsSize.mean() 外观一栏bar direction:bars grow to the left 银行营业部模型第5步:自

30、定义用户动画绘制代表用户的自定义图形。画如图所示的折线和椭圆。选中折线和椭圆,右击组创建组。组名:customerShape。缩小至合适大小,放在如图所示的位置。银行营业部模型第5步:自定义用户动画根据下图调整source元素的属性。银行营业部模型第5步:自定义用户动画运行模型。Anylogic系统动力学仿真系统动力学AnyLogic支持多种建模技术,允许您使用标准的系统动力学图示符号对复杂的动态系统进行建模与仿真。在AnyLogic中,可以使用AnyLogic为您提供的专用符号(包括存量、流量和辅助变量),在图形化编辑器中绘制系统的流图。 /系统动力学AnyLogic使用箭头表示各个系统动力

31、学变量之间的依赖关系。存量与流量之间的依赖关系用黄色粗箭头表示。从流量指向存量的箭头表示该流量为输入流,反之,从存量指向流量的箭头表示该流量为输出流。一般而言,如果存在从变量A指向变量B的箭头,则意味着变量B的计算公式中涉及到变量A。系统动力学建模这是一个经典的系统动力学模型,经常在相关的著作中出现。该模型描述了一种新产品在市场中的扩散过程,该产品的潜在购买者在受到一定的影响后才有可能成为购买者,这种影响包括两类,一类是产品广告;另一类是已经购买该类新产品的消费者的口头宣传。系统动力学模型关注的是系统的积累过程,所以在同一个存量中,所有元素的地位是相同的,是不可区分的。建模人员应当从全局的角度

32、去分析系统的结构,并定量地确定它们之间的依赖关系。系统动力学建模流图在AnyLogic中,可以使用AnyLogic的专用符号(包括存量、流量和辅助变量),在图形化编辑器中绘制系统的流图。存量(也被称为状态变量)的值随着时间的推进不断变化。流量(也被称为速率)引起存量的值的改变,进而,系统中存量的值又决定了流量的大小。介于存量和流量之间的变量称为辅助变量,它的值也随着时间的推进不断变化。系统动力学建模流图AnyLogic使用箭头表示各个系统动力学变量之间的依赖关系。存量与流量之间的依赖关系用黄色粗箭头表示。从流量指向存量的箭头表示该流量为输入流,反之,从存量指向流量的箭头表示该流量为输出流。一般

33、而言,如果存在从变量A指向变量B的箭头,则意味着变量B的计算公式中涉及到变量A。系统动力学建模存量创建存量变量在调色板视图下的Model页面中选择Stock 元素。在图形化编辑器中您所期望的位置点击鼠标,放置该存量。在属性视图下的Equation部分中,定义该存量的微分方程。输入等式d()/dt=文本编辑框右半部分的内容。在Initial value文本编辑框中设置存量变量的初始值。系统动力学建模流量创建从一个存量指向另一个存量的流量双击流出的存量变量,然后单击流入的存量变量。AnyLogic将创建一个新的流量,该变量是第一个存量变量的输出流,第二个存量变量的输入流。存量与流量之间的箭头描述了

34、各种变量之间的依赖关系。进入属性视图下的General页面设置流量的属性。如果需要对流量进行重命名,则需要使用重构功能。再Name文本编辑框中输入流的新名称,然后,按下Ctrl+Enter对存量变量中所涉及到该流量的公式进行更新。在=文本编辑框中输入流量值的计算公式。系统动力学建模辅助变量创建辅助变量在调色板视图下的Model页面中选择Flow Aux Variable 元素。在图形化编辑器中恰当的位置点击鼠标,放置辅助变量。在=编辑框中输入辅助变量的计算公式。如果您希望创建一个值为常量的辅助变量,请选中Constant复选框。系统动力学建模表格函数表格函数,是指用表格定义的函数。如果需要定义

35、的函数关系具有复杂的非线性关系,不能通过标准的函数组合表达,可以使用表格函数,或者有时需要把离散的实验数据转换成连续的形式,也需要使用表格函数。表格函数的工作模式如下:首先用户给出一组(参数,值)对,即XY坐标系中的一系列点;AnyLogic根据这组数据和选定的插值方法建立表格函数。当用户通过一个参数调用该函数,将会返回一个可能的插值结果。当x的值超出提供的参数范围时,AnyLogic提供了一系列的处理办法供选择。系统动力学建模数组数组用于存储任意维数的数字集,每个维度中的索引(也称为下标)数量是有限的。如果需要存储并访问大量的参数,或者存在多个模型层时,通常需要使用数组。系统动力学建模数组维

36、度AnyLogic提供了三种类型的维度:枚举:是一个由若干具有名称的数据项组成的列表,您可以在数组元素中使用这些数据项。区间:允许定义数组变量的取值范围。子维度:允许定义维度的子区间。创建一个维度在模型视图中,右击正在编辑的模型名称,在弹出的菜单中选择New | Dimension。这时,将看到一个New Dimension对话框。在Name文本编辑框中输入这个新维度的名字,如果有必要的话还可以在Description文本编辑框中输入该维度的描述信息,最后,点击Finish按钮完成创建。系统动力学建模数组定义一个数组变量在图形化编辑器或者项目视图中选中一个变量。如果需要把这个变量改成一个数组型

37、的变量,您需要进入该变量对应属性视图的General页面,选中Array复选框。现在,在图形化视图中该变量被一对方括号所包围,AnyLogic利用这种方式表示一个数组型的变量。点击复选框右侧的,属性视图的Array页面将会显示出来。定义数组编两对应的维度。如果需要添加某个维度,首先在Available列表中选中该维度,然后点击 按钮。如果需要添加列表中的所有维度,点击 按钮。如果需要的话,可以随时删除已经添加了的维度。首先在Selection列表中选中需要删除的维度,然后点击 按钮。如果需要删除所有已经添加了的维度,点击 按钮。一般情况下,各个维度之间的顺序关系也十分重要。您可以通过点击 和

38、按钮调整维度之间的顺序。系统动力学建模数组初始化数组变量给数组中所有元素指定相同的初始值在图形化编辑器或者项目视图中选中该数组变量。进入属性视图的General页面。在Initial value文本编辑框中输入初始值或者初始值的计算公式。给某个特定的子数组指定初始值在图形化编辑器或者项目视图中选中该数组变量。进入属性视图的General页面。指明组成这个子数组的所有元素在“大数组”中的下标。缺省情况下,所有元素都被选中,可以修改这个列表,指定在子数组中出现某些特定的元素。对于这些维度,首先点击Array复选框右侧的中维度的名称,然后从下拉列表中选出所需要的枚举元素。在=文本编辑框中输入用于计算

39、子数组初始值的计算公式。如需为其他子数组定义初始值计算公式,点击Add formula按钮后,重复上面的方法即可。如果需要的话,可以随时删除已经添加的公式。系统动力学建模延迟函数系统动力学中,在对延迟效果建模时(例如有的情况下,在决策时需要花费一定的时间,或者在某个行为发生之前,首先需要执行其他过程),往往需要用到延迟函数。delay函数有两种形式;delay (, , )调用该函数之后,第一个参数对应的流,将会延迟指定的时间。delay (, )调用该函数之后,第一个参数对应得流,将会延迟指定的时间。是第一种形式的简化版本,如果初始值为0,则可以用这种形式代替第一种形式。系统动力学建模影子变

40、量AnyLogic允许为系统动力学变量定义影子变量。影子变量是另一个变量(可以是流量、存量,也可以是辅助变量)的拷贝。当系统的流图非常复杂,而需要把系统中的某些变量放置到对象接口中时,可能需要把这些变量放到流图中的某一个角落,这时,就可以使用影子变量。BASS扩散模型第0步:分析模型我们应当找出系统中的主要变量,以及这些变量对系统的影响,然后创建系统的流图。在绘制系统的流图时,我们需要考虑系统中的哪些变量需要用存量、流量或者辅助变量来表示。存量流量辅助变量箭头各变量之间的依赖关系BASS扩散模型第1步:建立新模型1.点击工具栏上New Model按钮 。New Model对话框将会弹出。2.指

41、定模型的名字。在Model Name文本编辑框中输入Bass Diffusion。3.为模型文件指定保存位置。点击Browse按钮,浏览文件系统,找到您所期望的位置,或者在Location文本编辑框中输入目标文件夹的位置。4.点击Finish按钮。BASS扩散模型第2步:添加存量添加存量表示潜在购买人群的存量选中调色板中Model模版下的Stock元素 。在图形化编辑器中合适的位置点击鼠标,模型中就出现了一个新的变量,用一个小的蓝色矩形代表。工作空间下部的属性视图中显示了该元素的相关属性,可以在这里根据需要对该元素的属性进行调整。修改存量的名字。在属性视图的General页面中的Name文本编

42、辑框中输入PotentialAdopters。BASS扩散模型第2步:添加存量添加存量表示购买人群的存量按照同样的方法再添加一个存量。把它放置在PotentialAdopters存量的右侧。将该存量的名称改为Adopters。移动存量上方的文字标签。按照如下的步骤完成:首先通过点击鼠标选中一个变量(如果一个元素被选中,则它的周围将会出现一个蓝色边框,而且它的文字标签中还会出现一个蓝色的下划线),然后就可以把标签拖放到任意您所期望的位置。按照右图放置每个标签的位置(避免标签将被箭头挡住)。BASS扩散模型第3步:添加购买流在Bass扩散模型中,只有一个流量,该流量用于描述购买速率,它使得潜在购买

43、人群的数量减小,同时使得购买人群的数量增加。使用AnyLogic的流量工具添加流量。速率工具用于创建系统动力学模型中的流量,并且能够在存量之间建立联系,使得它们的值按照指定的速率自动变化。创建流量的方法如下:首先双击PotentialAdopters变量,然后单击Adopters变量。这样,我们就创建了一个流量,该速率变量从PotentialAdopters变量流出,流向Adopters变量。在图形化编辑器中,存量和流量图标之间的箭头标识出了流量对于两类人群的影响方式。在图形化编辑器中,选中流量,把它的名字由缺省的flowAuxVar改为AdoptionRate。然后,按下Ctrl+Enter

44、对前面提到的两个存量所涉及到公式中的相关的流量进行重新命名。BASS扩散模型第3步:添加购买流现在,可以看一下模型中存量的属性内容。AnyLogic自动对模型中存量的公式进行了调整。输入流量(即使得存量数量增加的流量)和输出速率(即使得存量数量减小的流量)被添加到了存量的相应属性中。AnyLogic自动调整模型中存量的公式界面图bAnyLogic自动调整模型中存量的公式界面图aBASS扩散模型第4步:添加常量定义表示人群总数的常量点击调色板视图下Model页面中的Parameter元素 。在图形化编辑器中的任意位置点击鼠标,把该参数添加到模型中。在属性视图下的General页面下设置该元素的属

45、性。修改该常量的名字。在Name文本编辑框中输入TotalPopulation。在Default Value文本编辑框中输入100000,即我们的模型中总人群的数量。BASS扩散模型第4步:添加常量定义ContactRate常量按照同样的方法再定义一个变量,其名称为ContactRate。假设每一年中有100个潜在购买者与购买者接触。在Default Value文本编辑框中输入100。BASS扩散模型第4步:添加常量定义表示广告效果的常量假设广告的数量,以及潜在购买者在受到一定数量的广告的影响之后,购买新产品的可能性为常量。按照前面的方法定义一个常量。将其命名为AdEffectiveness。

46、把这个常量的值设为0.011。BASS扩散模型第4步:添加常量定义AdoptionFraction常量用于描述购买比例的常量潜在购买者与购买者发生接触之后,购买新产品的比例。按照前面的方法定义一个常量。将其命名为AdoptionFraction。把这个变量的值设为0.015。BASS扩散模型第5步:给存量的初始值赋值给初始情况下购买人群的数量赋值在图形化文本编辑框中,选中PotentialAdopters变量。在属性视图下General页面的Initial Value文本编辑框中输入TotalPopulation。为了方便用户输入变量和函数名,AnyLogic提供了代码提示功能。打开代码提示向

47、导的方法如下:将光标移动到文本编辑框中需要的位置,然后按下Ctrl+space。BASS扩散模型第6步:添加辅助变量创建AdoptionFrom辅助变量在调色板视图中Model页面中,选中Flow Aux Variable元素 。在图形化编辑器中的合适位置点击鼠标。在属性视图中,把该辅助变量的名字改为AdoptionFromAd。定义计算公式。在AdoptionFromAd =文本编辑框中输入AdEffectiveness*PotentialAdopters。BASS扩散模型第6步:添加辅助变量创建AdoptionFromWOM 辅助变量重复上面的方法添加另一个辅助变量,其名称为Adoptio

48、nFromWOM,计算公式为:ContactRate*AdoptionFraction*PotentialAdopters*Adopters/TotalPopulation。BASS扩散模型第6步:添加辅助变量定义购买比例的计算公式由于假设两种购买的发生是相互独立的,因此总的购买比例等于购买者口头宣传和广告效应两种方式引起的购买比例之和。在图形化编辑器中选中第3步中创建的流量。进入调色板视图下的General页面。将该变量的名称改为AdoptionRate。在AdoptionRate=文本编辑框中输入如下计算公式:AdoptionFromAd+AdoptionFromWOM。BASS扩散模型第

49、6步:添加辅助变量从流量指向存量的粗箭头表示该流量为存量的输入流。从存量指向流量的粗箭头表示该流量为存量的输出流。从变量A指向变量B的细箭头表示变量A引起变量B的变化。BASS扩散模型第7步:配置仿真模型为了对前面建立的模型进行仿真,需要进行一系列的配置。在AnyLogic中,这一系列配置称为试验,试验的相关信息在工作空间的树形列表中模型分支的最下面列出。还有其他一些类型的试验(如优化试验、风险分析试验、可变参数试验),用于分析模型中的重要参数对于系统行为的影响,或者找到使得系统性能达到最优的参数值。由于我们希望知道购买过程的发生对于系统性能的影响,所以应当在系统达到平衡后再结束仿真运行。在我

50、们的模型中,购买过程大约需要持续10年。BASS扩散模型第7步:配置仿真模型设置仿真结束时间为10在项目视图中,选中试验Simulation:Main。在属性视图的Model Time页面中,选中复选框Stop model at specified time。在右侧的文本编辑框中输入10。这样,仿真将在运行10个时间单位之后自动停止。BASS扩散模型第7步:配置仿真模型设置实时执行模式在项目视图中,选中试验Simulation。在属性视图的Presentation页面中,在Simulation Speed模块中,选中Real time with scale选项。设置仿真推进速度,即实际每一秒钟在模型中所代表的时间,在右边的文本输入框中输入2。BASS扩散模型第8步:运行仿真模型点击工具栏上的Build Model 按钮创建

温馨提示

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

最新文档

评论

0/150

提交评论