数模lingo-二次分配问题.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数模lingo-二次分配问题

例7.9(二次分配问题) 有4 名同学到一家公司参加三个阶段的面试:公司要求每个同学都必须首先找公司秘书初试,然后到部门主管处复试,最后到经理处参加面试,并且不允许插队(即在任何一个阶段4 名同学的顺序是一样的)。由于4 名同学的专业背景不同,所以每人在三个阶段的面试时间也不同,如下表所示(单位:分钟): 秘书初试 主管复试 经理面试 同学甲 13 15 20 同学乙 10 20 18 同学丙 20 16 10 同学丁 8 10 15 这4 名同学约定他们全部面试完以后一起离开公司。假定现在时间是早晨8:00, 问他们最早何时能离开公司?(建立规划模型求解) 本问题是一个排列排序问题。对于阶段数不小于3 的问题没有有效算法,也就是说对于学生数稍多一点儿(比如20)的情况是无法精确求解的。为此人们找到了很多近似算法。 这里我们建立的规划模型可以实现该问题的精确求解,但你会看到它的变量和约束是学生数的平方。因此,当学生数稍多一点儿规划模型的规模经很大,求解会花费很长时间。 程序清单如下: !三阶段面试模型; model: sets: students; !学生集三阶段面试模型; phases; !阶段集; sp(students,phases):t,x; ss(students,students) | 1 #LT# 2:y; endsets data: students = s1..s4; phases = p1..p3; t= 13 15 20 10 20 18 20 16 10 8 10 15; enddata ns=@size(students); !学生数; np=@size(phases); !阶段数; !单个学生面试时间先后次序的约束; @for(sp(I,J) | J #LT# np: x(I,J)+t(I,J)=x(I,J+1) ); !学生间的面试先后次序保持不变的约束; @for(ss(I,K): @for(phases(J): x(I,J)+t(I,J)-x(K,J)=200*y(I,K); x(K,J)+t(K,J)-x(I,J)=200*(1-y(I,K)); ) ); !目标函数; min=TMAX; @for(students(I): x(I,3)+t(I,3)=TMAX ); !把Y 定义0-1 变量; @for(ss: @bin(y)); end 程序运行结果: Global optimal solution found at iteration: 1246 Objective value: 84.00000 Variable Value Reduced Cost NS 4.000000 0.000000 NP 3.000000 0.000000 TMAX 84.00000 0.000000 T( S1, P1) 13.00000 0.000000 T( S1, P2) 15.00000 0.000000 T( S1, P3) 20.00000 0.000000 T( S2, P1) 10.00000 0.000000 T( S2, P2) 20.00000 0.000000 T( S2, P3) 18.00000 0.000000 T( S3, P1) 20.00000 0.000000 T( S3, P2) 16.00000 0.000000

文档评论(0)

liwenhua00 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档