- 1、本文档共15页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
运 筹 学
课
程
设
计
报
告
专业:
班级:
学号:
姓名:
2012年6月20日
目录
题目。
算法思想。
算法步骤。
算法源程序。
算例和结果。
结论与总结。
题目:匈牙利法求解指派问题。
算法思想。
匈牙利解法的指派问题最优解的以下性质:
设指派问题的系数矩阵为C=,若将C的一行(或列)各元素分别减去一个常数k(如该行或列的最小元素),则得到一个新的矩阵C’=。那么,以C’位系数矩阵的指派问题和以C位系数矩阵的原指派问题有相同最优解。
由于系数矩阵的这种变化不影响约束方程组,只是使目标函数值减少了常数k,所以,最优解并不改变。必须指出,虽然不比要求指派问题系数矩阵中无负元素,但在匈牙利法求解指派问题时,为了从以变换后的系数矩阵中判别能否得到最优指派方案,要求此时的系数矩阵中无负元素。因为只有这样,才能从总费用为零这一特征判定此时的指派方案为最优指派方案。
算法步骤。
(1)变换系数矩阵,使各行和各列皆出现零元素。
各行及各列分别减去本行及本列最小元素,这样可保证每行及每列中都有零元素,同时,也避免了出现负元素。
(2)做能覆盖所有零元素的最少数目的直线集合。
因此,若直线数等于n,则以可得出最优解。否则,转第(3)步。
对于系数矩阵非负的指派问题来说,总费用为零的指派方案一定是最优指派方案。在第(1)步的基础上,若能找到n个不同行、不同列的零元素,则对应的指派方案总费用为零,从而是最优的。当同一行(或列)上有几个零元素时,如选择其一,则其与的零元素就不能再被选择,从而成为多余的。因此,重要的是零元素能恰当地分布在不同行和不同列上,而并在与它们的多少。但第(1)步并不能保证这一要求。若覆盖所有零元素的最少数目的直线集合中的直线数目是n,则表明能做到这一点。
此时,可以从零元素的最少的行或列开始圈“0”,每圈一个“0”,同时把位于同行合同列的其他零元素划去(标记为),如此逐步进行,最终可得n个位于不同行、不同列的零元素,他们就对应了最优解;若覆盖所有零元素的最少数目的直线集合中的元素个数少于n,则表明无法实现这一点。需要对零元素的分布做适当调整,这就是第(3)步。
(3) 变换系数矩阵,是未被直线覆盖的元素中出现零元素。回到第(2)步。
在未被直线覆盖的元素中总有一个最小元素。对未被直线覆盖的元素所在的行(或列)中各元素都减去这一最小元素,这样,在未被直线覆盖的元素中势必会出现零元素,但同时却又是以被直线覆盖的元素中出现负元素。为了消除负元素,只要对它们所在的列(或行)中个元素都加上这一最小元素(可以看作减去这一最小元素的相反数)即可。
算法源程序。
#includeiostream.h
#includestdlib.h
#define m 5
int input(int M[m][m])
{
int i,j;
for(i=0;im;i++)
{ cout请输入系数矩阵第i+1行元素:endl;
for(j=0;jm;j++)
cinM[i][j];
}
cout系数矩阵为:endl;
for(i=0;im;i++)
{ for(j=0;jm;j++)
coutM[i][j]\t;
coutendl;
}
return M[m][m];
}
int convert(int M[m][m])
{ int x[m],y[m];
int i,j;
for(i=0;im;i++)
{ x[i]=M[i][0];
for(j=1;jm;j++)
{ if(M[i][j]x[i])
x[i]=M[i][j];
}
}
for(i=0;im;i++)
for(j=0;jm;j++)
M[i][j]-=x[i];
for(j=0;jm;j++)
{ y[j]=M[0][j];
for(i=0;im;i++)
{ if(M[i][j]y[j])
y[j]=M[i][j];
}
}
for(i=0;im;i++)
for(j=0;jm;j++)
M[i][j]-=y[j];
cout对系数矩阵各行各列进行变换得:endl;
for(i=0;im;i++)
{ for(j=0;jm;j++)
coutM[i][j]\t;
coutendl;
}
return M[m][m];
}
int exchange(int M[m][m])
{ int i,j,n;
cout进行行变换输入0,进行列变换输入其他任意键:endl;
cinn;
if(n==0)
cout分别输入要变换的行及该
您可能关注的文档
- 圆锥体积(等底等积 等高等积).ppt
- 医院消毒隔离要求.doc
- 医院消毒与隔离2011.ppt
- 医院消毒与隔离2015.ppt
- 阅读下面材料,根据要求写一篇不少于800字的作文。60分.ppt
- 越南的革新开 放和中国的改革开 放之比较.ppt
- 粤教版科学三年级下册《材料的性质》课件.ppt
- 匀晶、共晶、包晶.ppt
- 孕婴市场环境分析.doc
- 运筹学 1--3 导论 预测 决策.doc
- GB/T 32151.38-2024温室气体排放核算与报告要求 第38 部分:水泥制品生产企业.pdf
- 中国国家标准 GB/T 32151.38-2024温室气体排放核算与报告要求 第38 部分:水泥制品生产企业.pdf
- 《GB/T 22069-2024燃气发动机驱动空调(热泵)机组》.pdf
- GB/T 22069-2024燃气发动机驱动空调(热泵)机组.pdf
- 中国国家标准 GB/T 22069-2024燃气发动机驱动空调(热泵)机组.pdf
- 中国国家标准 GB/T 11064.1-2024碳酸锂、单水氢氧化锂、氯化锂化学分析方法 第1部分: 碳酸锂含量的测定 滴定法.pdf
- GB/T 11064.1-2024碳酸锂、单水氢氧化锂、氯化锂化学分析方法 第1部分: 碳酸锂含量的测定 滴定法.pdf
- 《GB/T 11064.1-2024碳酸锂、单水氢氧化锂、氯化锂化学分析方法 第1部分: 碳酸锂含量的测定 滴定法》.pdf
- GB/T 1148-2024内燃机 铝活塞.pdf
- 中国国家标准 GB/T 1148-2024内燃机 铝活塞.pdf
文档评论(0)