杨颜博,孙一凤,杜永兴,胡伟建,史湘楠
(内蒙古科技大学 信息工程学院,内蒙古 包头 014010)
因受改革开放和市场经济的影响,农村牧区人口纷纷流向城镇[1],导致牧区劳动力严重减少;牧区放牧采用无目标式放牧方式,导致牧区草场出现严重过度放牧区域,过度放牧导致的草地资源严重退化已经成为畜牧业经济发展和草地生态平衡的主要障碍[2];草原牧区自然条件不理想,放牧及牲畜管理难度很大[3].因此科学指导放牧对于减少牧民工作量和维持草畜平衡有着重要的意义.
近年来不少学者对放牧时空轨迹数据进行了研究,利用时空轨迹数据提出放牧强度估算方法[4];发现牲畜区域属性[5];测算牲畜的采食行走速度[6],但很少人将轨迹数据运用到牲畜放牧路线规划研究中.在路线规划领域,陈呈利用算法对无人艇进行路径规划[7],王晨旸对复杂室内环境进行了路径规划[8],但利用轨迹数据对牲畜放牧路线规划的文献较少.路径规划算法有模拟退火、人工势场法、遗传算法、蚁群算法等,因蚁群算法具有良好的寻找最短路径能力和搜索特征,且强鲁棒性等优点,所以路径规划采用蚁群算法.关于蚁群算法的研究,学者们都进行了一系列的研究工作[9-12].JIAO Z等[13]采用自适应状态转移策略和自适应信息更新策略;CHEN X等[14]介绍了一个2阶段的蚂蚁算法,但少有文献将改进点与实际放牧相结合.
基于上述原因,利用放牧时空轨迹数据,提出基于改进蚁群算法进行放牧规划的方案.文章的其余部分安排如下.第一节介绍试验区概况和数据来源;第二节介绍轮牧区域划分,起点和终点判定,环境建模和改进的蚁群算法;第三节对实验结果进行分析;第四、五节进行讨论总结.
试验区位于锡林郭勒大草原西北部的苏尼特左旗巴彦淖尔镇呼和淖尔嘎查,该地区属于干早大陆性气候,植被类型以荒漠草原和干草原植被为主[15].
实验数据来源苏尼特左旗巴彦淖尔镇呼和淖尔嘎查某一牧区2019年羊群轨迹数据记录,由羊群放牧过程中头羊所佩戴的定位项圈按照每10 min左右产生的连续定位数据,其中对原始数据进行清洗和预处理并对其数据进行分布式放牧强度估算,得到牧区过度放牧轨迹数据,使用的方法是基于杜永
兴等[4]人提出的放牧强度估算方法.这些数据将在环境建模中被填充为障碍物.其中数据包括过度放牧区域中心经纬度坐标、区域大小、过度比率、采集更新时间、养殖户等.
将牧区划分区域,进行轮牧,轮牧区域的划分根据载畜能力来计算.载畜能力是指草场在中等程度利用下全年放牧期内可能容载的牲畜最大定额.《锡林郭勒盟牧区牧业人口承载量研究》这一文献中提出锡林郭勒盟北部牧区载畜能力为0.5羊/公顷/年[16],即1羊/0.006 hm2/d.某牧民有m头羊,S公顷,可划分轮牧区块数n按下式计算:
(1)
假设m=300头,S=441公顷,所分块数n=245,下图为划分轮牧区域示意图,如图1所示.
当前区域中所含草场资源与载畜量相等,然而区域中可能包含已放牧区域,因此区域不足以承担羊群进行采食,所以在此基础上需进行进一步划分,流程如下:
(1)找出区域含有最大过度放牧区域fi的区域Si,则Si区域中可利用面积Δi=Si-fi.
(2)计算与Si相邻的2个区域可利用面积Δi+1,Δi-1.
(3)若{(Δi+1+Δi+Δi-1)/2}-S≥0即表明Δi区域平分到相邻的2个区域可满足载畜量需求,并将Δi平分到相邻2个区域进行第四步操作.若不满足上述条件则进行第三步.
(4)当fi+fi+1≥S/n,fi+fi-1≥S/n2个条件都满足则将Δi分给相邻2个区域中过度区域小的区域进行第四步操作;若2个条件满足其中一个,则选择将Δi分给对应满足条件中的区域进行第四步操作;若上述条件都不满足则将这3个区域合并为1个区域,在与相邻2个区域进行第一步操作.
(5)找出除Si区域其余区域中过度放牧最大的区域Si′,再重复2,3两步.直到每个区域的可利用面积都满足载畜量要求,划分结束.
这样的划分可以让每一个轮牧区域的可采食面积都可以满足载畜量的要求.
在建模过程中对牧区进行区域范围的设定,将羊群在放牧过程中产生的过度放牧区域设置为障碍物.
在障碍物填充过程中发现,障碍物缩放比例会影响到算法效果和放牧效果.针对这种情况,对过度放牧区面积进行统计,多次建模试验和实际羊群数量比对,一栅格的面积应该在一定误差的情况下,容纳所有采食的羊群.本实验中一栅格面积为0.09 hm2.
在利用算法进行路径规划时,路径的起点和终点是根据真实情况进行设定,设定了一种准则.起点为轨迹数据中每天开始进行放牧活动的经纬度点;终点为利用载畜量划分区域后,该区域离起点较远的点.
蚁群算法是进行路径规划时常用的一种启发式算法.信息素在蚁群算法中发挥重要的指引作用.算法中信息素更新分2部分,一是蚂蚁分泌的信息素;二是随着时间推移挥发的信息素.如果蚂蚁陷入死角没有找到目标点,蚂蚁仍会释放信息素,这些信息素会给其它的蚂蚁带来错误讯息.选择错误路径的数量越多,错误路径上信息素也越多,算法收敛速度变慢.并且在传统蚁群算法中,蚂蚁选择下一节点是通过轮转赌法决定,所以蚂蚁的走向并不是确定性的.通过之前蚂蚁无方向性的行走,才可确定最优路径,虽然在此过程中会出现小部分蚂蚁选择错误方向路径,但在全局搜索最优路径时仍会影响到蚁群算法的收敛速度.针对这2个问题,对传统蚁群算法进行了2方面的改进工作.
(1)信息回溯机制.当检测到蚂蚁陷入死角时,信息素回溯到上一只蚂蚁状态.这样即使蚂蚁行走错误路径而遗留下来信息素也会回溯到上一步的状态,不会让错误的信息素影响后面蚂蚁的选择,减少蚁群对错误路径的选择.回溯机制公式如下所示:
(2)
式中:t为时刻;ρ为信息素挥发系数;Δτ为残留信息素.
(2)动态检测机制.因为牧区进行了轮牧区域划分,所以目标点和起点的相对位置已知,每次判断蚂蚁行走方向是否在正确方向区域,指引蚂蚁在正确方向上进行寻路,即规定区域方向寻路.算法中的起始点和目标点位置不产生变化,但每次寻找下一步可走节点时它和终点的相对位置都会发生变化,所以在每一次进行节点选择时都要对节点和目标点进行位置检测.检测算法流程是将目标点设置为固定位置,判断相对位置所在区域.
通过信息素回溯和划分过牧区域设置动态检测机制提高算法收敛速度,并将其运用到羊群放牧轨迹规划中.改进算法流程图如图2所示.
对于障碍物填充采用膨胀化处理,膨胀化处理的原则为:不满一栅格的按照一栅格计算.膨胀化处理也防止羊群进入不足以进行采食活动的区域活动.
进行环境建模的牧区如图3所示.
牧民牧场面积441 hm2,经过划分轮牧区进行计算,其划分为175个区域,并且每个区域的放牧周期为1 d进行轮流放牧活动.在模拟建模图中每个轮牧区域占20个栅格.进行算法计算,得到规划路线如图4所示,图中实线为规划路径.
并且在相同栅格环境下传统算法和改进算法进行了收敛性的对比,算法各项参数相同,对比如图5所示.
对轨迹路线和算法进行分析,结果表明该方法可以有效避开过度放牧区域,将改进后的算法与未改进的进行比对验证,改进后的效率有着明显的提高,收敛速度提高了28%.可以为之后的科学化放牧提供可靠的技术支持.
在利用蚁群算法进行路径规划前,轮牧区域的划分是关键部分,如果轮牧区域划分不合理,将会导致影响后面算法的寻路部分.当划分区域不满足牧民放牧天数时应进行短暂休牧,防止过度放牧.所以之后的研究可以结合气候影响草势生长情况,更好的划分轮牧区域和规定轮牧区的轮牧天数.
轨迹路线可以很好地躲避障碍物即过度放牧区域,找到较短路径,并可以转化为实际牧场的经纬度,供无人机或无人小车进行放牧活动.
为了更好地解决牧区过度放牧的问题,需要对放牧活动进行规划,并结合羊群轨迹数据尽量减少对过牧区域进行采食活动.本研究以苏尼特左旗巴彦淖尔镇呼和淖尔嘎查某一牧民牧区为例,利用蚁群算法对羊群放牧轨迹路线进行了规划,结果显示:该方案可以运用在羊群放牧中,并且可以为之后的无人机放牧提供技术支持.