面试顺序问题
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
这个问题的0-1非线性规划模型(当然所有变量还 有非负约束,变量yik还有0-1约束) : Min T s.t. xij+ tij xi, j+1 (i=1, 2, 3, 4;j=1, 2) xij+ tij–xkjTyik (i, k=1, 2, 3, 4; j=1, 2, 3; i<k) xkj+ tkj–xijT(1–yik) (i, k=1, 2, 3, 4; j=1, 2, 3; i<k) xi3+ ti3T (i=1, 2, 3, 4)
优化建模
5.4 面试顺序与消防车调度问题
优化建模
面试顺序问题
例5.5 有4名同学到一家公司参加三个阶段的面 试:公司要求每个同学都必须首先找公司秘书初试, 然后到部门主管处复试,最后到经理处参加面试,并 且不允许插队(即在任何一个阶段4名同学的顺序是 一样的)。由于4名同学的专业背景不同,所以每人 在三个阶段的面试时间也不同,如表5-5所示(单位: 分钟)。这4名同学约定他们全部面试完以后一起离 开公司。假定现在时间是早晨8:00,请问他们最早 何时能离开公司?
求解模型 这个模型可以如下输入LINGO:
Model: min =T; T >= x13+ t13; T >= x23+ t23; T >= x33+ t33; T >= x43+ t43; x11+ t11 <= x12; x12+ t12 <= x13; x21+ t21 <= x22; x22+ t22 <= x23; x31+ t31 <= x32; x32+ t32 <= x33; x41+ t41 <= x42; x42+ t42 <= x43;
xkj+ tkj–xijT(1–yik) (i, k=1, 2, 3, 4; j=1, 2, 3; i<k)
优化建模
可以将非线性的优化目标改写为如下线性优化目标: Min T s.t. T x13+ t13 T x23+ t23 T x33+ t33 T x43+ t43
优化建模
Reduced Cost 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.9999970 0.000000 0.000000 0.000000 -83.99950 0.000000 83.99950 -83.99950 0.000000 0.000000
Variable X21 T21 X22 T22 X31 T31 X32 T32 X41 T41 X42 T42 Y12 Y13 Y14 Y23 Y24 Y34
Value 21.00000 10.00000 36.00000 20.00000 37.50000 20.00000 57.75000 16.00000 0.000000 8.000000 11.00000 10.00000 0.000000 0.000000 1.000000 0.000000 1.000000 1.000000
优化建模
表5-5 面试时间要求 秘书初试 主管复试 13 15 10 20 8 20 10 10 经理面试 20 18 10 15
同学甲 同学乙 同学丙 同学丁
优化建模
Baidu Nhomakorabea
建立模型 实际上,这个问题就是要安排4名同学的面试顺 序,使完成全部面试所花费的时间最少。 记tij为第i名同学参加第j阶段面试需要的时间(已 知),令xij表示第i名同学参加第j阶段面试的开始时刻 (不妨记早上8:00面试开始为0时刻)(i=1, 2, 3, 4;j=1, 2, 3),T为完成全部面试所花费的最少时间。 优化目标为
x32+ t32 - x42<= T*y34; x42+ t42 - x32<= T*(1-y34); x33+ t33 - x43<= T*y34; x43+ t43 - x33<= T*(1-y34); t11=13; t12=15; t13=20; t21=10; t22=20; t23=18; t31=20; t32=16; t33=10; t41=8; t42=10; t43=15;
Min T Max xi 3 ti 3
i
优化建模
约束条件: a. 时间先后次序约束(每人只有参加完前一个阶 段的面试后才能进入下一个阶段):
xij+ tij xi,j+1 (i=1, 2, 3, 4;j=1, 2) b.每个阶段j同一时间只能面试1名同学:用0-1变 量yik表示第k名同学是否排在第i名同学前面(1表示是, 0表示否),则 xij+ tij–xkjTyik (i, k=1, 2, 3, 4; j=1, 2, 3; i<k)
优化建模
x11+ t11 - x21<= T*y12; x21+ t21 - x11<= T*(1-y12); x12+ t12 - x22<= T*y12; x22+ t22 - x12<= T*(1-y12); x13+ t13 - x23<= T*y12; x23+ t23 - x13<= T*(1-y12); x11+ t11 - x31<= T*y13; x31+ t31 - x11<= T*(1-y13); x12+ t12 - x32<= T*y12; x32+ t32 - x12<= T*(1-y13); x13+ t13 - x33<= T*y13; x33+ t33 - x13<= T*(1-y13); x11+ t11 - x41<= T*y14; x41+ t41 - x11<= T*(1-y14); x12+ t12 - x42<= T*y14; x42+ t42 - x12<= T*(1-y14);
! 被面试者集合; 1 2 3 4~ ! 面试阶段的集合; 1 2 3~ ! 已知的面试所需要的时间; 13 15 20 10 20 18 20 16 10 8 10 15 ! 数据结束;
优化建模
LINGO模型如下:
Model: Title 面试问题; SETS: ! Person = 被面试者集合,Stage = 面试阶段的集合; Person/@FILE(exam0505.txt)/; Stage/@FILE(exam0505.txt)/; ! T = 已知的面试所需要的时间,X = 面试开始时间; PXS(Person,Stage): T, X; ! Y(i,k) = 1: k排在i前,0:否则; PXP(Person,Person)|&1 #LT# &2: Y; ENDSETS DATA: T=@FILE(exam0505.txt); ENDDATA
优化建模
[obj] min =MAXT; ! MAXT是面试的最后结束时间; MAXT >= @max(PXS(i,j)|j#EQ#@size(stage): x(i,j)+t(i,j)); ! 只有参加完前一个阶段的面试后才能进入下一个阶段; @for(PXS(i,j)|j#LT#@size(stage):[ORDER]x(i,j)+t(i,j)<x(i,j+1)); ! 同一时间只能面试1名同学; @for(Stage(j): @for(PXP(i,k):[SORT1]x(i, j)+t(i, j)-x(k,j)<MAXT*Y(i,k) ); @for(PXP(i,k):[SORT2]x(k,j)+t(k,j)-x(i, j)<MAXT*(1-Y(i,k)) ); ); @for(PXP: @bin(y)); End
优化建模
求解这个模型,得到的结果与前面的完全相同。 可以很清楚地看到,使用LINGO建模语言的集 合和属性概念,得到的模型具有非常好的结构性,反 映了相应的优化模型的本质,目标、决策变量、约束 一清二楚,容易阅读和理解,而且还可以让数据与程 序完全分离,这种优越性是LINDO软件无法与之相 比的。
优化建模
优化建模
x13+ t13 - x43<= T*y14; x43+ t43 - x13<= T*(1-y14); x21+ t21 - x31<= T*y23; x31+ t31 - x21<= T*(1-y23); x22+ t22 - x32<= T*y23; x32+ t32 - x32<= T*(1-y23); x23+ t23 - x33<= T*y23; x33+ t33 - x23<= T*(1-y23); x21+ t21 - x41<= T*y24; x41+ t41 - x21<= T*(1-y24); x22+ t22 - x42<= T*y24; x42+ t42 - x22<= T*(1-y24); x23+ t23 - x43<= T*y24; x43+ t43 - x23<= T*(1-y24); x31+ t31 - x41<= T*y34; x41+ t41 - x31<= T*(1-y34);
Variable T X13 T13 X23 T23 X33 T33 X43 T43 X11 T11 X12 T12 Value 84.00000 36.00000 20.00000 56.00000 18.00000 74.00000 10.00000 21.00000 15.00000 8.000000 13.00000 21.00000 15.00000 Reduced Cost 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
优化建模
@bin(y12); @bin(y13); @bin(y14); @bin(y23); @bin(y24); @bin(y34); End
优化建模
优化建模
用LINGO求解得到:
Local optimal solution found at iteration: 4357 Objective value: 84.00000
优化建模
即所有面试完成至 少需要84分钟,面 试顺序为4-1-2-3 (即丁-甲-乙-丙)。 早上8:00面试开始, 最早9:24面试可以 全部结束。
优化建模
同样,如果利用LINGO的建模语言,可以编写 一个更一般的LINGO模型。先准备一个数据文件(文 本文件exam0505.txt),其中的内容如下: