问题概述:
指派问题(Assignment Problem)是线性规划、整数规划、图论和组合最优化中的典型问题,旨在将一组任务分配给一组执行者(如工人、机器),使得总成本最小或总效率最高。其标准形式为每个执行者只能完成一项任务,每个任务只能被一个执行者完成。这种问题可以通过构建一个费用矩阵来描述,其中矩阵的每个元素表示某执行者完成某任务的成本或效率。
指派问题既属于资源优化的线性规划,又属于多阶段决策问题的动态规划。两类问题富裕指派问题的多种模型及求解方法。
标准指派问题
n项任务由n个人完成,规定每人只能执行一项任务,每个人完成每一项任务的时间(效率)不尽相
同。
数学模型建立
决策变量
Xij表示第i个任务指派给第j个执行者时,是否执行该任务。1表示执行,0表示不执行。
目标函数
最小化总时间
其中aij表示第一个人执行第j项任务所需时间
约束条件
每项任务只能分配给一个单位去完成:
每个单位只能那个接受其中一项任务:
求解——匈牙利算法
算法本质
变换系数矩阵,找到n个不同列不行的0元素,用最少的直线去覆盖零元素。
算法原理
匈牙利算法是一种在多项式时间内求解任务分配问题的组合优化算法,核心是寻找增广路径
例:
非标准指派问题
1、人数多于任务情况
增加虚拟任务,令虚拟任务成本为零
2、任务多于人数
增加虚拟执行者,执行成本为零
3、对于最大化目标函数的指派问题
不能将目标函数改为
来求解,因为匈牙利算法要求每一个系数都为非负。因此对于最大化的指派问题,只能在系数矩阵C=(Cij)n×n找出最大的数,然后进行九堡镇变化既可以讨论矩阵B=M-C
动态规划模型
动态规划模型通过将问题分解为多个阶段,并在每个阶段作出最优决策。每个阶段的决策会影响到后续阶段,因此需要综合考虑当前决策和未来可能的最优解。具体而言,动态规划模型通过定义状态、决策和转移方程来构建递归关系,最终找到问题的全局最优解。
变量说明
1、阶段变量
k=1、2、3、4、.......n,表示给n个人指派工作顺序
2、状态变量
Sk表示第看阶段初剩余的工作数,也就是给第k个人指派工作签剩余的工作数
3、决策变量
Xk表示指派给第k阶段的工作,即指派给第k个人的工作
Xkj为1时表示第k个人做了第j项工作,为0时表示第k人不做第j项工作
k,j=1、2、3、........n
4、允许决策集合
Xk表示第k阶段决策变量肯呢个的取值,显然可得
5、状态转移方程
由决策变量和允许决策集合的定义可得的表达式为
6、优劣指标
表示第k阶段的直接指标,,其中Ckj≥0为第k个人做j任务的费用,其中
为第k阶段到第n阶段的总效益