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

三、学习-遗忘效应导致技能值变化的多技能员工调度优化模型

问题描述:

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

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

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

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

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

5)员工的技能值具有上界,当达到上界之后,技能无法继续增加,同样的员工的技能值也具有下界,当技能降到一定程度后,无法继续降低。

学习遗忘效应:

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

问题建模:

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

Tijd表示员工i使用技能j参加任务d的时间;

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

目标函数

进度最小化(1)

成本最小化 (2)

约束条件:

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

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

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

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

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

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

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

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

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

(9)表示员工i在任务d开始时,所具备的技能j的水平;

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

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

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

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

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

算法设计:

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

2、伪代码

算例分析3

使用算例一的案例,只是将员工的学习率取值为0.91,遗忘率取值为0.04

算法求解后的结果为:(使用遗传算法)

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

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

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

(matlab代码分享,可运行) 多技能员工排班调度多目标优化(技能熟练度包含学习型、遗忘型)(Part 3)_第4张图片
最后,博主专注于论文的复现工作,有兴趣的同学可以私信共同探讨。相关代码已经上传到资源共享,点击我的空间查看分享代码。

你可能感兴趣的:(matlab,开发语言)