【运筹学】匈牙利法 ( 匈牙利法步骤 | 第二步 : 试指派操作示例 )

举报
韩曙亮 发表于 2022/01/11 01:00:05 2022/01/11
【摘要】 文章目录 一、指派问题求解步骤二、第二步 : 试指派操作示例 一、指派问题求解步骤 指派问题求解步骤 : 1 . 使行列出现 ...





一、指派问题求解步骤



指派问题求解步骤 :

1 . 使行列出现 0 0 0 元素 : 指派问题系数矩阵 ( c i j ) (c_{ij}) (cij) 变换为 ( b i j ) (b_{ij}) (bij) 系数矩阵 , 在 ( b i j ) (b_{ij}) (bij) 矩阵中 每行 每列 都出现 0 0 0 元素 ;

  • 每行都出现 0 0 0 元素 : ( c i j ) (c_{ij}) (cij) 系数矩阵中 , 每行都 减去该行最小元素 ;

  • 每列都出现 0 0 0 元素 : 在上述变换的基础上 , 每列元素中 减去该列最小元素 ;

注意必须先变行 , 然后再变列 , 行列不能同时进行改变 ; 否则矩阵中会出现负数 , 该矩阵中 不能出现负数 ;

2 . 试指派 : 进行尝试指派 , 寻求最优解 ;

( b i j ) (b_{ij}) (bij) 系数矩阵 中找到尽可能多的 独立 0 0 0 元素 , 如果能找到 n n n 个独立 0 0 0 元素 , 以这 n n n 个独立 0 0 0 元素对应解矩阵 ( x i j ) (x_{ij}) (xij) 中的元素为 1 1 1 , 其余元素为 0 0 0 , 这样就得到最优解 ;





二、第二步 : 试指派操作示例



【运筹学】匈牙利法 ( 匈牙利法步骤 | 第一步 : 使行列出现 0 元素示例 ) 博客示例基础上 , 已经得到了行列都有 0 0 0 元素的系数矩阵 :

( b i j ) = [ 4 5 4 0 0 1 0 4 2 0 4 3 3 7 1 0 ] (b_{ij}) =

4023510740410430 [ 4 5 4 0 0 1 0 4 2 0 4 3 3 7 1 0 ]
(bij)=4023510740410430

下面进行试指派操作 , 试指派就是找独立 0 0 0 元素 , 独立 0 0 0 元素就是位于不同行不同列的 0 0 0 元素 ;

1 1 1 行只有 1 1 1 0 0 0 , 选第 4 4 4 个 ; 每行每列只能选择 1 1 1 个 , 第 4 4 4 行第 4 4 4 列的 0 0 0 元素就不能再用了 ;

在这里插入图片描述

3 3 3 行只有 1 1 1 0 0 0 , 选第 2 2 2 个 ;

在这里插入图片描述

2 2 2 行有 2 2 2 0 0 0 , 都可以选择 , 这里选择第 1 1 1 个 ;

最终试指派结果 :
在这里插入图片描述

上面只找到了 3 3 3 个独立的 0 0 0 元素 , 应该找出 4 4 4 个独立 0 0 0 元素 ;

调整上述系数矩阵 ( b i j ) (b_{ij}) (bij) , 每行每列同时增加或减去一个数 , 且不能出现负数 ;

4 4 4 行都减去 1 1 1 , 得到如下矩阵 :

( b i j ) = [ 4 5 4 0 0 1 0 4 2 0 4 3 2 6 0 − 1 ] (b_{ij}) =

4022510640400431 [ 4 5 4 0 0 1 0 4 2 0 4 3 2 6 0 1 ]
(bij)=4022510640400431


4 4 4 行第 4 4 4 列出现了 − 1 -1 1 , 这里在将第 4 4 4 列都加上 1 1 1 , 得到如下矩阵 :

( b i j ) = [ 4 5 4 1 0 1 0 5 2 0 4 4 2 6 0 0 ] (b_{ij}) =

4022510640401540 [ 4 5 4 1 0 1 0 5 2 0 4 4 2 6 0 0 ]
(bij)=4022510640401540


第一行此时没有独立的 0 0 0 了 , 第一行再减去 1 1 1 , 得到如下矩阵 :

( b i j ) = [ 3 4 3 0 0 1 0 5 2 0 4 4 2 6 0 0 ] (b_{ij}) =

3022410630400540 [ 3 4 3 0 0 1 0 5 2 0 4 4 2 6 0 0 ]
(bij)=3022410630400540


再次进行试指派 , 找到了如下独立 0 0 0 元素 ;

在这里插入图片描述



在上述没有找到 4 4 4 个独立 0 0 0 元素后 , 由于在第 4 4 4 行没有找到 0 0 0 元素 , 开始从第 4 4 4 行进行调整 ,

调整时将非 0 0 0 的最小值转为 0 0 0 , 这样本行就多出一个 0 0 0 , 以及负数 , 负数有需要再对应列加上一个值 , 保持矩阵中所有的值都是非负的 ;

文章来源: hanshuliang.blog.csdn.net,作者:韩曙亮,版权归原作者所有,如需转载,请联系作者。

原文链接:hanshuliang.blog.csdn.net/article/details/112587204

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。