线性规划例题5分配问题及匈牙利算法
匈牙利算法示例ppt
•
非标准型的指派问题:
匈牙利法的条件是:模型求最小值、效率cij≥0。 当遇到各种非标准形式的指派问题时,处理方法是先将 其转化为标准形式, 1、人数和事数不相等的指派问题:人少事情多,虚拟 “人”,做各事的费用系数为0;人多事情少,虚拟 “事”,各人做的费用系数为0。 2、对于求极大化的问题,只要系数矩阵变换为B=(mcij)nn,仍可利用匈牙利算法进行求解。 3、一个人可以做几件事情的指派问题:可以将该人化 作相同的几个“人”来接受指派,费用一样。 4、某事一定不能由某人做的指派问题,费用系数为“ M” 然后用匈牙利法来求解。
2 0 2 4 5
-0 -0 -0 -0 -0
第二步:进行试指派,以寻求最优解。 在 (bij) 中找尽可能多的独立 0 元素,若能找出 n 个 独立 0元素,就以这 n个独立 0元素对应解矩阵 (xij)中的 元素为1,其余为0,这就得到最优解。找独立0元素, 常用的步骤为:
0 0 1 0 0
或
0 0 0 0 1
1 0 0 0 0
0 0 0 1 0
0 1 0 0 0
0 0 1 0 0
解矩阵得到2个最优指派方案;(1)甲-B,乙-C, 丙--E,丁-D,戊-A;(2)甲-B,乙-D,丙-E,丁-C, 戊-A。所需时间为minz=7+6+9+6+4=32
分配问题指派问题与匈牙利法课件
分派方案满足下述两个条件:
• 任一个工人都不能去做两件或两件以上的工作 1.任一件工作都不能同时接受两个及以上的工人去做
分配问题指派问题与匈牙利法课件
标准形式的分配问题
n个人 n件事
每件事必有且只有一个人去做 每个人必做且只做一件事
5 0 2 0 2
2
3
0
0
0
0 10 5 7 2
9
8
0
0
4
0 6 3 6 5
圈0个数4 < n=5
5 0 2 0 2
2
3
0
0
0
0 10 5 7 2
9
8
0
0
4
0 6 3 6 5
分配问题指派问题与匈牙利法课件
⑥找未被直线覆盖的最小数字k;
⑦对矩阵的每行:当该行有直线覆盖时,令ui=0; 当 该 行 无 直 线 覆 盖 时 , 令 ui=k 。
⑩再次寻找独立零元素
逐列检验
4 8 7 15 12
7 9 17 14 10
6
9
12
8
7
6 7 14 6 10
6
9
12
10
6
0 3 0 11 8
0 0 6 6 2
0
1
2
1
0
0 0 5 0 4
0
2
3
4
0
0 0 1 0 0
0 1 0 0 0
0
0
0
0
1
0 0 0 1 0
分配问题指派问题与匈牙利法课件
数学模型
《管理运筹学》分配问题与匈牙利算法
2019/9/10
第 12页
第4章 整数规划与分配问题
4 5 4 ◎ √
◎ 1 Ø 4
2 ◎ 4 3
3
7
1
Ø
√
√
3 4 3 ◎
◎ 1 Ø 5
2 ◎ 4 4
2
6
0
Ø
3 4
◎ 1 2 ◎ 2 6
3 ◎
Ø 5
4 4
◎
Ø
得到4个独立零元素, 所以 最优解矩阵为:
7
8
11
9
-7
运筹学
0 13 11 2
6 0 10 11
0 5 7 4
0 1
4
2
2019/9/10
第 6页
第4章 整数规划与分配问题
运筹学
0 13 11 2
6 0 10 11
0 5 7 4
0
1
4
2
-0 -0 -4 -2
0 13 7 0 6 0 6 9 0 5 3 2 0 1 0 0
2019/9/10
第 11页
第4章 整数规划与分配问题
运筹学
第三步,作最少的直线覆盖所有0元素:
4 5 4 ◎ √
◎ 1 Ø 4
2 ◎ 4 3
3
7
1
Ø
√
√
独立零元素的个数m等于最少直线数l,即l=m=3<n=4;
第四步,变换矩阵(bij)以增加0元素:没有被直线覆盖的所有元素中的最小元素为1,然后 打√各行都减去1;打√各列都加上1,得如下矩阵,并转第二步进行试指派:
第4章 整数规划与分配问题
§2 分配问题与匈牙利法
第二步:寻找独立0元素
50202 23000 0 10 5 7 2 -2 98004 0 6 3 6 5 -2
+2
最小元素为 min{10,5,7,2,6,3,6,5}=2
70202
43000 08350 11 8 0 0 4 04143
它有5个独立0元,得到最优解相应的解矩阵为
(1)任务E必须完成,其他4项中任选3项 完成;
任务 A B C D E 人员
甲
25 29 31 42 37
乙
39 38 26 20 33
丙
34 27 28 40 32
丁
24 42 36 23 45
戊
0 0 0 0M
(2)其中有一人完成两项,其他每人完成一项;
任务 A B C D E 人员
甲
25 29 31 42 37
第二步:在B中寻找位于不同行、不同列的 0元素。
(1)检查B的每行每列,从中找出未加标 记的0元素最少的一排(即行列的统称), 在该排用()标出一个0元,若该排有多个0 元,则任意标出一个即可;
(2)把刚得到()号标记的0元所在的行、列中 的其余0元划去,用表示;
(3)凡是(0), 就成为加了标记的0元,返 回(1)重复(1)、(2)、 ( 3),直到所 有0元都加上标记为止。若得到的加()号的0元 素个数等于n,则结束;否则转第三步
0 13 7 0 6069 0532 0100
0 13 11 2 6 0 10 11 0574 0142
0042
独立0元素
0 13 7 0 6069 0532 0100
得解矩阵
0 0 0 1
X
0
1
1 0
hungarian method
hungarian methodHungarian method是一种经典的解决分配问题的算法。
该算法在二十世纪五六十年代由匈牙利数学家Dénes Kőnig和Jenő Egerváry所发明,用于解决在线性规划中常见的任务分配问题。
这种算法结合了图论和线性规划的技术,是一种非常高效和精准的优化算法。
1. 问题定义在任务分配问题中,我们需要将n项活动分配给n个人,每个人只能完成一项活动。
每项活动有一个与之相关联的成本或权重,我们需要最小化这些权重的总和。
该问题可描述为一个n*n的矩阵,其中每个元素aij代表将任务i分配给人j所需的代价。
2. 算法步骤Hungarian method的实现步骤如下:(1)首先,对原始的代价矩阵进行列减法和行减法,得到一个新的矩阵。
(2)使用最小化(或最大化)算法,将矩阵的元素分组为行和列,并将它们连接起来。
(3)通过在每个组内选择最小的元素并在每个组之间进行替换来得到最优解。
(4)如果问题没有得到解决,则回到步骤1并继续执行算法,直到找到最优解为止。
3. 矩阵的处理在第一步中,我们需要对原始的代价矩阵进行行减法和列减法。
对于每一行和每一列,我们从其中选择一个最小的元素,并将该最小元素从行(或列)的其他元素中减去。
通过这种方式,我们可以得到一个新的矩阵,它的元素最少有一个为0。
该矩阵称为减法矩阵。
4. 匈牙利算法的实现在第二步中,我们使用最小化算法将减法矩阵的元素分组为行和列。
我们将行中的最小元素和列中的最小元素连接起来,并用直线穿过它们。
接下来,我们用相邻线覆盖矩阵的其他元素,直到矩阵的每个元素都被覆盖。
第三步是通过在组内选择最小元素并在组和列之间进行替换来获得最优解的。
如果我们无法替换元素,例如在第二步中,我们没有找到足够的相邻行或列,则需要回到第1步并继续。
5. 求解复杂度的分析Hungarian method是一种精确的分配算法,可以在多项多项任务分配问题上得到最优解。
整数规划---匈牙利法
x1 (1) 1 0 0 0 x2 0 (1) 1 0 0 x3 0 1 0 0 (1) x4 0 0 (1) 0 0 x5 0 0 1 (1) 1
y1
y2
y3
y4
y5
但礼让原则未必都能得到最大 匹配,其次礼让原则当规模大 时无法使用,且无法用计算机 实现
z' = ∑∑C'ij xij =∑∑Cij xij − a∑xij + b∑xij = ∑Cij xij − a + b = z − a + b
j =1 i =1 n n
利用这个性质,可使原效益矩阵变换为含有很多零 元素的新的矩阵(即每行减去该行的最小值,再每列 也类似),其余C’ij ≥0. 如果C=(C’ij)有n个不同行,不同列的零元素,以下 简称为独立的零元素,则令矩阵x=( xij )中,对这n个独 立的零元素位置取1,其余取0,代入目标函数得z’= 0,它一定是最小(因为C’ij ≥0 )
Step4:增加(转移)零元素 a.求出未被直线覆盖的元素中的最小值k(本例中 k=2). b.对打√行减去k,对打√列加上k go to step2
2 (0) 8 11 (0) 5 2 3 (0) 0 13 4
√
5 √ 4 0 √ 5
0 (0) 6 13 (0) 5 4 3 (0) 0 11 2
进一步考虑
指派问题用匈牙利法计算,模型需要满足的形式: (1)目标函数是求最小值 (2)效益矩阵必须是n阶方阵 (3)效益矩阵中每个元素Cij ≥0,且是常数
如人员分配问题:
x1 x2 x3 x4 x5 y1 y2 y3 y4 y5
x1 x2 A = (aij ) = x3 x4 x5 1 0 0 0 0
02线性规划-资源分配问题
可 行 解 矩 阵
1 0 X 0 0 0
资源分配问题-匈牙利法
举例说明匈牙利法求解步骤:
已知效率矩阵,求相应的解矩阵。
5 3 C0 5 6 7 6 8 4 5 4 6 6 1 5 7 9 8 7 5 7 6 4 6 2 8
第1步:行简约化 找出 C 0 各行的最小元素,各行 并减去其最小元素,得到 C1
n ,则这时就可以得到最优解, n 为的
C1中的0元素
资源分配问题-匈牙利法
第4步:
2 4 0 1 1 当 时,可以把 2 3 5 5 0 简约化后矩阵的元素分为三类: C 2 0 0 2 4 3 ①没有被直线划到的元素 1 2 0 2 1 ②被直线划过一次的元素 2 4 0 6 5
资源分配问题
资源分配问题又称为指派问题或分配问题, 属于0-1规划。
如工程运输中各个运输任务的人力与物力分
配问题;n个公司对n个工程项目的投标问题;
公共交通客运公司与运营路线的分配问题等。
资源分配问题
例:有 5 个工人,要分配他们完成 5 项工作,每人
做不同的工作所消耗的时间如下表所示。问应该分 配哪个人去完成哪项工作,可使总的耗时最少?
找出有唯一0元素的第3列,同时画去第4行的0元素。
资源分配问题-匈牙利法
第6步:确定不同行不同列的n个0元素 首先将某行或某列是唯一的0元素划出,同时把这一行或列 的其它0元素去掉,然后再划出某行或某列是唯一的0元素。
0 2 C4 0 4 1 4 6 5 2 3 6 0 3 1 1 4 0 0 3 5 0 1 4 0 2 3 6 6 0 C 4 3 5 3 1 2 4 1 4 5
线性规划例题5分配问题及匈牙利算法
直角坐标系。 • (2)对每个约束(包括非负约束)条件,
先取其等式在坐标系中作出直线,通过
判断确定不等式所决定的半平面。各约束半 平面交出来的区域(存在或不存在),若存在, 其中的点表示的解称为此线性规划的可行解。 这些符合约束限制的点集合,称为可行集或 可行域。
同时,我们有一个追求目标,即获
取最大利润。于是可写出目标函数z
为相应的生产计划可以获得的总利
润:z=40x1+30x2 +50x3
【解】设x1、x2、x3 分别为甲、乙、丙三种产品 的产量数学模型为:
mZ a 4 x x 1 0 3x 2 0 5x 3 0
3 x1 x 2 2 x3 200
问:如何分配,能使所需的 总时间最少?
人 工作 甲 乙 丙 丁
译英文 2 10 译日文 15 4 译德文 13 14 译俄文 4 15
97 14 8 16 11 13 9
1.1 数学模型 Mathematical Model
线性规划(Linear Programming,缩写为LP)是运筹学的重 要分支之一,在实际中应用得较广泛,其方法也较成熟, 借助计算机,使得计算更方便,应用领域更广泛和深入。
怎样辨别一个模型是线性规划模型?其特征是: 1.解决问题的目标函数是多个决策变量的线性函 数,通常是求最大值或 最小值; 2.解决问题的约束条件是一组多个决策变量 的线 性不等式或等式。
书本还例举了诸如合理用料问题;配料问题;投资问题;均衡配 套生产问题等.
• 线性规划的一般模型
max(min)Z c1x1 c2 x2 L cn xn
6
x 1 0 、 x 2 0
运筹学-12分配问题
+2 (0) 8 2 5 -2 11 (0) 5 4 2 3 (0) 0 0 11 4 5 . -2
0 6 0 3 13 0 5 4 4 300 0 9 2 3 .
具体求解过程(8)
• 4.没有找到m个独立的
“0”:
• (3)找独立的“0”元素
• 设工程有A1,A2,A3,A4四项任务,恰有B1,B2,B3,B4个工人去
完成各项的任务,由于任务性质和每个工人的技术水平不 相同,他们完成各项任务所需的时间也不一样.见表:
• 问应当如何分配,即哪个人去完成哪项任务,才能使总 共花去的时间最少?
所需时间 任务 工人
A1
A2
A3
A4
B1
2 15 13 4
补充内容 分配问题
分配问题与匈牙利解法
分配问题
• 有n项任务,恰有n个人可以分别去完成
其中每项,但是由于任务的性质和每个 人的技术专长各不相同,因此每个人去 完成不同的各项任务的效率也不一样。 • 问应当如何分配,即哪个人去完成哪项 任务,才能使总效率最高? • 如:400混合游泳接力赛。
分配问题(例)
• 证明: 将从(b i j)中得到的数据代入目标函数式
• 有f ’= b i j x i j = (a i j u i v j ) x i j
•
= aijxij uixij vj xij
• = a i j x i j u i v j (因为 u i v j为常数) • 所以min f = a i j x i j与 f’ = b i j x i j等价
乙
总时间:101
丙
•加一个虚拟人员戊,
匈牙利法求解指派问题
然后划去所在的行的其他0元素, 记作Ø。
52Ø 2 2 3Ø Ø 10 5 7 2 9 8 Ø 4 Ø 6365
的个数m=4,而n=5, m<n,转下 一步。
52Ø 2 2 3Ø Ø 10 5 7 2 9 8 Ø 4 Ø 6365
指派问题(分配问题)
(Assignment Problem)
例5 有一份中文说明书,需翻译 成英、日、德、俄四种文字,分 别记作E、J、G、R,现有甲、 乙、丙、丁四人,他们将中文说 明书翻译成英、日、德、俄四种 文字所需时间如下,问应该如何 分配工作,使所需总时间最少?
任务 E
J
G
R
人员
甲
2
15 13
4
乙 10 4 14 15
丙
9
14 16 13
丁
7
8 11 9
类似有:有n项加工任务,怎样 分配到n台机床上分别完成;有n 条航线,怎样指定n艘船分别去 航行….. 等。
表中数据称为效益矩阵或系数矩 阵,其元素大于零,表示分配第 i人去完成第j 项任务时的效益 (或时间、成本等)。
引入0-1变量xij=1分配第i人去完 成第j 项任务,xij=0不分配第i人去完
然后划去所在的1 0 0
➢给只有一个0元素的列的0 元素加圈,记。
Ø 13 7 0 6 6 9 5 3 2 Ø 1 0
然后划去所在的行的其他0元 素,记作Ø
Ø 13 7 0 6 6 9 5 3 2 Ø 1 Ø
➢给最后一个0元素加圈, 记。
任务 E
J
G
R
人员
甲
2
15 13
4
乙 10 4 14 15
丙
9
14 16 13
匈牙利算法(二分图)
匈⽛利算法(⼆分图)---------------------------------------------------------------------题材⼤多来⾃⽹络,本篇由神犇整理基本概念—⼆分图⼆分图:是图论中的⼀种特殊模型。
若能将⽆向图G=(V,E)的顶点V划分为两个交集为空的顶点集,并且任意边的两个端点都分属于两个集合,则称图G为⼀个为⼆分图。
匹配:⼀个匹配即⼀个包含若⼲条边的集合,且其中任意两条边没有公共端点。
如下图,图3的红边即为图2的⼀个匹配。
1 最⼤匹配在G的⼀个⼦图M中,M的边集中的任意两条边都不依附于同⼀个顶点,则称M是⼀个匹配。
选择这样的边数最⼤的⼦集称为图的最⼤匹配问题,最⼤匹配的边数称为最⼤匹配数.如果⼀个匹配中,图中的每个顶点都和图中某条边相关联,则称此匹配为完全匹配,也称作完备匹配。
如果在左右两边加上源汇点后,图G等价于⼀个⽹络流,最⼤匹配问题可以转为最⼤流的问题。
解决此问的匈⽛利算法的本质就是寻找最⼤流的增⼴路径。
上图中的最⼤匹配如下图红边所⽰:2 最优匹配最优匹配⼜称为带权最⼤匹配,是指在带有权值边的⼆分图中,求⼀个匹配使得匹配边上的权值和最⼤。
⼀般X和Y集合顶点个数相同,最优匹配也是⼀个完备匹配,即每个顶点都被匹配。
如果个数不相等,可以通过补点加0边实现转化。
⼀般使⽤KM算法解决该问题。
3 最⼩覆盖⼆分图的最⼩覆盖分为最⼩顶点覆盖和最⼩路径覆盖:①最⼩顶点覆盖是指最少的顶点数使得⼆分图G中的每条边都⾄少与其中⼀个点相关联,⼆分图的最⼩顶点覆盖数=⼆分图的最⼤匹配数;②最⼩路径覆盖也称为最⼩边覆盖,是指⽤尽量少的不相交简单路径覆盖⼆分图中的所有顶点。
⼆分图的最⼩路径覆盖数=|V|-⼆分图的最⼤匹配数;4 最⼤独⽴集最⼤独⽴集是指寻找⼀个点集,使得其中任意两点在图中⽆对应边。
对于⼀般图来说,最⼤独⽴集是⼀个NP完全问题,对于⼆分图来说最⼤独⽴集=|V|-⼆分图的最⼤匹配数。
匈牙利算法示例ppt
0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0
解矩阵得到2个最优指派方案;(1)甲-B,乙-C, 丙--E,丁-D,戊-A;(2)甲-B,乙-D,丙-E,丁-C, 戊-A。所需时间为minz=7+6+9+6+4=32
3 匈牙利法的改进
实际上很多效率矩阵用上述匈牙利法进行求解时必 须经要经历第(3)和第(4),但在这些效率矩阵 中有很大部分用改进后的匈牙利法就不需要经历第 (3)和第(4)步即可求解。
12 7 9 7 9
8
9
6
6
6
7 17 12 14 9
15 14 6 6 10
4 10 7 10 9
Min
4
7
66
6
从上面可以看到列中最小个数之和为7,而行中最小个数之 和为9,。即应该先从系数矩阵的每列元素中减去该列的最小 元素。
8 0 3 1 3 0
4
2
0 0 0 0
3 10 6 8 3 3 11 7 0 0 0 0
或
4
Ø
2 7
◎
3
Ø
5
◎Ø
◎ 11
7 3
Ø ◎ Ø
1 4 3
它具有n个独立0元素,这就得到了最优解,相应的解矩阵为
0 1 0 0 0
0 1 0 0 0
0 0 0 1 0
0 0 1 0 0
0 0 0 0 1 0 0 1 0 0
或
0 0 0 0 1 0 0 0 1 0
1 0 0 0 0
1 0 0 0 0
7 ◎ 2 Ø 2
7 ◎ 2 Ø 24ຫໍສະໝຸດ Ø3 8◎
第五讲 分配问题(指派问题)与匈牙利法
n 件工作
y1 , y2 , … , yn 。 已 知 工 人 xi 完 成 工 作 yj 所 需 时 间 为 cij
分派方案满足下述两个条件: 分派方案满足下述两个条件:
1.任一个工人都不能去做两件或两件以上的工作 1.任一个工人都不能去做两件或两件以上的工作 2.任一件工作都不能同时接受两个及以上的工人去做 2.任一件工作都不能同时接受两个及以上的工人去做
min
4 7 6 6 6
8 7 15 12 4 0 4 3 11 8 0 3 0 11 8 9 17 14 10 7 0 2 10 7 3 0 1 7 7 3 9 12 8 7 6 ⇒ 0 3 6 2 1 ⇒ 0 2 3 2 1 7 14 6 10 6 0 1 8 0 4 0 0 5 0 4 0 3 6 4 0 0 2 3 4 0 9 12 10 6 6 min 0 1 3 0 0
5 0 2 0 2 3 0 0 0 10 5 7 9 8 0 0 0 6 3 6
9 8 5 4 0
尝试对所有零元素做标记,确定独立零元素。 尝试对所有零元素做标记,确定独立零元素。 标记 独立零元素
(2)逐列检验 )
与行检验类似:对只有一个未标记的零元素的列 用记号O将该 与行检验类似:对只有一个未标记的零元素的列,用记号 将该 零元素圈起,然后将被圈起的零元素所在行 零元素圈起,然后将被圈起的零元素所在行的其他未标记的零元 素用记号/划去 划去。 素用记号 划去。 重复列检验,直到没有未被标记的零元素或至少有两个未被标记 没有未被标记的零元素 重复列检验,直到没有未被标记的零元素或 的零元素为止。 的零元素为止。
分配问题(指派问题) 第5讲 分配问题(指派问题)与匈牙利法
分配问题与匈牙利法
0 1 0 4
2 0 4 3
3 7 1 0
4 5 4 ◎
◎
1
Ø
4
2 ◎ 4 3
3
7
1
Ø
找到 3 个独立零元素
但m=3< n= 4
分配问题与匈牙利法
Page 7
3)作最少的直线覆盖所有0元素
4 5 4 ◎ √
◎
1
Ø
4
2 ◎ 4 3
3
最少时间为105。
Page 20
分配问题与匈牙利法
Page 12
2 ◎0 4 2 4 √
2 5 Ø0 3 ◎0
选择直线外的最小元素 为1;直线外元素减1, 直线交点元素加1,其
4 1 ◎0 1 3 他保持不变。
4 Ø0 3 5 1 √
◎0 2 3 0Ø 5
√
分配问题与匈牙利法
Page 13
1 ◎0 3 1 3 √
Page 17
3. 一个人可做几件事的指派问题
若某人可做几件事,则将该人化作相同的几个“人”来接受指派,且费用系数 取值相同。
例如:丙可以同时任职A和C工作,求最优指派方案。
甲 15 20 10 9
乙
6
5
4
7
丙 10 13 16 17
15 20 10 9
6
5
4
7
若仍有没有划圈的0元素,且同行(列)的0元素至少有两个,比 较这行各0元素所在列中0元素的数目,选择0元素少这个0元素 加圈(表示选择性多的要“礼让”选择性少的)。然后划掉同行同 列的其它0元素。可反复进行,直到所有0元素都已圈出和划掉为 止。
分配问题匈牙利算法的Matlab实现
分配问题匈牙利算法的Matlab实现function [x,fVal]=Hungary(C)% 输出参数:% x--Decision Varables, n*n矩阵% fval--Objective function Value% 输入参数:% C--效益矩阵c=C; %将效益矩阵暂存入c,以下的操作将针对c进行[iMatrixRow,iMatrixCol]=size(c);%求约化矩阵:将效益矩阵的每行每列各减去其最小值c=c-repmat(min(c,[],2),1,iMatrixCol);c=c-repmat(min(c,[],1),iMatrixRow,1);%进行试分配,求出初始分配方案while 1%对所有零元素均已画⊙(inf)或画×(-inf)c=CircleOrCross(c);%划线,决定覆盖所有零元素的最少直线数iIndepentZeroNum=find(c==inf);if length(iIndepentZeroNum)==iMatrixRowbreak;else[Row,Col]=line(c);end%查找没有被直线段覆盖的元素中的最小元素,并存入fMininumVlaue中fMininumVlaue=inf;for i=1:iMatrixRowfor j=1:iMatrixColif Row(i)~=1 && Col(j)~=1 && c(i,j)<fmininumvlaue fMininumVlaue=c(i,j);endendend%修改约化矩阵中的相关数据for i=1:iMatrixRowfor j=1:iMatrixColif c(i,j)==inf||c(i,j)==-infc(i,j)=0;endif Row(i)~=1 && Col(j)~=1c(i,j)=c(i,j)-fMininumVlaue;endif Row(i)==1 && Col(j)==1c(i,j)=c(i,j)+fMininumVlaue;endendendend%返回分配方案及目标函数值fVal=0;for i=1:iMatrixRowfor j=1:iMatrixColif c(i,j)==infx(i,j)=1;fVal=fVal+C(i,j); elsex(i,j)=0;endendend</fmininumvlaue。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
应用模型举例
【例1.1】最优生产计划问题。某企业在计划 期内计划生产甲、乙、丙三种产品。这些 产品分别需要要在设备A、B上加工,需要 消耗材料C、D,按工艺资料规定,单件产 品在不同设备上加工及所需要的资源如表 1.1所示。已知在计划期内设备的加工能力 各为200台时,可供材料分别为360、300公 斤;每生产一件甲、乙、丙三种产品,企 业可获得利润分别为40、30、50元,假定 市场需求无限制。企业决策者应如何安排 生产计划,使企业在计划期内总的利润收 入最大?
怎样辨别一个模型是线性规划模型?其特征是: 1.解决问题的目标函数是多个决策变量的线性函 数,通常是求最大值或 最小值; 2.解决问题的约束条件是一组多个决策变量 的线 性不等式或等式。
书本还例举了诸如合理用料问题;配料问题;投资问题;均衡配 套生产问题等.
• 线性规划的一般模型
max(min)Z c1x1 c2 x2 L cn xn
人 工作 甲 乙 丙 丁
译英文 2 10 译日文 15 4 译德文 13 14 译俄文 4 15
97 14 8 16 11 13 9
1.1 数学模型 Mathematical Model
线性规划(Linear Programming,缩写为LP)是运筹学的重 要分支之一,在实际中应用得较广泛,其方法也较成熟, 借助计算机,使得计算更方便,应用领域更广泛和深入。
•
一般地,假设线性规划数学模 型中,有m个约束,有n个决策 变量xj, j=1,2…,n,目标函数的
a11x 1 a12 x2 L a1n xn (或 , )b1
La21Lx1
L
a22 x2 L LLLL
a2n xn LLL
L
(或 , )b2 LLLL
变量系数用cj表示, cj称为价值 系数。约束条件的变量系数用 aij表示,aij称为工艺系数。约
同时,我们有一个追求目标,即获
取最大利润。于是可写出目标函数z
为相应的生产计划可以获得的总利
润:z=40x1+30x2 +50x3
【解】设x1、x2、x3 分别为甲、乙、丙三种产品 的产量数学模型为:
mZ a 4 x x 1 0 3x 2 0 5x 3 0
3 x1 x 2 2 x3 200
x3 ≤ 200;
对设备B,三种产品生产所占用的机
时数不能超过200,于是我们可以得到不 等式: 2x1+2x2+4x3 ≤ 200;
对材料C,三种产品生产所消耗的材 料数不能超过360公斤,于是我们可 以得到不等式: 4x1+5x2+x3 ≤ 360; 对材料D ,三种产品生产所消耗的 材料数不能超过300,于是我们可以 得到不等式: 2x1+3x2+5x3 ≤ 300;
. . am1x1 + am2x2 + … + amnxn = bm
x1 ,x2 ,… ,xn ≥ 0
注:本教材默认目标函数是 max
可以看出,线性规划的标准形式 有如下四个特点:目标最大化、
约束为等式、决策变量xj均非负、 右端常数bi项非负。
对于各种非标准形式的线性 规划问题,我们总可以通过以下 变换,将其转化为标准形式
2 4
x1 x1
2 x2 5x2
4 x3 200 x3 360
2
x1
3x2
5
x3
300
x1 0, x 2 0, x 3 0
产品 甲 乙
资源 设备A
31
设备B
22
材料C
45
最优解X=(50,30,10);Z=3400 材料D
23
利润(元/件) 40 30
丙 现有资 源
2 200 4 200 1 360 5 300 50
am1
x1
am2 x2
L
amn x n (或 , )bm
x j 0, j 1, 2,L , n
束条件右端的常数用bi表示,
n
bi称为资源限量。则线性规划 max(min)Z c j x j
数学模型的一般表达式可写成
j 1
在实际中一般xj≥0,但有时xj≤0或xj 无符号限制。
n
aij x j
(或 , )bi
j1
i 1, 2,L , n
x j 0, j 1, 2,L , n
1.2 线性规划的标准型 Standard form of LP
Max(或Min)z = c1x1 + c2x2 + … + cnxn
a11x1 + a12x2 + … + a1nxn = b1 a21x1 + a22x2 + … + a2nxn = b2
表1.1 产品资源消耗
产品
资源
甲
乙
丙 现有资源
设备A
3
1
2
200
设备B2ຫໍສະໝຸດ 24200
材料C
4
5
1
360
材料D
2
3
5
300
利润(元/件) 40
30
50
分析:设变量xi为第i种(甲、乙、丙) 产品的生产件数(i=1,2,3)。根据
题意,我们知道三种产品的生产受到设
备能力(机时数)的限制。对设备A,三
种产品生产所占用的机时数不能超过200, 于是我们可以得到不等式: 3x1+ x2+ 2
这是一个典型的利润最大化的生产计划问题。其标 中,“Max”是英文单词“Maximize”的缩写,含义 为“最大化”;例题中x1、x2、x3 称为决策变量; 不等式组称为约束条件,( 有时在它前面加“s.t.” 表示“subject to”的意思,意思是“满足 于……”);函数Z称为目标函数,随讨论问题的不 同,Z也可以求最小值. • 线性规划的数学模型由 决策变量 Decision variables ;目标函数Objective function及约束 条件Constraints构成。称为三个要素。
线性规划 例题5 分配问题及匈牙利算法
一、问题的提出和数学模型
例:有一份说明书,要分别译 成英、日、德、俄四种文字, 交与甲、乙、丙、丁四个人去 完成,因各人专长不同,他们 完成翻译不同文字所需要的时 间(小时)如表所示。规定每 项工作只能交与其中的一个人 完成,每个人只能完成其中的 一项工作。
问:如何分配,能使所需的 总时间最少?