用多维穷举法在排班问题中的应用

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:fqdml
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:穷举法是一种简单易懂、应用广泛的常用算法,对于较复杂的问题,穷举法的适用性受很多限制,不能有效解决实际问题。因此探索使用多维穷举法来解决实际工作经常遇到的排班问题,并以“蓝桥杯”全国软件专业人才设计与创业大赛全国总决赛中的一道综合编程题为例,解析二维穷举法的求解方法和具体实现。
  关键词:算法;多维穷举法;排班
  中圖分类号:TP311 文献标识码:A 文章编号:1009-3044(2017)26-0082-02
  Abstract: Exhaustive method is a simple and easy to understand and widely used algorithm. For more complex problems, the applicability of exhaustive method is limited, and it can not effectively solve the problems. Therefore, the multidimensional exhaustive method is used to solve the scheduling problem. The question of “Lanqiao” competition as an example, methods for solving two-dimensional analytic exhaustive method and implementation.
  Key words: Algorithm; multidimensional exhaustion method; scheduling
  排班问题是多年来一直被研究的问题,在学校、机关、企事业单位有着广泛的应用,涉及的人员有教师、机房管理员、医生、乘务人员、飞行员等无固定休息时间的工作人员。对其进行合理的排班。因此排班工作是学校、机关、企事业单位的一项必要的日常工作,又因其限制条件的复杂性,手工安排费时费力,还容易出错,也很难找到最优的方案,合理的排班不仅可以提高效率、降低成本,还可以提高员工工作的幸福感,所以利用计算机进行自动排班的思想自然而生,使得排班系统被引入各行业里面。
  目前解决自动排班的算法有基于优先级自动排班算法PCSA的设计与实现方案,回溯算法,基于多目标优化的遗传算法,模拟退火算法等。我们在此采用多维穷举法来解决排班问题。
  1 多维穷举的法基本思想
  可以把一次多重循环穷举求解问题定义为一维穷举,先后进行二次一维穷举求解问题定义为二维穷举,以此类推,可定义出多维穷举。
  为什么要采用多维穷举?有人说,所有的多维问题都可展开成一维,只需要一维穷举就够了。这话不错,只不过穷举法具体编程实现受多重循环层数的限制,例如一个m*n的二维问题,假设m=5,n=6,展开成一维,就是m*n=5*6=30层的问题,30层问题用穷举法需要30重循环,显然难以实现。这时采用二维穷举,先进行一次m=5层的一维穷举,再进行一次n=6层的一维穷举,就把m*n层的问题变成m n层的简单问题。
  当然多维穷举不是简单的一维一维嵌套,而是在每一次一维穷举时,按问题的具体条件排除很多非法的排列组合,下一次一维穷举以此为基础,再按问题的条件排除更多的非法排列组合,所以多维穷举算法的效率要快速得多,而且算法的思路是按问题本身的多维特性对应求解,实现起来简单方便、准确可靠。
  下面用“蓝桥杯”全国软件专业人才设计与创业大赛全国总决赛中的一道排日程的综合编程题为例,解析二维穷举的具体实现。
  2 排班问题举例
  某保密单位机要人员 A,B,C,D,E 每周需要工作5天,休息2天。上级要求每个人每周的工作日和休息日安排必须是固定的,不能在周间变更。此外,由于工作需要,还有如下要求:
  1) 所有人的连续工作日不能多于3天(注意:周日连到下周一也是连续)。
  2) 一周中,至少有3天所有人都是上班的。
  3) 任何一天,必须保证 A B C D 中至少有2人上班。
  4) B D E 在周日那天必须休息。
  5) A E 周三必须上班。
  6) A C一周中必须至少有4天能见面(即同时上班)。
  你的任务是:编写程序,列出ABCDE所有可能的一周排班情况。工作日记为1,休息日记为0,A B C D E 每人占用1行记录,从星期一开始。
  3 算法分析
  这是一个5行7列的二维表格问题,表中共有5*7=35个元素,每个元素只有上班1和休息0二种取值,可以采用35层循环的一维穷举实现,2的35次方的排列组合(相当于10的10次方)在普通电脑运行短时间是出不了结果的。程序编写也比较困难,除非使用回溯法。
  二维穷举实现算法如下:
  1) 先进行一维的行穷举,将每个人一周所有可能的安排排列组合,也就是从0000000到1111111之间的所有二进制数,筛选出符合一周五天上班二天休息和连续上班不多于三天的排列组合,保存到一个数组中,作为下一维穷举的取值。本维穷举有7层,也就是7重循环,排列组合的个数(循环次数)共有2的7次方128个,筛选后合法的取值只有1110110、1101110、1101101、1011101、1011011、0111011、0110111共7个。
  2) 然后进行第二维的列穷举,将A、B、C、D、E五个人所有可能的上班日程(上一维穷举得到的保存在数组中的7个取值)排列组合,筛选出符合所有条件的安排,按格式输出5行7列的周安排表。本维穷举有5层,也就是5重循环,排列组合的个数(循环次数)共有7的5次方16807个,筛选后得到本题的答案只有下面4个:
  相比一维穷举需要循环2的35次方(10的10次方)量级;二维穷举只需要2的7次方(128) 7的5次方(16807)=16935次,因此程序很快就出结果。
  4 源程序
  参考文献:
  [1] 李青,张军,张学军.解决排班问题的多目标优化模型及算法研究[J].北京航空航天大学学报, 2003(10).
  [2] 李智敏.浅谈呼叫中心智能排班系统的主要技术[J].电子世界,2017(3).
  [3] 李耀华,谭娜.基于遗传算法的飞机一体化排班优化方法[J].控制工程,2017(2).
其他文献
现如今,移动硬盘已成为现代社会不可或缺的科技产品,因为每天产生的数据量正以惊人的速度不断增长,所以便携、安全、大容量的移动硬盘变得尤为重要。特别是商务人士每天需要
据Windowslatest的报道,Windows 10 19H1预计将于2019年春季上线,预览版本已经上线。最近报道称微软正在开发Windows 10中的新搜索体验和现代化的音量弹出菜单。事实证明,这
本本都带有麦克风,可以很方便的进行语音和视频聊天。不过,其内置的麦克风性能一般,当使用QQ等软件进行视频或者音频聊天时,往往会受到麦克风噪音的困扰,影响到语音通话的质量。如何才能有效降低麦克风的背景噪音,提高本本的语音通讯的质量呢?使用SoliCall这款独特的软件,就可以让您摆脱上述烦恼,让聊天语音变得更加清晰。  SoliCall安装完成后,会在系统中创建名称为“SoliCall”的虚拟声卡。
对于本本用户来说,最讨厌的事情就是别人未经自己许可就随意操作本本,这不仅会泄露隐私信息,而且会将您精心配制的系统搞得面目全非。摄像头是本本的标配,除了视频聊天外,其实还用l AVMonitor这款独特的软件,将本本变成隐形监控器,可以监控非法使用者进行的拍照、录像、抓取桌面图片、监控麦克风信号等操作,让您清楚了了解究竟是谁在非法使用自己的本本。  l AVMonitor是一款多功能监控软件,提供了
大数据和物联网一直被誉为IT界的下一场革命。除了网络连接设备以及客户行为分析之外,物联网和大数据正在用于解决越来越复杂的业务问题。企业采用物联网技术来管理构成其组织的网络连接、设备和应用程序。而自动化的工作流程,长期以来一直是制造行业的战略口号,如今正在被许多不同的企业所接受。
对于本本来说,如何保护其中的敏感数据,防止别人随意窃取,是大家不可忽视的问题。当然,这需要采用各种防护手段来实现。随着U盘、移动硬盘等USB移动存储设备的普及,利用U盘就
在使用本本时,当执行各种操作(例如卸载软件、删除文件等)时,都会在磁盘上频繁的删除各种文件或者文件夹。这样可以整理出更多的磁盘可用空间。实际上,看似“纯净”的磁盘自由并非“净土”,在其中包含着大量的杂乱无章的数据,如果不将这些无关的数据从磁盘中彻底清除,不仅使用反删除软件可以轻松恢复被删的文件,而且磁盘自由空间中的垃圾数据也会造成磁盘性能的降低。  本本磁盘消毒针之Files Terminator
摘要:“互联网 ”成为一种新的经济形态,网络技术的普及应用为人们的生产、生活、学习带来了极大的便利,同时也带来了许多安全问题,计算机犯罪、计算机病毒、黑客攻击、网络诈骗、网络色情、个人敏感信息泄漏、恶意程序和后门等严重威胁着网络的安全,因此,各个院校必须采取措施来保障绿色安全的校园网络。  关键词:校企合作;校园网;网络安全  中图分类号:TP393 文献标识码:A 文章编号:1009-3044(
作为PC娱乐必不可少的外设,音箱可以说是技术含量比较低的产品之一。但正因为如此,PC音箱在使用过程中,才容易出现这样那样的各种故障。然而大多数PC用户对音箱产品结构的陌