ImageVerifierCode 换一换
格式:DOCX , 页数:10 ,大小:15.65KB ,
资源ID:6158405      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-6158405.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(分支定界法的思想是首先确定目标值的上下界.docx)为本站会员(b****4)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

分支定界法的思想是首先确定目标值的上下界.docx

1、分支定界法的思想是首先确定目标值的上下界分支定界法的思想是:首先确定目标值的上下界发布人:chengxu0921发布时间:2008-7-21 18:16:27新闻类别:分支-界限法例1:设有A,B,C,D,E 5人从事j1,j2,j3,j4,j5 5项工作每人只能从事一项,它们的效益表如下:j1j2j3j4j5AB131085C59774D5E求最佳安排,使效益最高?原文代码重写如下,希望增加点可读性。program PlanJob;const MAX_SIZE = 20;type TIntArray = array1.MAX_SIZE of Integer;PNode = Node; Nod

2、e = record Job2Man: TIntArray; / Job2Mann = m, job-n assign to person-m Man2Job: TIntArray; / Man2Jobn = m, person-n assign to job-m UpperVal: Integer; / upper value JobsDep: Integer; / jobs decided, as search depth Next: PNode;end;var CurNode: PNode; / Current node NewNode: PNode; / New branch node

3、 DelNode: PNode; / for delete GoalNode: PNode; / the goal GoalMaxVal: Integer; / goal max value CurMan, CurJob: Integer; / Current Man and Job of current Node Size: Integer; / Person number, also task number Values: array1.MAX_SIZE, 1.MAX_SIZE of Integer;function CalUpperValue(ANode: PNode): Integer

4、;var Res: Integer;Man, Job: Integer;JobMaxVal: Integer;begin Res := 0; with ANode do begin for Job := 1 to Size do begin if Job = JobsDep then begin Man := Job2ManJob;Res := Res + ValuesMan, Job;Continue;end;/ else find the max value for JobJobMaxVal := 0; for Man := 1 to Size do begin if (JobMaxVal

5、 = NextNode.UpperVal);PrevNode.Next := ANode;ANode.Next := NextNode;end;procedure PrintNode(ANode: PNode);var Man, Job: Integer;AllJobAssigned: Boolean;begin AllJobAssigned := true; for Job := 1 to Size do begin Man := ANode.Job2ManJob; if 0 Man then Writeln(Job , Job, assign to man ,Man, , value ,

6、ValuesMan, Job) else AllJobAssigned := false;end;Writeln; if AllJobAssigned then Writeln(Value = , ANode.UpperVal) else Writeln(UpperVal = , ANode.UpperVal);end;begin CurNode := InitNode();GoalMaxVal := 0; repeat CurJob := CurNode.JobsDep + 1; for CurMan := 1 to Size do begin if CurNode.Man2JobCurMa

7、n 0 then Continue;/ New search branchNew(NewNode);NewNode := CurNode;NewNode.JobsDep := CurJob;NewNode.Man2JobCurMan := CurJob;NewNode.Job2ManCurJob := CurMan;NewNode.UpperVal := CalUpperValue(NewNode); if NewNode.UpperVal GoalMaxVal then Dispose(NewNode) /discard this branch if smaller than limit e

8、lse Insert(NewNode, CurNode); if CurJob GoalMaxVal then begin GoalNode := NewNode; GoalMaxVal := GoalNode.UpperVal end; / if end; / for CurMan DelNode := CurNode;CurNode := CurNode.Next;Dispose(DelNode);until (CurNode.UpperVal = GoalMaxVal) or (CurNode = nil); / end of repeat PrintNode(GoalNode);Rea

9、dln;end.input.txt:7131085597745output:Job 1 assign to man 4, value 15Job 2 assign to man 5, value 11Job 3 assign to man 2, value 10Job 4 assign to man 3, value 7Job 5 assign to man 1, value 7Value = 50如果扩展为10*10,input.txt:10597745597745运行约两分钟。output :Job 1 assign to man 9, value 15Job 2 assign to man 5, value 11Job 3 assign to man 2, value 10Job 4 assign to man 8, value 7Job 5 assign to man 6, value 7Job 6 assign to man 4, value 15Job 7 assign to man 10, value 11Job 8 assign to man 7, value 10Job 9 assign to man 3, value 7Job 10 assign to man 1, value 7Value = 100

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2