一种基于贪心算法的设备采集调度方法及系统与流程

文档序号:11200518阅读:350来源:国知局
一种基于贪心算法的设备采集调度方法及系统与流程

本发明涉及设备采集调度技术领域,尤其涉及的是一种基于贪心算法的设备采集调度方法及系统。



背景技术:

随着设备采集技术水平的发展,日常生活和生产中各种各样智能设备的使用已经非常普及,例如常见的采集温度和湿度的温湿度仪、电量仪等。智能设备可通过发送命令(数据包)给设备从而获取设备状态或数值,其中命令是按照智能设备的说明书定义好的数据协议,例如温湿度仪,可按照其说明书定义好的数据协议,构造2条命令(分别采集温度和湿度)发送给温湿度仪,即可得到温度值和湿度值的反馈结果。

一方面,智能设备内的采集命令之间需要有间隔,不同的设备要求的间隔时间不同(间隔时间由智能设备的说明书规定),例如温湿度仪的采集命令间隔为500ms,电量仪的采集命令时间间隔为1s。另一方面,命令的采集过程本身也有耗时,根据设备需采集数据量的大小耗时不同,例如采集1条温湿度仪的命令需耗时50ms,采集1条电量仪的命令需耗时500ms。

一般地,采集周期定义为串口下所有设备的数据被采集一轮所需要的时间,如图1所示,即表示从设备1到设备n完成一轮采集所需要的时间。

现有的modbus485设备采集算法,是按照设备作为最小调度单元轮询采集的,即一台设备一台设备的采集,然后每台设备内的采集命令均按顺序采集,命令之间需设置好采集间隔,否则会导致设备过载,从而不能正常采集。这种采集方式的优点是公平,即每台设备同等对待,不存在饿死现象,但缺点是当同一串口下接入很多设备时,存在大量等待(采集间隔),导致采集效率非常低下,如图1所示。

因此,现有技术还有待于改进和发展。



技术实现要素:

鉴于上述现有技术的不足,本发明的目的在于提供一种基于贪心算法的设备采集调度方法及系统,旨在解决现有技术中当同一串口下接入很多设备时,若设备作为最小调度单元轮训采集命令,则因采集间隔而存在大量的等待,从而导致采集效率低下的问题。

本发明的技术方案如下:

一种基于贪心算法的设备采集调度方法,其中,包括以下步骤:

a、接收用户的采集指令,获取本轮采集周期内同一串口下所连接的所有设备的剩余命令数,并根据每一设备的剩余命令数进行分组而得到多个采集分组,剩余命令数相同的设备分到同一采集分组;

b、判断在本轮采集周期内当前的所有采集分组对应的剩余命令数是否均为0,若否则执行步骤c;

c、按本轮采集周期的剩余命令数从大到小遍历采集分组,判断遍历采集分组是否结束,当遍历采集分组未结束时则执行步骤d;

d、选择剩余命令数最大的采集分组,并判断采集分组内是否有设备满足上一次采集结束与下一次采集开始的时间间隔大于或等于该设备配置的采集间隔;若是,则执行步骤e;若否,则返回执行步骤c;

e、采集该设备本轮采集周期未完成采集的下一条命令,将该设备的剩余命令数减1并置于对应剩余命令数所对应采集分组,并返回执行步骤b。

所述的基于贪心算法的设备采集调度方法,其中,所述步骤a中所述采集分组是根据一轮采集周期中同一串口下所连接的所有设备的剩余命令数的对设备进行分组,将剩余命令数相同的设备归为同一采集分组,并按采集分组所对应的剩余命令数的数值对采集分组从大到小排序。

所述的基于贪心算法的设备采集调度方法,其中,所述步骤e具体包括:

e1、采集该设备本轮采集周期未完成采集的下一条命令,每完成一条命令的采集时更新其最后一次采集时间,并将该设备的剩余命令数减一;若该设备的剩余命令数为零则执行步骤e2,若该设备的剩余命令数不为零则执行步骤e3;

e2、将该设备从采集分组中剔除,并返回执行步骤b;

e3、根据该设备的剩余命令数而移入剩余命令数所对应采集分组,并返回执行步骤b。

所述的基于贪心算法的设备采集调度方法,其中,所述步骤b中还包括:在本轮采集周期内当前的所有采集分组对应的剩余命令数均为0,则进入下一轮采集周期并返回执行步骤a。

所述的基于贪心算法的设备采集调度方法,其中,在所述步骤c中还包括:当遍历采集分组结束时则执行步骤a。

一种基于贪心算法的设备采集调度系统,其中,包括:

接收及获取模块,用于接收用户的采集指令,获取本轮采集周期内同一串口下所连接的所有设备的剩余命令数,并根据每一设备的剩余命令数进行分组而得到多个采集分组,剩余命令数相同的设备分到同一采集分组;

第一判断模块,用于判断在本轮采集周期内当前的所有采集分组对应的剩余命令数是否均为0,若否则启动遍历判断模块;

遍历判断模块,用于按本轮采集周期的剩余命令数从大到小遍历采集分组,判断遍历采集分组是否结束,当遍历采集分组未结束时则启动第二判断模块;

第二判断模块,用于选择剩余命令数最大的采集分组,并判断采集分组内是否有设备满足上一次采集结束与下一次采集开始的时间间隔大于或等于该设备配置的采集间隔;若是,则启动命令采集模块;若否,则启动遍历判断模块;

命令采集模块,用于采集该设备本轮采集周期未完成采集的下一条命令,将该设备的剩余命令数减1并置于对应剩余命令数所对应采集分组,并启动第一判断模块。

所述的基于贪心算法的设备采集调度系统,其中,所述接收及获取模块中所述采集分组是根据一轮采集周期中同一串口下所连接的所有设备的剩余命令数的对设备进行分组,将剩余命令数相同的设备归为同一采集分组,并按采集分组所对应的剩余命令数的数值对采集分组从大到小排序。

所述的基于贪心算法的设备采集调度系统,其中,所述命令采集模块具体包括:

命令数递减单元,用于采集该设备本轮采集周期未完成采集的下一条命令,每完成一条命令的采集时更新其最后一次采集时间,并将该设备的剩余命令数减一;若该设备的剩余命令数为零则启动第一处理单元,若该设备的剩余命令数不为零则启动第二处理单元;

第一处理单元,用于将该设备从采集分组中剔除,并启动第一判断模块;

第二处理单元,用于根据该设备的剩余命令数而移入剩余命令数所对应采集分组,并启动第一判断模块。

所述的基于贪心算法的设备采集调度系统,其中,所述第一判断模块还用于在本轮采集周期内当前的所有采集分组对应的剩余命令数均为0,则进入下一轮采集周期并启动接收及获取模块。

所述的基于贪心算法的设备采集调度系统,其中,所述遍历判断模块还用于当遍历采集分组结束时则启动接收及获取模块。

有益效果:本发明通过采用贪心算法,将最小调度单元由设备改为命令,按照一轮周期剩余命令数对设备分组,在某台设备未采集完的情况下,就跳到其他满足要求的设备上采集,从而不受设备内采集顺序的限制。由于将所有设备的采集命令统一考虑,尽量选择空闲(满足命令的时间间隔)设备的命令去执行采集,因此,最大化地减少了由于采集时间间隔导致的采集效率低下的问题。

附图说明

图1为现有技术中以设备为最小调度采集单元的轮询采集过程示意图。

图2为本发明所述基于贪心算法的设备采集调度方法较佳实施例的流程图。

图3为本发明所述基于贪心算法的设备采集调度方法中以命令为最小调度采集单元的轮询采集较佳实施例示意图。

图4为本发明所述基于贪心算法的设备采集调度方法中以命令为最小调度采集单元的分组较佳实施例示意图。

图5为本发明所述基于贪心算法的设备采集调度系统的功能模块图。

具体实施方式

本发明提供一种基于贪心算法的设备采集调度及系统,为使本发明的目的、技术方案及效果更加清楚、明确,以下对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

这里说明一下贪心算法的基本思想。贪心算法又称贪婪算法,是指在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,所做出的是在某种意义上的局部最优解。其基本思路是从问题的某一个初始解出发一步一步地进行,根据某个优化测度,每一步都要确保能获得局部最优解。每一步只考虑一个数据,他的选取应该满足局部优化的条件。若下一个数据和部分最优解连在一起不再是可行解时,就不把该数据添加到部分解中,直到把所有数据枚举完,或者不能再添加算法停止。本发明的基本思路即是采用贪心算法,将最小调度单元由设备改为命令,按照一轮周期剩余命令数对设备分组,在某台设备未采集完的情况下,就跳到其他满足要求的设备上采集,从而不受设备内采集顺序的限制。由于将所有设备的采集命令统一考虑,尽量选择空闲(满足命令的时间间隔)设备的命令去执行采集,因此,最大化地减少了由于采集时间间隔导致的采集效率低下的问题。

请参见图1,图1是现有技术中以设备为最小调度采集单元的轮询采集过程示意图。如图1所示,设一串口服务器下面有n个设备共用此串口,设备1包括命令1.1、命令1.2、采集间隔1;设备2包括命令2.1、命令2.2、命令2.3、采集间隔2;设备n包括命令n.1、命令n.2、命令n.m、采集间隔n,采集顺序依次为设备1、设备2、设备3。显然,该方法以设备为最小调度单元的轮询采集,优点是每台设备同等对待,不存在饿死现象;缺点是当同一串口下接入很多设备时,存在大量等待(采集间隔),导致采集效率低下。

进一步地,如图2所示,其为本发明所述基于贪心算法的设备采集调度方法较佳实施例的流程图。包括以下步骤:

步骤s100、接收用户的采集指令,获取本轮采集周期内同一串口下所连接的所有设备的剩余命令数,并根据每一设备的剩余命令数进行分组而得到多个采集分组,剩余命令数相同的设备分到同一采集分组。

步骤s200、判断在本轮采集周期内当前的所有采集分组对应的剩余命令数是否均为0,若否则执行步骤s300。

步骤s300、按本轮采集周期的剩余命令数从大到小遍历采集分组,判断遍历采集分组是否结束,当遍历采集分组未结束时则执行步骤s400。

步骤s400、选择剩余命令数最大的采集分组,并判断采集分组内是否有设备满足上一次采集结束与下一次采集开始的时间间隔大于或等于该设备配置的采集间隔;若是,则执行步骤s500;若否,则返回执行步骤s300。

步骤s500、采集该设备本轮采集周期未完成采集的下一条命令,将该设备的剩余命令数减1并置于对应剩余命令数所对应采集分组,并返回执行步骤s200。

本发明的实施例中,采用的贪心算法,其优点在于兼具效率和公平,公平表现在一个采集周期可以采集完串口下所有设备的数据,不存在饿死现象;效率表现在单个串口下接入多台设备不存在大量的等待(采集间隔),最差情况是单个串口接入一台设备,此时采集效率等同于旧的轮询算法,但实际场景都是单个串口下接入多台设备,故本算法可将采集发挥到串口的物理极限。

进一步地,所述步骤s500具体包括:

步骤s501、采集该设备本轮采集周期未完成采集的下一条命令,每完成一条命令的采集时更新其最后一次采集时间,并将该设备的剩余命令数减一;若该设备的剩余命令数为零则执行步骤s502,若该设备的剩余命令数不为零则执行步骤s503;

步骤s502、将该设备从采集分组中剔除,并返回执行步骤s200;

步骤s503、根据该设备的剩余命令数而移入剩余命令数所对应采集分组,并返回执行步骤s200。

更进一步地,在步骤s400中选取当前剩余命令数最大的分组,由所述剩余命令数最大的分组中采集间隔最长的设备中最靠前的一条命令开始采集。

更进一步地,所述步骤s200中还包括:在本轮采集周期内当前的所有采集分组对应的剩余命令数均为0,则进入下一轮采集周期并返回执行步骤s100。

更进一步地,在所述步骤s300中还包括:当遍历采集分组结束时则执行步骤s100。

为了更清楚地描述本发明所述基于贪心算法的设备采集调度方法中以命令为最小调度采集单元的分组,以下以图4所示的较佳实施例进行说明:

如图3所示,设一串口服务器x包括三个分组,其中剩余命令数为3的分组包括设备1、设备2、设备3;剩余命令数为2的分组包括设备4、设备5;剩余命令数为1的分组包括设备6、设备7、设备8。当设备1采集完命令后,则其剩余命令数就变成2,此时就将设备1移入剩余命令数为2的分组,与剩余命令数为2的设备4、设备5形成新的分组,以此类推,直至一轮采集周期结束。

进一步地,为了更清楚地描述本发明所述基于贪心算法的设备采集调度方法中以命令为最小调度采集单元的轮询采集的优越性,以下以图5所示的较佳实施例进行说明:

如图4所示,设一串口服务器下面有n个设备共用此串口,设备1包括命令1.1、命令1.2、采集间隔1;设备2包括命令2.1、命令2.2、命令2.3、采集间隔2;设备n包括命令n.1、命令n.2、命令n.3、采集间隔n。假设设备均为电量仪,且n为3,m为3。若电量仪的采集间隔时间为1s、采集命令耗时500ms,则该串口下所有设备采集一轮所需的时间为:500ms*8=4s,而若采用图1所示的现有的以设备为最小调度单元的轮询采集方法,则所需要的时间为:500ms*8+1s*5=9s。显然,采用以命令为最小调度单元的轮询采集方法,使得采集效率得到了大大的提升,且串口下接入的设备越多,采集效率提升越明显。

可见,本发明通过采用贪心算法,将最小调度单元由设备改为命令,按照一轮周期剩余命令数对设备分组,在某台设备未采集完的情况下,就跳到其他满足要求的设备上采集,从而不受设备内采集顺序的限制。由于将所有设备的采集命令统一考虑,尽量选择空闲(满足命令的时间间隔)设备的命令去执行采集,因此,最大化地减少了由于采集时间间隔导致的采集效率低下的问题。

基于上述基于贪心算法的设备采集调度方法,本发明还提供一种基于贪心算法的设备采集调度系统,如图5所示,包括:

接收及获取模块100,用于接收用户的采集指令,获取本轮采集周期内同一串口下所连接的所有设备的剩余命令数,并根据每一设备的剩余命令数进行分组而得到多个采集分组,剩余命令数相同的设备分到同一采集分组;

第一判断模块200,用于判断在本轮采集周期内当前的所有采集分组对应的剩余命令数是否均为0,若否则启动遍历判断模块300;

遍历判断模块300,用于按本轮采集周期的剩余命令数从大到小遍历采集分组,判断遍历采集分组是否结束,当遍历采集分组未结束时则启动第二判断模块400;

第二判断模块400,用于选择剩余命令数最大的采集分组,并判断采集分组内是否有设备满足上一次采集结束与下一次采集开始的时间间隔大于或等于该设备配置的采集间隔;若是,则启动命令采集模块500;若否,则启动遍历判断模块300;

命令采集模块500,用于采集该设备本轮采集周期未完成采集的下一条命令,将该设备的剩余命令数减1并置于对应剩余命令数所对应采集分组,并启动第一判断模块200。

优选的,在所述的基于贪心算法的设备采集调度系统中,所述接收及获取模块100中所述采集分组是根据一轮采集周期中同一串口下所连接的所有设备的剩余命令数的对设备进行分组,将剩余命令数相同的设备归为同一采集分组,并按采集分组所对应的剩余命令数的数值对采集分组从大到小排序。

优选的,在所述的基于贪心算法的设备采集调度系统中,所述命令采集模块500具体包括:

命令数递减单元,用于采集该设备本轮采集周期未完成采集的下一条命令,每完成一条命令的采集时更新其最后一次采集时间,并将该设备的剩余命令数减一;若该设备的剩余命令数为零则启动第一处理单元,若该设备的剩余命令数不为零则启动第二处理单元;

第一处理单元,用于将该设备从采集分组中剔除,并启动第一判断模块;

第二处理单元,用于根据该设备的剩余命令数而移入剩余命令数所对应采集分组,并启动第一判断模块。

优选的,在所述的基于贪心算法的设备采集调度系统中,所述第一判断模块200还用于在本轮采集周期内当前的所有采集分组对应的剩余命令数均为0,则进入下一轮采集周期并启动接收及获取模块。

优选的,在所述的基于贪心算法的设备采集调度系统中,所述遍历判断模块300还用于当遍历采集分组结束时则启动接收及获取模块。

综上所述,本发明所述的一种基于贪心算法的设备采集调度方法及系统,方法包括:a、接收用户的采集指令,获取本轮采集周期内同一串口下所连接的所有设备的剩余命令数,并根据每一设备的剩余命令数进行分组而得到多个采集分组,剩余命令数相同的设备分到同一采集分组;b、判断在本轮采集周期内当前的所有采集分组对应的剩余命令数是否均为0,若否则执行步骤c;c、按本轮采集周期的剩余命令数从大到小遍历采集分组,判断遍历采集分组是否结束,当遍历采集分组未结束时则执行步骤d;d、选择剩余命令数最大的采集分组,并判断采集分组内是否有设备满足上一次采集结束与下一次采集开始的时间间隔大于或等于该设备配置的采集间隔;若是,则执行步骤e;若否,则返回执行步骤c;e、采集该设备本轮采集周期未完成采集的下一条命令,将该设备的剩余命令数减1并置于对应剩余命令数所对应采集分组,并返回执行步骤b。本发明通过采用贪心算法,将最小调度单元由设备改为命令,按照一轮周期剩余命令数对设备分组,在某台设备未采集完的情况下,就跳到其他满足要求的设备上采集,从而不受设备内采集顺序的限制。由于将所有设备的采集命令统一考虑,尽量选择空闲(满足命令的时间间隔)设备的命令去执行采集,因此,最大化地减少了由于采集时间间隔导致的采集效率低下的问题。

当然,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关硬件(如处理器,控制器等)来完成,所述的程序可存储于一计算机可读取的存储介质中,该程序在执行时可包括如上述各方法实施例的流程。其中所述的存储介质可为存储器、磁碟、光盘等。

应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1