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