(matlab代码分享,可运行) 多技能员工排班调度多目标优化(技能熟练度包含学习型、遗忘型)(Part 1)

一、技能值不变的多技能员工调度优化模型

1、问题描述

对于企业管理者来说,如何合理的分配员工去完成任务,是降低企业运行费用,提升企业产品开发的重要手段。现代化企业需要制定一套科学的方法对员工进行任务分配,以达到最大的效益。一般来说,该类问题可以归结到指派问题上。但是,随着社会发展,人员类型变得越来越复杂。不同的任务之间往往存在先后顺序以及优先级关系。
传统的方法通常首先对该问题进行数学建模。在这个过程中,需要考虑问题的相关特性,并用数学语言进行表述。然后可以通过线性规划等方法对问题进行优化,最后得到排班结果。然而,由于现实世界并非总是线性的,因此问题的数学模型将包含非线性部分。一般来说,可以通过一些方法,比如引入辅助决策变量,将模型的非线性部分转化为线性部分,从而达到使用传统方法求解的效果。该类方法在不破坏数学模型的前提下具有较好的效果,因此被广泛研究和应用。但是该方法也会导致数学模型与真实世界存在差别。
另一方面,随着考虑问题维度的增加,员工调度问题往往是一个多目标优化问题。在对问题进行优化时,需要考虑完成时间、员工工资等目标函数。不是一般性,我们定义多目标优化问题如下:
传统的线性规划方法在处理多目标优化问题时,通常通过事先给定的一组权重向量把多目标优化问题转化成单目标优化问题,例如线性加权方法。该方法形式简单、实现容易,因此一直是处理多目标优化问题的一个考虑方向。但是,线性加权方法具有许多弊端,具体表现在:1、权重向量难以确定。多个目标函数之间必然存在矛盾,如果使用简单的线性加权的话,只能通过调节权值大小来获得多组不同的解。但是这样权值的确定其实是很难的,往往需要通过多次实验来确定。二、各个目标之间量纲的不统一,可能会造成单目标优化问题鲁棒性差。对于现实世界中的工程问题,各个目标之间量纲往往不统一,比如买车价格为10万至100万,而舒适度为0到1。为了平衡各个目标之间的量纲,往往需要设置较大的权值。而如果小量纲的目标函数包含noise的话,很大的权值就会对整个目标函数产生巨大的影响,从而导致问题的鲁棒性较差。三、单目标加权求和只能逼近凸的帕累托面。加权求和的方式只能逼近帕累托前沿面为凸集的情况,如果多目标优化问题的帕累托面为非凸,则加权求和的方式就不能和原多目标优化问题等价,此时只有直接处理原多目标优化问题才能解决。四、多目标优化问题的帕累托解集包含更多有效信息。多目标优化问题的求解是会得到一个帕累托解集的,这个解集里边包含着很多的信息,例如可以分析目标之间的关系,便于决策者更好地了解模型。

针对上述提到的问题,进化多目标优化(Evolutionary multiobjective
optimization,EMO)算法越来越得到学界的广泛关注。EMO算法受自然界生物进化适应环境的启发,通过模拟进化的过程去搜索问题的最优解。由于EMO算法不受模型的约束,能够处理非线性问题,并且在目标个数较低时,如2或3目标优化问题,能够给出令决策者满意的帕累托最优解集,因此被应用在许多的工程问题上。

一个软件项目P,共分为m个任务。每一个任务需要多种技能,项目P总共需要的技能总数为s种。项目组合中共有n个可供调用的多技能研发人员。i,j,d分别表示员工、技能和任务(1⩽i⩽n,
,1⩽j⩽s,1⩽d⩽m)。每一个任务需要多种技能,每一种技能由多个员工掌握,每一个员工具有多种效率异质的技能。假设人员的数量以及人员所掌握的技能水平不随时间变化而变化。模型中不考虑时滞及任务抢占的情况,确定人员安排方案使软件项目的研发周期和研发成本实现最优化。模型假设如下:

1)不考虑员工离职的情况,也就是保证在整个项目周期内人员的数量保持不变。

2)研发成本为参加所有项目员工的工资。

3)在工期的计算中,不考虑任务抢占,不考虑时滞。假设一个工序紧前工序的完成时间即为该工序的开始时间,之间没有时间间隔,不考虑工作转换时间和准备时间。

4)每个任务中途不能中断,即分配给一个任务的员工只能等该任务结束才能被分配到下一个任务。

2、问题建模:

以软件项目研发周期和研发成本为目标建立多目标优化调度模型。相关符号如下所示:

符号意义
Tijd表示员工i使用技能j参加任务d的时间;
T j d m i n T_{jd}^{min} Tjdmin表示任务d所需技能j的最短完工时间,代表企业中技能j的最高水平,表示任务d由企业中水平最高的员工去做所需要的时间,1⩽i⩽n,1⩽d⩽m;
Eij表示员工具备的技能j的水平高低,1⩽i⩽n,1⩽j<⩽s,Eij∈[0,1],Eij=1表示员工i具备的技能j的水平为企业最高水平;Eij=0,表示员工i不具备技能j;
FTd表示任务的完工时间;
STd表示任务的开始时间;
FTPd表示前序工作的完成时间;
Td表示任务d的工期;
Pd表示任务d的紧前任务的集合;
Jd表示任务d所需技能总数的集合;
R d j R_d^j Rdj表示任务d是否需要技能j,若需要则=1,否则=0,1⩽j<⩽s,1⩽d⩽m;
Ci表示在一定时间内(比如月、周、日)员工i的薪酬,1⩽i⩽n;
xijd为0-1决策变量,1⩽i⩽n,1⩽j<⩽s,1⩽d⩽m。若xijd=1,表示员工i使用技能j参加任务d,否则为零。
yijdt为0-1辅助变量,1⩽i⩽n,1⩽j<⩽s,1⩽d⩽m。若yijdt=1,表示员工i在时段t使用技能j参加任务d,否则为零。

目标函数

在这里插入图片描述

约束条件:

在这里插入图片描述
在这里插入图片描述

(1)表示软件项目工期最短化目标,最迟完成任务的时间为项目的最终工期;

(2)表示软件项目成本最小化目标,总的成本为参与任务的员工工资的总和;

(3)表示员工i使用技能j参与软件项目的P时间;

(4)表示每一个任务的工期,为任务中所有技能花费时间的最大值;

(5)任务d的完成时间为任务d的开始时间和任务的工期只和;

(6)任务d的开始时间为其前序任务的完成时间;

(7)前序任务的完成时间为前序任务中花费时间最大者;

(8)若一个任务没有前序任务,则该前序任务的完成时间为空;

(9)表示每项任务的每一个技能要求有且只有一个人完成;

(10)表示每一个员工只能使用一种技能参加同一个任务;

(11)表示在同一时刻一个员工只能参加同一个任务;

(12)表示变量xijd与变量yijdt之间的关系;

(13)-(14)为变量范围的界定。

算法设计:

1、包括针对本需求算法是如何实现

2、伪代码

算例分析1

一个软件项目总共可以分为10个任务,分别为D1、D2…D10,总共需要8种开发技能分别为S1、S2…S8,每一个任务需要其中的多种技能,每个技能是并行进行的,员工的技能由项目经理、研发主管和技术负责人等组成的专家小组评价给出的。可以参加该项目的员工为40名。任务之间的先后关系如表一,每个任务所需要的技能及最短开发时间见表二,员工的工资见表三,每位员工掌握的技能及技能水平见表四。

表一 任务先后关系约束

任务名称紧前任务所需技能
D1——S1,S2,S3,S5,S7
D2——S1,S2,S3,S5,S7
D3D2S2,S5,S6,S7
D4——S1,S2,S3,S5,S7
D5D1,D2S2,S4,S6,S8
D6D1,D4S3,S5,S7,S8
D7D3,D5S3,S5,S7,S8
D8D3S3,S5,S7,S8
D9D6,D7,D8S3,S5,S7,S8
D10D9S3,S5,S7,S8

表二 任务中各技能的最短时间需求(单位:月)

任务S1S2S3S4S5S6S7S8
D1124----11----2-----
D2122-----5-----1----
D3-----2----------812-----
D4242-----3----6----
D5-----4-----6-----2-----1
D6----------2-----2-----24
D7----------1-----1-----51
D8----------4-----4-----11
D9----------5-----2-----11
D10----------3-----4-----31

表三 员工工资(元/月)

员工序号员工工资
1~1080006000100001200070001500010000700090008000
11~20700080001100012000700010000130009000100009000
21~3010000700090009000800015000120001200090008000
31~409000100001200010000800080001000013000900010000

表四 掌握各技能的员工及技能值

技能员工序号员工技能初始值
S1(1,3,5,6,8,9,10,16,18,21,37)(0.8,1.0,0.6,0.8,0.7,0.5,0.7,0.8,0.9,0.7,0.8)
S2(1,2,4,5,6,7,8,9,11,13,16,20,21,25,27,28,29,30,31)(0.6,0.7,0.8,0.8,0.8,1.0,0.9,0.8,0.6,0.7,0.8,0.5,0.7,0.6,0.7,0.8,0.5,0.6,0.8)
S3(3,6,25,26,28,32,34,36,39)(0.8,0.7,0.8,1.0,0.7,0.6,0.5,0.8,0.9)
S4(14,15,16,17,18,19,20,23,24,25,40)(0.5,0.7,0.6,0.9,0.8,1.0,0.8,0.8,0.8,0.6,0.8)
S5(14,15,16,32,40)(1.0,0.8,0.7,0.6,0.6,0.9)
S6(13,15,16,17,19,25,26,33,40)(0.6,0.5,0.8,0.8,0.6,0.9,0.6,1.0,0.7)
S7(6,7,8,9,10,12,22,27,33)(0.8,0.8,0.7,0.9,1.0,0.5,0.6,0.5,0.8)
S8(4,29,30,31,33,35,36,38,39)(0.5,0.5,0.6,1.0,0.7,0.8,0.7,0.6,0.6)

算法求解后的结果为:

1)给出算法运行后的截图,并给出分析。

2)给出10个接近最优的调度方案,其中包括最优的方案;(表格列出来)

3)给出2)中10个方案的目标函数的值:成本和工期的值;(表格列出来)

最后,博主专注于论文的复现工作,有兴趣的同学可以私信共同探讨。相关代码已经上传到资源共享,点击我的空间查看分享代码。

  • 4
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 10
    评论
物流网络分拣中心是指负责接收、分拣和配送货物的中心,它在物流运输中起到了至关重要的作用。在物流网络分拣中心中,货量预测和人员是两个重要的问题。 1. 货量预测问题: 货量预测是指根据历史数据和其他相关因素,对未来一段时间内的货物数量进行预测。准确的货量预测可以帮助分拣中心合理安资源,提高工作效率和客户满意度。货量预测通常涉及以下几个方面: - 历史数据分析:通过分析过去一段时间内的货物数量、季节性变化、特殊事件等因素,来预测未来的货物数量。 - 数据模建立:根据历史数据和其他相关因素,建立合适的数学模,如时间序列模、回归模等,来进行货量预测。 - 预测结果评估:对预测结果进行评估和验证,不断优化,提高预测准确性。 2. 人员问题: 人员是指根据货物数量和工作需求,合理安分拣中心的工作人员进行工作。合理的人员可以保证分拣中心的运转效率和工作质量。人员问题通常需要考虑以下几个方面: - 工作量分配:根据货物数量和工作需求,合理分配工作量给每个工作人员,避免出现过载或闲置的情况。 - 人员技能匹配:根据不同的工作任务和要求,将具有相应技能和经验的人员安到相应的岗位上。 - 工作时间安:根据工作需求和员工的工作时间限制,合理安员工的工作时间和休息时间,确保工作的连续性和员工的健康。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

运筹不帷幄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值