任务分配的穷举法、匈牙利法、分支定界法

1(必做)任务分配问题。设有 4 项任务 B1B2B3B4,派 4 个人 A1

A2A3A4 去完成。每个人都可以承担 4 项任务中的任何一项,但所消耗的资金不同。设 Ai 完成 Bj 所需资金为。问如何分配任务,使总费用最少?

假定每个数据具体的数值如表 2 所示。其中列表示任务 Bj,行表示人员

Ai,表格中的每个数据表示 Ai 完成 Bj 所需资金。

 

要求

1)查阅资料,解释什么是最优化问题?最优化问题包含哪些概念?哪些

问题属于最优化问题?通常采用什么方法求解最优化问题?3

2)分析问题,建立相应的数学模型。要求给出数学建模的主要步骤,给

出所有变量的定义、目标函数和约束条件。说明你采用的是什么建模方法。

3)利用现有的数学知识,你认为一共有多少种可能的情况?试列表给出

所有可能,并求出最佳分配方案,此时总费用为多少?

提示:

① 本题涉及最优化问题和穷举法等知识。穷举法(枚举法,Enumeration

就是按问题本身的性质,通过多重循环一一列举出该问题所有可能的解(不能遗

漏,也不能重复),并在逐一列举的过程中,检验每个可能的解是否是问题的真

正解,若是,则采用这个解,否则抛弃它。

② 仔细阅读教材【案例 2.7】“学生选课”,体会该案例是如何进行模型假设

和模型建立的。

③ 分配问题也称为指派问题,它是典型的最优化问题。一般是引入一个 0-1

变量,=1 表示指派 Ai 完成任务 Bj=0 表示不指派 Ai 去完成任务 Bj

然后根据题意写出目标函数和约束条件,再选取合适的方法求解。

除了采用穷举法求解,还可以采用匈牙利算法求解。匈牙利算法由匈牙利数

学家 Edmonds 1965 年提出,因而得名。利用该算法求解任务分配问题,简单

易行。

或者采用组合问题中的分支限界法求解。

④ 根据题意,约束条件可以用文字描述为:某项任务只能由 4 个人中的一

个来完成;每个人只能承担 4 项任务中的一项。将它们表达为与有关的两个

等式即可。

答:(1)最优化问题

最优化问题的一般提法是要选择一组参数(变量),在满足一系列有关的限制条件(约束)下,使设计指标(目标)达到最优值。换言之,最优化问题就可以定义为: 在给定的约束条件下, 选择最优的参数和方案,来使得目标函数最大化/最小化的问题。我们高中学的线性规划就是其中一种。

最优化问题包含的主要概念包括:

a.决策变量:直接影响设计指标取值的变量

b.约束条件:影响决策变量取值的一系列限制条件

c.目标函数:设计指标的取值

一般来说,函数优化问题,组合优化问题,线性规划问题和多目标规划问题,可以看为最优化问题。

通过查找资料,了解到解决最优化问题通常采用的方法有:拉格朗日乘子法,在有不等约束时使用KKT条件。牛顿法、最速下降法(梯度法)、模式搜索法(步长加速法)

  1. 问题分析

我们有以下理想条件

a.可分配人员与可分配任务数量、种类不变

b.任务分配好后不会再出现人员与任务变动情况

C.题目中的对应资金不变

  1. 模型的准备:通过题干,我们可以清楚地知道每种情况对应的资金,我们只需要确定每个人员对应不同的任务(或者是每个任务对应的人员),而不同情况资金对应也是不同的,显然我们可以用穷举的方法来解决。
  2. 模型假设:如果利用穷举法的化我们只需要按照一定的顺序,将所有的情况列举出来,而根据高中阶乘的知识,我们一共需要4!=24种。

当然我们还要给它们相应的编号。A1A2A3A4 四个人分别做B1B2B3B4,中的一个设 Ai 完成 Bj 所需资金为Cij

 

  1. 问题求解

方法一

下面利用穷举法写出所有可能,在括号中,前后顺序表示A1A2A3A4 四个人,阿拉伯数字1,2,3,4表示B1B2B3B4四个任务的安排。

(1,2,3,4)(1,2,4,3)(1,3,2,4)(1,3,4,2)(1,4,2,3)(1,4,3,2)(2,1,3,4)(2,1,4,3)(2,3,1,4)(2,3,4,1)(2,4,1,3)(2,4,3,1)(3,1,2,4)(3,1,4,2)(3,2,1,4)(3,2,4,1)(3,4,1,2)(3,4,2,1)(4,1,2,3)(4,1,3,2)(4,2,1,3)(4,2,3,1)(4,3,1,2)(4,3,2,1)

最佳解决方案为

A1分配任务B4,A2分配任务B1,A3分配任务B2,A4分配任务B3,算得总费用为M=15

方法二

B1

B2

B3

B4

A1

6

7

11

2

A2

4

5

9

8

A3

3

1

10

4

A4

5

9

8

2

以这个表建立一个矩阵,使用匈牙利算法(每行的所有数字减去该行的最小项

每列的所有数字减去该列的最小项;使用横线或者竖线穿过矩阵中的所有0,并记录达成此目的所需的最少线路总数;如果线路总数等于矩阵的行数或者列数n,那么一种最优的分配是可能的,完成。如果总数小于n,执行下一步;找到线路未覆盖的地方的最小项,存在未覆盖的项的行减去该项,然后将该项添加到覆盖的列中)

最后结果与穷举法一致

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值