巡检计划排班算法思路假设:最小巡检周期为1小时。(对于小于1小时的另做考虑)定义:1.中心点(p)。根据原排班计划说产生的精确巡检时间(按分钟)点。该点定义为中心点,p。2.边界点(p,)。原排班计划所产生的以精确时间点为中心前后浮动一定比例的起始时间点和终止时间点。左边界点p和右边界点p。3.最小巡检间隔D连续两次巡检之间的最小时间间隔。4.最大巡检间隔D连续两次巡检之间的最大小时间间隔。5.设备巡检周期T6.班的起始时间B和班的终止时间7.连续两次巡检间隔D8.巡检时间的浮动比率N9.巡检时间自由度F总体思路:增加巡检人员的自由度,自己可以在一定的时间段内安排巡检路径。将最小时间刻度由分钟改为小时,同时对连续两次巡检间隔加以限制(D≤D≤D,加入班的概念并以班的边界对可巡检时间范围进行限制。约束条件:1.D≤D≤D,D,D(最小间隔是巡检周期的一半,最大间隔为巡检周期的1.5倍)2.N≤50%(浮动比率最大为百分之五十)3.1≤T(巡检周期最小是1小时)4.1≤-B(班长度最小可以是1小时)5.0.5≤F(巡检时间自由度最小为半小时)具体步骤如下:1.排班按照原先的排班算法进行精确排班,并根据浮动比率N计算出边界点。产生了中心点()和边界点(,),-N%*T,。2.模糊化修正主要是对边界点进行修正,以小时为最小刻度,这样边界点都落在了整数点的位置,比如:05,可能被修正为:00或:00。具体修正规则为:当T2(小时)时,落在哪个小时内,其边界点修正为该小时的起止时间。如::05,则:00,:00。当T2时,如果落在了时间段(,)内,当-时,修正为,反之修正为如果落在了时间段(,)内,当-时,修正为,反之修正为。当边界点跨班时,中心点落在哪个班内则该设备就归那个班巡检。比如:若在第二班则边界点修正为B(第二班的起始点),仍按T来修正。若落在了第一班内,则修正为(第一班的终止点),仍按T来修正。3.动态修正根据实际的巡检情况,按照巡检间隔的限制,对下一次巡检时间进行修正。若在t时刻完成了巡检,则这下次巡检最早时间为t+T/2,最晚巡检时间为t+T*3/2,如果下次巡检的边界点则修正为t+T/2,如果,则修正为t+T*3/2。如果修正后,,在一个时间刻度(,)内,且下一个不在下个时间刻度(,)内,则把修正为,修正为如果下个刻度有下次巡检,则修正为,其他不变。下一个时间刻度有可能是下一班,故允许因前一班延迟巡检导致下一次巡检顺延到下一班。对的修正,产生的类似的情况做同样处理,只是由下一班提前到上一班。动态修正是在模糊化修正的基础上进行的。说明:1.为什么最小间隔取T/2?因为对于T=1的情况,D如果间隔变小则F变大,要求间隔和巡检时间自由度都不能过小,所以取D对其他周期同理,随着T的变大,D和F也应该随之变大。