基于随机变邻域搜索算法的护士排班方法和装置制造方法及图纸

技术编号:16756100 阅读:35 留言:0更新日期:2017-12-09 02:22
本发明专利技术公开了一种基于随机变邻域搜索算法的护士排班方法,包括以下步骤:设定护士排班需满足的约束条件,建立目标函数;生成一个随机的初始解,并将其作为当前解和历史最优解;采用随机变邻域搜索算法对当前最优解进行迭代搜索,并设置迭代终止条件;所述迭代过程中,使用随机选择交换或者移动操作算子对临时解执行操作;当临时搜索的解对应的目标函数值小于等于当前解对应的目标函数值时,将该临时搜索的解作为新的当前解;反之,若迭代次数满足一定阈值,将历史最优解设为当前解并执行扰动操作算子得到新的当前解。采用本发明专利技术的技术方案,能够对护士进行快速高效的排班。

Method and device for nurse scheduling based on random variable neighborhood search algorithm

The invention discloses a random search algorithm based on variable neighborhood nurse scheduling method, which comprises the following steps: nurse scheduling must satisfy the constraints set, the objective function is established; generate a random initial solution, and as the current solution and the optimal solution of history; using random variable neighborhood search algorithm for the optimal solution iterative search and set iteration termination conditions; the iterative process, the use of random selection of exchange or mobile operator on temporary solution operation; the objective function as a temporary solution of the search value is less than or equal to the objective function value corresponding to the current solution, the temporary search solution as the new current solution; otherwise if the number of iterations, to meet a certain threshold, the historical optimal solution set to the current solution and perturbation operators get a new current solution. The technical scheme of the invention can be used for rapid and efficient scheduling of nurses.

【技术实现步骤摘要】
基于随机变邻域搜索算法的护士排班方法和装置
本专利技术涉及人员调度领域,尤其涉及一种基于随机变邻域搜索算法的护士排班方法和装置。
技术介绍
医院科室里的多约束人员排班问题一直以来都是充满挑战性的工作。建立一个护士排班表不仅要考虑科室里的工作负载,同时需要考虑护士自身的技术水平和需求等因素。如果进行人工排班则非常费时,而目前仍有许多医院的科室对护士表进行人工的排班。利用软件进行排班表的建立是一项复杂且难解的离散优化问题。过去几十年,许多算法被研究出来。解决护士排班的算法可以分类两大类:分别是基于整数规划的确定性算法和基于启发式策略或元启发搜索框架的启发式搜索算法。前者可以找到确定的最优解但花费时间较长而后者可以较为快速的找到近似的最优解。如何在复杂的约束条件下高效的进行护士排班仍然是本领域技术人员需要解决的技术问题。
技术实现思路
为了解决上述问题,本专利技术提供一种基于随机变邻域搜索算法的护士排班方法和装置,使用随机交换和移动两个算子对排班表的解进行迭代的搜索,并使用一个循环移动算子对解进行扰动使其能够跳出局部最优。本专利技术采用的随机变邻域搜索算法较已有的变邻域搜索算法更为简单且更为稳定,能够达到目前已有的最好算法性能。为了实现上述目的,本专利技术采用如下技术方案:一种基于随机变邻域搜索算法的护士排班方法,包括以下步骤:步骤1:设定护士排班需满足的约束条件,建立目标函数;步骤2:生成一个随机的初始解,并将其作为当前解和历史最优解;步骤3:采用随机变邻域搜索算法对当前解进行迭代搜索,并设置迭代终止条件;所述迭代过程中,使用随机选择交换或者移动操作算子对临时解,即当前解的副本执行操作;当临时解对应的目标函数值小于等于当前解对应的目标函数值时,将该临时解作为新的当前解;反之,若迭代次数满足一定阈值,将历史最优解设为当前解并执行扰动操作算子得到新的当前解。进一步地,所述目标函数表示为:这里pj(Ci)表示护士Nj的软性约束Ci的惩罚值,f(x)是整个排班表的目标函数值。进一步地,当临时解对应的目标函数值小于当前解对应的目标函数值时,还重新计数迭代次数。进一步地,对当前解执行扰动操作算子时,还重新计数迭代次数。进一步地,所述随机选择交换或者移动操作算子,对临时解执行操作包括:随机选取两个护士、一段时间长度,和[0,1]间的随机数b;若b<0.95,采用交换操作算子,若b≥0.95,采用移动操作算子。进一步地,所述时间长度的确定方法为:首先在[1,28]之间随机选取一个数作为D1,然后在[D1,28]之间随机选取一个数作为D2,[D1,D2]即所选择的时间长度。进一步地,所述扰动操作算子为循环移动算子,操作过程如下:随机选择一天,随机选择一段序号连续的护士,将这一部分护士的排班进行循环移动操作,移动步数为一固定值。根据本专利技术的另一方面,本专利技术还提供了一种基于随机变邻域搜索算法的护士排班装置,包括:目标函数建立模块,用于设定护士排班需满足的约束条件,建立目标函数;初始解生成模块,用于生成一个随机的初始解,并将其作为当前解和历史最优解;最优解搜索模块,用于采用随机变邻域搜索算法对当前最优解进行迭代搜索,并设置迭代终止条件;所述迭代过程中,随机选择交换或者移动操作算子,对临时解,即当前解的副本执行操作;当临时解对应的目标函数值小于等于当前解对应的目标函数值时,将该临时解作为新的当前解;反之,若迭代次数满足一定阈值,将历史最优解设为当前解并执行扰动操作算子得到新的当前解。9.如权利要求1所述的一种基于随机变邻域搜索算法的护士排班装置,其特征在于,所述随机选择交换或者移动操作算子,对临时解执行操作包括:随机选取两个护士、一段时间长度,和[0,1]间的随机数b;若b<0.95,采用交换操作算子,若b≥0.95,采用移动操作算子。10.如权利要求5所述的一种基于随机变邻域搜索算法的护士排班装置,其特征在于,所述扰动操作算子为循环移动算子,操作过程如下:随机选择一天,随机选择一段序号连续的护士,将这一部分护士的排班进行循环移动操作,移动步数为一固定值。本专利技术的有益效果:1、本专利技术中采用的操作算子均发生在某天之中,两个硬性约束不会出现冲突,并且操作算子均为交换和移动,实现效率高。2、目标函数可以看作是|D|,|C|和|N|的函数。本专利技术中,|D|和|C|都是固定值,因此时间复杂度可以简化为O(|N|)。而由于交换和移动算子都只是作用在两个护士之间,因此在每次迭代的时候不需要重新计算其他护士的值而只计算两个发生改变的护士的函数值即可。因此时间复杂度降为O(1),缩短的计算时间从而提高了算法的效率。3、本专利技术采用随机的方式来选择交换和移动两个简单的操作算子,没有用到额外复杂的策略,简化了传统的排班算法。附图说明图1为本专利技术算法流程图;图2为交换操作算子操作示意图,其中2(a)表示交换前的排班表,2(b)交换后的排班表;图3为移动操作算子操作示意图,其中3(a)操作前的排班表,3(b)操作后的排班表;图4为循环移动操作算子操作示意图;图5搜索算子不同结合方式的算法效果对比图;图6两种解接受机制的算法效果对比图。具体实施方式下面结合附图与实施例对本专利技术作进一步说明。实施例1本实施例提供了一种基于随机变邻域搜索算法的护士排班方法,如图1所示,包括以下步骤:步骤1:设定护士排班需满足的约束条件,根据所述约束条件获取目标函数f(x);本专利技术采用的是第一届国际护士排班大赛(FirstInternationalNurseRosteringCompetition,INRC-2010)所采用的模型和数据集,该模型基本上能够描述了真实情况中的排班情景并能够进行一定的扩展,这里简称INRC模型。一般情况下,一个护士排班表可以看做是一张二维表。表的行是不同的护士,列的不同的时间。表中的内容填写的是某个护士在某个时间的工作名称。工作名称指的是护士所上轮班的种类。在INRC模型中使用的工作名称包括:早班(E)、晚班(L)、夜班(N)、白班(D)和护士长班(HD)。而在大部分的实际排班情景中基本相同,也可以根据不同的情况替换。建立一个护士排班的基本过程就是将不同的工作名称分配给不同的护士,同时要满足不同的约束条件。大部分的情况下,约束可以分为两种。一种是硬性约束,一种是软性约束。硬性约束保证排班能够执行,因此在排班过程中不能有任何违反硬性约束的情况出现。另一种是软性约束,一般情况软性约束无法全部满足,因此需要将对软性约束的冲突降低至最少。下面是部分符号说明,用来更方便的说明模型:D:连续的天的集合,也是一段时间的总称。INRC模型里D的大小是28,即28天(四周);N:是护士集合,我们用|N|来表示护士的总人数,Ni来表示第i个护士;S:是工作名称的集合。C:是软性约束的集合,用Ci来表示第i个约束;W:是软性约束的权重。在本研究的模型实例中,每个护士都有一个工作合同参数,用来指定每个护士的约束权重。我们用Wij来表示护士Nj的软性约束Ci的权重值;H:表示硬性约束的集合;X:表示一个可行解,即一个满足所有硬性约束的排班表。INRC模型中的约束条件具体描述如下(也可参考官方文档和其他文字里的描述)。期中C1-9设定了某个值的范围,如果排班表超出这个范围就表本文档来自技高网...
基于随机变邻域搜索算法的护士排班方法和装置

【技术保护点】
一种基于随机变邻域搜索算法的护士排班方法,其特征在于,包括以下步骤:步骤1:设定护士排班需满足的约束条件,建立目标函数;步骤2:生成一个随机的初始解,并将其作为当前解和历史最优解;步骤3:采用随机变邻域搜索算法对当前最优解进行迭代搜索,并设置迭代终止条件;所述迭代过程中,随机选择交换或者移动操作算子,对临时解,即当前解的副本执行操作;当临时解对应的目标函数值小于等于当前解对应的目标函数值时,将该临时解作为新的当前解;反之,若迭代次数满足一定阈值,将历史最优解设为当前解并执行扰动操作算子得到新的当前解。

【技术特征摘要】
1.一种基于随机变邻域搜索算法的护士排班方法,其特征在于,包括以下步骤:步骤1:设定护士排班需满足的约束条件,建立目标函数;步骤2:生成一个随机的初始解,并将其作为当前解和历史最优解;步骤3:采用随机变邻域搜索算法对当前最优解进行迭代搜索,并设置迭代终止条件;所述迭代过程中,随机选择交换或者移动操作算子,对临时解,即当前解的副本执行操作;当临时解对应的目标函数值小于等于当前解对应的目标函数值时,将该临时解作为新的当前解;反之,若迭代次数满足一定阈值,将历史最优解设为当前解并执行扰动操作算子得到新的当前解。2.如权利要求1所述的一种基于随机变邻域搜索算法的护士排班方法,其特征在于,所述目标函数表示为:这里pj(Ci)表示护士Nj的软性约束Ci的值惩罚值,f(x)是整个排班表的目标函数值。3.如权利要求1所述的一种基于随机变邻域搜索算法的护士排班方法,其特征在于,当临时解对应的目标函数值小于当前解对应的目标函数值时,还重新计数迭代次数。4.如权利要求1所述的一种基于随机变邻域搜索算法的护士排班方法,其特征在于,对当前解执行扰动操作算子时,还重新计数迭代次数。5.如权利要求1所述的一种基于随机变邻域搜索算法的护士排班方法,其特征在于,所述随机选择交换或者移动操作算子,对临时解执行操作包括:随机选取两个护士、一段时间长度,和[0,1]间的随机数b;若b<0.95,采用交换操作算子,若b≥0.95,采用移动操作算子。6.如权利要求5所述的一种基于随机变邻域搜索算法的护士...

【专利技术属性】
技术研发人员:郑自然
申请(专利权)人:山东师范大学
类型:发明
国别省市:山东,37

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1