一种基于遗传算法的医院排班方法与流程

文档序号:21279946发布日期:2020-06-26 23:32阅读:803来源:国知局

本发明属于数据处理技术领域,具体来说是一种基于遗传算法的医院排班方法。



背景技术:

大部分的医院都是轮流请医生值班,而医生本身也会同时在多个地方坐诊,因此需要合理的安排医生的上班时间。

目前,大量医院依然采用人工排班方式,通过excel三维视图形式进行,耗费大量的时间、人力成本,且排班结果不理想。也有部分企业采用了自动化排班系统,但大部分系统只支持分批次排班,不支持一键混排,且可调整的参数非常少,无法满足企业的实际需求。



技术实现要素:

1.发明要解决的技术问题

本发明的目的在于解决现有的人工排班效率低下且排班结果不理想的问题。

2.技术方案

为达到上述目的,本发明提供的技术方案为:

本发明的一种基于遗传算法的医院排班方法,包括如下步骤:

s100、输入医生数量n、科室数量p、进化迭代次数c、运算因子数量f、淘汰阈值o、限制因素为p1科室有最大容量;

s200、将医生数量n、科室数量p构建一个n*p的矩阵运算因子t:

s300、利用阶梯算法运算t得到一个数量为f的运算因子集合;

s400、将f个运算因子转换成该科室下医生的数量矩阵,计算每个运算因子的波动系数,选择淘汰o个波动系数大的运算因子;

s500、随机从剩余的波动系数较小的运算因子中,通过交位算法进行矩阵元素上的高低峰值交位;

s600、进行运算因子条件检测,不符合限制条件中的科室最大容量则被淘汰;

s700、将保留下来的多个优秀运算因子作为基数,重新执行s300再次得到数量为f的运算因子集合;

s800、重复执行s400-s700,每执行一次迭代次数加1,当迭代次数大于c时,运算终止,在f个运算因子中找到波动系数最小的因子,即为最终排班结果。

优选的,所述进化迭代次数c为500次,所述运算因子数量f为20个,所述淘汰阈值o为12。

优选的,所述步骤s300中阶梯算法运算t具体为将第二行开始末尾元素p3提前至开始位置,第三行开始末尾元素p2提前至开始位置,剩余位置随机排列,得到一个数量为f的运算因子集合。

优选的,所述步骤s500中的交位算法具体为将运算因子的最高值与最低值进行交换。

优选的,所述科室最大容量为10。

优选的,所述步骤s400中的将f个运算因子转换成该科室下医生的数量矩阵为其中转换规则为:

a1为第一列出现的p1的数量,a2为第二列出现的p1的数量,a3为第三列出现的p1的数量;

b1为第一列出现的p2的数量,b2为第二列出现的p2的数量;b3为第三列出现的p2的数量;

c1为第一列出现的p3的数量,c2为第二列出现的p3的数量,c3为第三列出现的p3的数量。

优选的,所述波动系数r的计算公式为r=(avg(a1+a2+a3)+avg(b1+b2+b3)+avg(c1+c2+c3))/3。

优选的,所述步骤s400还包括进行概率选择初步筛选,计算公式(1/f)*2-r/sum(r1....rn)得出每个运算因子被淘汰的概率。

3.有益效果

采用本发明提供的技术方案,与现有技术相比,具有如下有益效果:

本发明的一种基于遗传算法的医院排班方法,通过参数预设得出择优的基准值,系统会根据阶梯算法计算出大量较优秀的因子,各因子之间互相竞争比较,符合基准值的保留,不符合的淘汰,再通过多位点分算法和交位算法进行迭代,依次循环,最终得到符合参数预设值的近似最优解。相对于人工排班,排班效率更高,且排班效果更好。

具体实施方式

为了便于理解本发明,下面将参照实施例对本发明进行更全面的描述,但是,本发明可以以许多不同的形式来实现,并不限于本文所描述的实施例,相反地,提供这些实施例的目的是使对本发明的公开内容更加透彻全面。

除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同;本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明;本文所使用的术语“及/或”包括一个或多个相关的所列项目的任意的和所有的组合。

实施例1

本实施例的一种基于遗传算法的医院排班方法,包括如下步骤:

s100、输入医生数量n、科室数量p、进化迭代次数c、运算因子数量f、淘汰阈值o、限制因素为p1科室有最大容量;

s200、将医生数量n、科室数量p构建一个n*p的矩阵运算因子t:

s300、利用阶梯算法运算t得到一个数量为f的运算因子集合;

s400、将f个运算因子转换成该科室下医生的数量矩阵,计算每个运算因子的波动系数,选择淘汰o个波动系数大的运算因子;

s500、随机从剩余的波动系数较小的运算因子中,通过交位算法进行矩阵元素上的高低峰值交位;

s600、进行运算因子条件检测,不符合限制条件中的科室最大容量则被淘汰;

s700、将保留下来的多个优秀运算因子作为基数,重新执行s300再次得到数量为f的运算因子集合;

s800、重复执行s400-s700,每执行一次迭代次数加1,当迭代次数大于c时,运算终止,在f个运算因子中找到波动系数最小的因子,即为最终排班结果。

本实施例的进化迭代次数c为500次,所述运算因子数量f为20个,所述淘汰阈值o为12。

本实施例的步骤s300中阶梯算法运算t具体为将第二行开始末尾元素p3提前至开始位置,第三行开始末尾元素p2提前至开始位置,剩余位置随机排列,得到一个数量为f的运算因子集合。

本实施例的步骤s500中的交位算法具体为将运算因子的最高值与最低值进行交换。

本实施例的科室最大容量为10。

本实施例的步骤s400中的将f个运算因子转换成该科室下医生的数量矩阵为其中转换规则为:

a1为第一列出现的p1的数量,a2为第二列出现的p1的数量,a3为第三列出现的p1的数量;

b1为第一列出现的p2的数量,b2为第二列出现的p2的数量;b3为第三列出现的p2的数量;

c1为第一列出现的p3的数量,c2为第二列出现的p3的数量,c3为第三列出现的p3的数量。

本实施例的波动系数r的计算公式为r=(avg(a1+a2+a3)+avg(b1+b2+b3)+avg(c1+c2+c3))/3。

本实施例的步骤s400还包括进行概率选择初步筛选,计算公式(1/f)*2-r/sum(r1....rn)得出每个运算因子被淘汰的概率。

本实施例通过参数预设得出择优的基准值,系统会根据阶梯算法计算出大量较优秀的因子,各因子之间互相竞争比较,符合基准值的保留,不符合的淘汰,再通过多位点分算法和交位算法进行迭代,依次循环,最终得到符合参数预设值的近似最优解。相对于人工排班,排班效率更高,且排班效果更好。

以上所述实施例仅表达了本发明的某种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制;应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围;因此,本发明专利的保护范围应以所附权利要求为准。

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