1、课内实验报告课 程 名: 系统工程 任课教师: 朱 专 业: 信息管理与信息系统 学 号: 姓 名: 二 一四 至二 一五 年度 第 1 学期南京邮电大学 管理学院 系统工程课程实验报告实验内容及基本要求:实验项目名称:Ants 实验类型:设计每组人数: 1实验内容及要求: 1) 了解 Netlogo 编程语言的特点和基本语法。2) 完成 Netlogo 基本 Model 的语句解析和仿真流程分析。学号尾数为 1 号:Biology 目录下的 AIDS;2 号:Ants3 号:DaisyWorld ;4 号:Fireflies5 号:Heatbugs ;6 号:Moths7 号:Virus;8
2、 号:Social Science 目录下的 Traffic Grid9 号:Voting;10 号:Network 目录下的 Team Assembly实验过程与结果:1) 语句解析:patches-own chemical 蚂蚁分泌的化学物含量food 食物堆中的食物量nest? 蚁巢nest-scent 接近蚁巢的情况food-source-number 食物来源的食物量下面的是详细的程序to setupclear-allset-default-shape turtles “bug“crt population set size 2 设置大小为 2set color red 蚂蚁如果没有
3、携带食物的话就是红色的setup-patches reset-ticksendto setup-patchesask patches setup-nest 设置蚁巢setup-food 设置食物recolor-patch 蚂蚁颜色的设置endto setup-nest 设置蚁巢的具体程序如果在蚁巢里,变量变为 1,否则就是 0set nest? (distancexy 0 0) 0 set food one-of 1 2 endto recolor-patch 给蚂蚁颜色的设定函数设置蚁巢和食物源的颜色ifelse nest? set pcolor violet 将蚁巢设置成紫色 ifelse
4、 food 0 如果食物数量大于 0 的话 if food-source-number = 1 set pcolor cyan 食物堆 1 号,设置成青色if food-source-number = 2 set pcolor sky 食物堆 2 号,设置成天空色if food-source-number = 3 set pcolor blue 食物堆 3 号,设置成蓝色; scale color to show chemical concentration set pcolor scale-color green chemical 0.1 5 将含量为 0.15 的化学物设置为绿色end;
5、Go procedures ; 运行的程序段;to go ; forever button ask turtles if who = ticks stop ; delay initial departureifelse color = red 如果颜色为红色 look-for-food 运行寻找食物的函数 return-to-nest 运行返回蚁巢的函数Wiggle 随意走动 fd 1 diffuse chemical (diffusion-rate / 100) 弥散的化学物质=扩散/100ask patches set chemical chemical * (100 - evaporat
6、ion-rate) / 100 挥发后的化学物质recolor-patch tickendto return-to-nest 回到蚁巢之后的运行程序具体函数代码ifelse nest? ; drop food and head out again 放下食物,头伸出来探测set color red 设置颜色为红色,表示没有携带食物rt 180 转向 180 度 set chemical chemical + 60 将化学物质增加 60uphill-nest-scent 运行 uphill-nest-scent 函数endto look-for-food 寻找食物的程序段if food 0 set
7、 color orange + 1 找到食物后将身上的颜色中橙色度+1set food food - 1 减少食物堆中的一份食物rt 180 蚂蚁的身体旋转 180 度stop 结束走化学位置气味最大的方向if (chemical = 0.05) and (chemical scent-ahead) or (scent-left scent-ahead) 如果左边的气味大于前面的或者右边的气味大于前面的,那么 ifelse scent-right scent-left 如果右边的气味大于左边的气味向右旋转 45 度 rt 45 lt 45 否则向左旋转 45 度end闻左边和右边的气味,选择最
8、强气味的方向作为前进的方向to uphill-nest-scent uphill-nest-scent 的具体算法let scent-ahead nest-scent-at-angle 0 采取 0 角度的气味作为前方气味let scent-right nest-scent-at-angle 45 使右边 45 度角度气味作为右边的气味let scent-left nest-scent-at-angle -45 使得左边 45 度的气味作为左边的气味if (scent-right scent-ahead) or (scent-left scent-ahead)如果右边的气味大于前面的气味或者左
9、边的气味大于前面的气味 ifelse scent-right scent-left 如果右边的气味大于左边的气味 rt 45 右转 45 度 lt 45 否则左转 45 度endto wiggle rt random 40 随机右转 40 度lt random 40 随机左转 40 度if not can-move? 1 rt 180 如果不可以走了,就右转 180 度endto-report nest-scent-at-angle angle let p patch-right-and-ahead angle 1 if p = nobody report 0 如果没有,就使得 report
10、置 0report nest-scent of p 否则将 nest-scent 输出endto-report chemical-scent-at-angle anglelet p patch-right-and-ahead angle 1 if p = nobody report 0 report chemical of pend2) 基本算法流程分析:程序先是设置食物堆中的食物量,蚁巢,接近蚁巢的情况,食物来源的食物量,蚂蚁分泌的化学物含量这些变量。当一只蚂蚁发现一块食物,它携带食物回巢,分泌出化学物质。当其他的蚂蚁“闻”到化学物质,他们沿着化学物质朝食物前进。随着越来越多的蚂蚁搬运食物回
11、巢,他们加强了化学物质的强度。蚂蚁在路径上前进时会根据前边走过的蚂蚁所留下的分泌物选择其要走的路径。其选择一条路径的概率与该路径上分泌物的强度成正比。因此,由大量蚂蚁组成的群体的集体行为实际上构成一种学习信息的正反馈现象:某一条路径走过的蚂蚁越多,后面的蚂蚁选择该路径的可能性就越大。蚂蚁的个体间通过这种信息的交流寻求通向食物的最短路径。蚂蚁只应对化学水平 0.05 和 2 之间的化学物质。下限是用来表示蚂蚁并不是无限敏感。设置三个食物来源的食物量,蚂蚁出了蚁巢,运行 wiggle 程序,这个是使得蚂蚁分开到处跑动寻找食物源 look-for-food,蚂蚁身上是红色的代表其不携带食物,遇到食物
12、源后,判断食物源食物是否大于 0,如果大于 0 就携带食物,并且身上显示橘黄色,并分泌化学物质,旋转 180 度回蚁巢。回到蚁巢后放下食物,运行的是 return-to-nest 程序,重新置红色,表示未携带食物,期间,化学物质扩散挥发,蚂蚁沿着左边前面右边三个方向中气味较重的方向前进 uphill-chemical,继续寻找到食物源,判断食物源食物量,在沿着化学气味前进的过程中,该蚂蚁会加强化学物质的强度,使得化学物质的存在时间加长,其他蚂蚁也能够通过该气味寻找到食物源,当越来越多的蚂蚁参与到这条路线中来,将会达到所有蚂蚁共同搬运的效果。成绩评定:该生对待本次实验的态度 认真 良好 一般 比较差。本次实验的过程情况 很好 较好 一般 比较差对实验结果的分析 很好 良好 一般 比较差文档书写符合规范程度 很好 良好 一般 比较差综合意见:成绩 指导教师签名 日期