1、(必做)任务分配问题。设有 4 项任务 B1、B2、B3、B4,派 4 个人 A1、

A2、A3、A4 去完成。每个人都可以承担 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种。

当然我们还要给它们相应的编号。A1、 A2、A3、A4 四个人分别做B1、B2、B3、B4,中的一个设 Ai 完成 Bj 所需资金为Cij

  1. 问题求解

方法一

下面利用穷举法写出所有可能,在括号中,前后顺序表示A1、 A2、A3、A4 四个人,阿拉伯数字1,2,3,4表示B1、B2、B3、B4四个任务的安排。

(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,执行下一步;找到线路未覆盖的地方的最小项,存在未覆盖的项的行减去该项,然后将该项添加到覆盖的列中)

最后结果与穷举法一致

任务分配的穷举法、匈牙利法、分支定界法相关推荐

  1. 算法设计之—直接 遍历/穷举法、贪心算法、动态规划、回溯法、EM方法

    算法是对完成特定问题的程序执行序列描述,表象为从问题初始状态到问题结束状态的所有路径之中寻找可行路径,若无先验经验,根据执行方式不同可以划分为无规则和有规则(启发式)方法. 无规则方法为穷举,改进方法 ...

  2. 【算法】最直接的算法——穷举法详解

    第三章 穷举法 一.基本概念 穷举法又称为枚举法或者蛮力法,是一种简单直接解决问题的方法,常常是基于问题的直接描述去编写程序,比如说求n的阶乘,那么就直接一个循环n次的for循环. 穷举法依赖的基本技 ...

  3. 算法设计思想(1)— 穷举法

    本文系 王晓华 老师 GitChat [算法应该怎么玩]课程笔记. 1. 穷举法概念 穷举法又称穷举搜索法,是一种在问题域的解空间中对所有可能的解穷举搜索,并根据条件选择最优解的方法的总称. 数学上也 ...

  4. C#跳转语句 迭代法 穷举法

    一.跳转语句 break & continue break:跳出循环,终止此循环,不管下面还有多少次,全部跳过. string a=" ",for (int i=1;i&l ...

  5. C语言程序设计之编程求鸡和兔的只数,用穷举法解决

    CSDN论坛上网友的问题:有一群鸡和一群兔,两种动物只数相同.两种动物的脚的总数都是三位数,且这两个三位数的六个数字分别是0,1,2,3,4,5.编程求鸡和兔的只数是多少?它们的脚数各是多少? C语言 ...

  6. 【最优化方法】穷举法 vs. 爬山法 vs. 模拟退火算法 vs. 遗传算法 vs. 蚁群算法

    一. 穷举法 列举所有可能,然后一个个去,得到最优的结果.如图一,需要从A点一直走到G点,才能知道,F是最高的(最优解).这种算法得到的最优解肯定是最好的,但也是效率最低的.穷举法虽然能得到最好的最优 ...

  7. Console-算法[for]-穷举法:百钱买百鸡

    ylbtech-Arithmetic:Console-算法[for]-穷举法:百钱买百鸡 1.A,案例 -- ============================================= ...

  8. c语言穷举算法 枚举法,c语言枚举法 穷举法 ppt课件

    枚举法 穷举法 笨人之法 把所有可能的情况一一测试 筛选出符合条件的各种结果进行输出 分析 这是个不定方程 三元一次方程组问题 三个变量 两个方程 x y z 1005x 3y z 3 100设公鸡为 ...

  9. c语言变量相等问题穷举法,C语言穷举法经典例题.ppt

    <C语言穷举法经典例题.ppt>由会员分享,可在线阅读,更多相关<C语言穷举法经典例题.ppt(18页珍藏版)>请在人人文库网上搜索. 1.枚举法(穷举法),"笨人之 ...

最新文章

  1. 你不应该关注区块链的“杀手级应用”
  2. Bitmap Font 报错“characters from the file are not available in the font”解决办法
  3. i2cdetect检测不到i2c设备_I2C基础知识入门
  4. shell编程基本语法
  5. python输出字体的大小_Toby的Python笔记 | 预备知识:安装openpyxl学做电子表格
  6. java椭圆_如何用java画椭圆
  7. 智能课程表Android版-学年学期星期的实现
  8. 怎么卸载apowerrec_如何删除windows10自带应用
  9. 关于计算机书籍的收集与整理(一)
  10. git基本概念与核心命令_Git:了解核心版本控制概念的初学者指南
  11. 【5G科普】华为码chine姐姐聊5G 第1期:5G究竟是个啥?
  12. python单向循环链表_python实现单向循环链表 -- 详细思路分析
  13. 操作系统:作业调度算法--先来先服务
  14. 多玩网总裁李学凌:在腾讯阴影下
  15. Elasticsearch报错received plaintext traffic on an encrypted channel, closing connection Netty4TcpChann
  16. 百度网盘网页倍速播放视频的小技巧
  17. 如何在多可系统里设置腾讯通RTX参数
  18. Python之Datasets库安装报错的解决方法
  19. vs2013 + QT: release时 提示“无法找到.exe的调试信息 或者调试信息不匹配 未使用调试信息生成二进制文,是否继续调试”
  20. 手机chrome查看源代码_如何查看Chrome扩展程序的源代码

热门文章

  1. 使用 Wrapper 自定义SQL
  2. Cache简介(一)
  3. 悲催呀,辞职后,竟然找不到工作了
  4. 分享塑胶模具设计思路与流程,建议收藏!
  5. DAYTIME(daytime可数吗)
  6. SONM DWH组件介绍
  7. Web性能压力测试工具之WebBench详解
  8. windows删除多余用户及其文件夹
  9. 正负号 substr java_实战LeetCode 系列(一) (题目+解析)
  10. iar 预编译会把非条件的去掉_IAR使用最全方法.docx