指派问题1
lingo 指派问题

Lingo 作业题1、指派问题设有n 个人, 计划作n 项工作, 其中ij c 表示第i 个人做第j 项工作的收益,求一种指派方式,使得每个人完成一项工作,使总收益最大.现6个人做6项工作的最优指派问题,其收益矩阵如表所示,请给出合理安排.一、问题分析根据第一题的题意我们可以知道,此题的最终目标是让我们建立一种数学模型来解决这个实际生活中的问题,此题意简而言之就是为了解决6个人做6项工作的指派最优问题,从而使题目中的ij C 收益等达到所需要的目的。
在题目中曾提到:每个人完成一项工作。
其意思就是每人只能做一项工作且每项工作只能做一人做。
二、符号说明此题属于最优指派问题,引入如下变量:题目中说:ij C 表示第i 个人做第j 项工作的收益。
例如56C 则表示第5个人做第6项工作。
即6611max ij ij i j z xy c ===∑∑s.t.:611ij i C==∑ ,j=1,2,3,···,6611ij j C==∑ ,i=1,2,3,···,6 01ij C =或 ,i,j=1,2,3,···,6此题需要求出最大值最优(最大值),即需要使用max ,表示最大。
在编程过程中“@bin (x )”是“限制x 为0或1”。
三、建立模型此题属于最优指派问题,与常见的线性问题极为类似。
因此,使用Lingo软件。
由于“每人只能做一项工作且每项工作只能做一人做”故采用0-1规划求得优。
四、模型求解(一)常规程序求解Lingo输入框:max=20*c11+15*c12+16*c13+5*c14+4*c15+7*c16+17*c21+15*c22+33*c23+12*c24+8*c25+6*c26+9*c31+12*c32+18*c33+16*c34+30*c35+13*c36+12*c41+8*c42+11*c43+27*c44+19*c45+14*c46+0*c51+7*c52+10*c53+21*c54+10*c55+32*c56+0*c61+0*c62+0*c63+6*c64+11*c65+13*c66;c11+c12+c13+c14+c15+c16=1;c21+c22+c23+c24+c25+c26=1;c31+c32+c33+c34+c35+c36=1;c41+c42+c43+c44+c45+c46=1;c51+c52+c53+c54+c55+c56=1;c61+c62+c63+c64+c65+c66=1;c11+c21+c31+c41+c51+c61=1;c12+c22+c32+c42+c52+c62=1;c13+c23+c33+c43+c53+c63=1;c14+c24+c34+c44+c54+c64=1;c15+c25+c35+c45+c55+c65=1;c16+c26+c36+c46+c56+c66=1;@bin(c11);@bin(c12);@bin(c13);@bin(c14);@bin(c15);@bin(c16);@bin(c21);@bin(c22);@bin(c23);@bin(c24);@bin(c25);@bin(c26);@bin(c31);@bin(c32);@bin(c33);@bin(c34);@bin(c35);@bin(c36);@bin(c41);@bin(c42);@bin(c43);@bin(c44);@bin(c45);@bin(c46);@bin(c51);@bin(c52);@bin(c53);@bin(c54);@bin(c55);@bin(c56);@bin(c61);@bin(c62);@bin(c63);@bin(c64);@bin(c65);@bin(c66);Lingo输出(结果)框:Global optimal solution found.Objective value: 142.0000Extended solver steps: 0Total solver iterations: 0Variable Value Reduced CostC11 1.000000 -20.00000C12 0.000000 -15.00000C13 0.000000 -16.00000C14 0.000000 -5.000000C15 0.000000 -4.000000C21 0.000000 -17.00000 C22 0.000000 -15.00000 C23 1.000000 -33.00000 C24 0.000000 -12.00000 C25 0.000000 -8.000000 C26 0.000000 -6.000000 C31 0.000000 -9.000000 C32 0.000000 -12.00000 C33 0.000000 -18.00000 C34 0.000000 -16.00000 C35 1.000000 -30.00000 C36 0.000000 -13.00000 C41 0.000000 -12.00000 C42 0.000000 -8.000000 C43 0.000000 -11.00000 C44 1.000000 -27.00000 C45 0.000000 -19.00000 C46 0.000000 -14.00000 C51 0.000000 0.000000 C52 0.000000 -7.000000 C53 0.000000 -10.00000 C54 0.000000 -21.00000 C55 0.000000 -10.00000 C56 1.000000 -32.00000 C61 0.000000 0.000000 C62 1.000000 0.000000 C63 0.000000 0.000000 C64 0.000000 -6.000000 C65 0.000000 -11.00000 C66 0.000000 -13.00000Row Slack or Surplus Dual Price1 142.0000 1.0000002 0.000000 0.0000003 0.000000 0.0000004 0.000000 0.0000005 0.000000 0.0000006 0.000000 0.0000007 0.000000 0.0000008 0.000000 0.0000009 0.000000 0.00000010 0.000000 0.00000011 0.000000 0.00000013 0.000000 0.000000(二)循环语句求解Lingo输入框:model:sets:gz/A1..A6/:a;ry/B1..B6/:b;yw(gz,ry):xy,x;endsetsdata:a=1,1,1,1,1,1;b=1,1,1,1,1,1;xy=20 15 16 5 4 7,17 15 33 12 8 6,9 12 18 16 30 13,12 8 11 27 19 14,0 7 10 21 10 32,0 0 0 6 11 13;enddatamax=@sum(yw:xy*x);@for(gz(i):@sum(ry(j):x(i,j))=1);@for(ry(j):@sum(gz(i):x(i,j))=1);@for(yw(i,j):@bin(x(i,j)));EndLingo输出(结果)框Global optimal solution found.Objective value: 142.0000Extended solver steps: 0Total solver iterations: 0Variable Value Reduced Cost A( A1) 1.000000 0.000000 A( A2) 1.000000 0.000000 A( A3) 1.000000 0.000000 A( A4) 1.000000 0.000000 A( A5) 1.000000 0.000000 A( A6) 1.000000 0.000000 B( B1) 1.000000 0.000000 B( B2) 1.000000 0.000000B( B4) 1.000000 0.000000 B( B5) 1.000000 0.000000 B( B6) 1.000000 0.000000 XY( A1, B1) 20.00000 0.000000 XY( A1, B2) 15.00000 0.000000 XY( A1, B3) 16.00000 0.000000 XY( A1, B4) 5.000000 0.000000 XY( A1, B5) 4.000000 0.000000 XY( A1, B6) 7.000000 0.000000 XY( A2, B1) 17.00000 0.000000 XY( A2, B2) 15.00000 0.000000 XY( A2, B3) 33.00000 0.000000 XY( A2, B4) 12.00000 0.000000 XY( A2, B5) 8.000000 0.000000 XY( A2, B6) 6.000000 0.000000 XY( A3, B1) 9.000000 0.000000 XY( A3, B2) 12.00000 0.000000 XY( A3, B3) 18.00000 0.000000 XY( A3, B4) 16.00000 0.000000 XY( A3, B5) 30.00000 0.000000 XY( A3, B6) 13.00000 0.000000 XY( A4, B1) 12.00000 0.000000 XY( A4, B2) 8.000000 0.000000 XY( A4, B3) 11.00000 0.000000 XY( A4, B4) 27.00000 0.000000 XY( A4, B5) 19.00000 0.000000 XY( A4, B6) 14.00000 0.000000 XY( A5, B1) 0.000000 0.000000 XY( A5, B2) 7.000000 0.000000 XY( A5, B3) 10.00000 0.000000 XY( A5, B4) 21.00000 0.000000 XY( A5, B5) 10.00000 0.000000 XY( A5, B6) 32.00000 0.000000 XY( A6, B1) 0.000000 0.000000 XY( A6, B2) 0.000000 0.000000 XY( A6, B3) 0.000000 0.000000 XY( A6, B4) 6.000000 0.000000 XY( A6, B5) 11.00000 0.000000 XY( A6, B6) 13.00000 0.000000 X( A1, B1) 1.000000 -20.00000 X( A1, B2) 0.000000 -15.00000 X( A1, B3) 0.000000 -16.00000 X( A1, B4) 0.000000 -5.000000X( A1, B6) 0.000000 -7.000000 X( A2, B1) 0.000000 -17.00000 X( A2, B2) 0.000000 -15.00000 X( A2, B3) 1.000000 -33.00000 X( A2, B4) 0.000000 -12.00000 X( A2, B5) 0.000000 -8.000000 X( A2, B6) 0.000000 -6.000000 X( A3, B1) 0.000000 -9.000000 X( A3, B2) 0.000000 -12.00000 X( A3, B3) 0.000000 -18.00000 X( A3, B4) 0.000000 -16.00000 X( A3, B5) 1.000000 -30.00000 X( A3, B6) 0.000000 -13.00000 X( A4, B1) 0.000000 -12.00000 X( A4, B2) 0.000000 -8.000000 X( A4, B3) 0.000000 -11.00000 X( A4, B4) 1.000000 -27.00000 X( A4, B5) 0.000000 -19.00000 X( A4, B6) 0.000000 -14.00000 X( A5, B1) 0.000000 0.000000 X( A5, B2) 0.000000 -7.000000 X( A5, B3) 0.000000 -10.00000 X( A5, B4) 0.000000 -21.00000 X( A5, B5) 0.000000 -10.00000 X( A5, B6) 1.000000 -32.00000 X( A6, B1) 0.000000 0.000000 X( A6, B2) 1.000000 0.000000 X( A6, B3) 0.000000 0.000000 X( A6, B4) 0.000000 -6.000000 X( A6, B5) 0.000000 -11.00000 X( A6, B6) 0.000000 -13.00000Row Slack or Surplus Dual Price1 142.0000 1.0000002 0.000000 0.0000003 0.000000 0.0000004 0.000000 0.0000005 0.000000 0.0000006 0.000000 0.0000007 0.000000 0.0000008 0.000000 0.0000009 0.000000 0.00000010 0.000000 0.00000012 0.000000 0.00000013 0.000000 0.000000五、模型结果通过以上的应用Lingo模型求解,得出结论:第1项工作由第1个人来完成。
运筹学__指派问题

•下面要证明M m. 如图假定覆盖所有0元素的m条直线 有r行、c列,m=r+c.
所有r行上不在j1,…,jc列上的0元 素个数≥ r,这些0元素至少有r个位
于不同列
同理:所有c列上不在i1,…,ir行上
j1 j2
的0元素个数≥c ,且这些0元素至
少有c个位于不同
i1 i2
ir jc
若上述两部分0个数总和为S,则S≥m;其中有m 个,又它们必无重复元素,彼此独立,则SM,故 有m≤M, 故可得M=m.
覆盖所有“0”元素的最少直线数 = 独立的“0”元素 的最多个数
推论1:覆盖所有“0”元素的直线数≥ 不同行不同列的“0”元素的最多个数(m)
推论2:覆盖所有“0”元素的最少直线数≥ 不同行不同列的“0”元素的个数
定理2说明: 1. 只要表中含有不同行或不同列的“0”元素,
都可以通过直线覆盖的方式来找到它们 2. 当覆盖直线的最少条数达到m条时,
(二)算法的基本原理 匈牙利数学家狄·康尼格(D·Konig)证明的两个定理
定理1 如果从指派问题效率矩阵[cij]的每一行元素中分别 减去(或加上)一个常数ui(被称为该行的位势), 从每一列分别减去(或加上)一个常数vj(称为该列的位势) 得到一个新的效率矩阵[bij], 若其中bij=cij-ui-vj,
一、指派问题的数学模型
(一)举例
例7: 有一份中文说明书, 要分别译成英、日、德、俄四种文字, 分别记作E 、 J 、 G 、 R ,交与甲、乙、丙、丁 四个人去完成. 因个人专长不同, 他们完成翻译不同语种的说明书所需的时间(h)如表所示. 应如何指派,使四个人分别完成这四项任务总时间为最小?
任务 人员
将其代入目标函数中得到zb=0,它一定是最小值。 ❖ 这就是以(bij)为系数矩阵的指派问题的最优解。
CASE02-(指派问题案例答案1)

a)Assign one scientist to each of the five projects to maximize the total number of bid points.To maximize the scientists preferences you want to assign Dr. Tsai to lead project Up,Dr. Kvaal to lead project Stable, Dr. Zuner to lead project Choice, Dr. Mickey to leadproject Hope, and Dr. Rollins to lead project Release.b) Dr. Rollins is not available, so his “Supply” in cell I14 is reduced to zero. Since nowmust allow a project to not be done, the constraints in rows 15 to 17 becomeTotalAssigne d(B15:F15) ≤ Demand(B17:F17) rather than =.Project Up would not be done.c) Since Dr. Zooner or Dr. Mickey can lead two projects, their “Supply” in column I ischanged to 2 and the corresponding constraint changed to ≤ (in order to allow them to do either one or two projects).Dr. Kvaal leads project Stable, Dr. Zuner leads project Choice, Dr. Tsai leads project Release, and Dr. Mickey leads the projects Hope and Up.d) Under the new bids of Dr. Zuner the assignment does not change:e) Certainly Dr. Zuner could be disappointed that she is not assigned to project Stable,especially when she expressed a higher preference for that project than the scientist assigned. The optimal solution maximizes the preferences overall, but individual scientists may be disappointed. We should therefore make sure to communicate the reasoning behind the assignments to the scientists.f) Whenever a scientist cannot lead a particular project we constrain the correspondingchanging cell (E10, F10, C13, E13, and B14) to equal 0.Dr. Kvaal leads project Stable, Dr. Zuner leads project Choice, Dr. Tsai leads project Release, Dr. Mickey leads project Up, and Dr. Rollins leads project Hope.g) When we want to assign two assignees to the same task we need to duplicate that task.Project Up is led by Dr. Mickey, Stable by Dr. Kvaal, Choice by Dr. Zuner, Hope by Dr. Arriaga and Dr. Santos, and Release by Dr. Tsai and Dr. Rollins.h) No. Maximizing overall preferences does not maximize individual preferences.Scientists who do not get their first choice may become resentful and therefore lack the motivation to lead their assigned project. For example, in the optimal solution of part(g), Dr. Santos clearly elected project Release as his first choice, but he was assigned tolead project Hope.In addition, maximizing preferences ignores other considerations that should befactored into the assignment decision. For example, the scientist with the highestpreference for a project may not be the scientist most qualified to lead the project.。
指派问题(经典运筹学)

1 1 c 11 2 c 21 … i c i1 … n c n1 2
c 12 c 22 ci2 cn2
…
1 2 3 4
6 20 10
21
25 14 0
5
x6
解:x i
1
2
0
不在第i个地区建站
i=1,2, …,6
Z表示全区消防站总数
2 6 1 x3 x4 1 s.t x3 x4 x5 1 x x x 1 4 5 6 x i 0 ,1 i 1, 2 , , 6
一、决策问题与0-1变量
决策变量
xi
x i 是否做第
i 件事 i 1, 2 , , n
1 0
做第i件事 不做第i件事
x1 x 2 x n k
n件事中必须做k件并只做k件事 n件事中最多做k件事 n件事中至少做k件事
x1 x 2 x n k x1 x 2 x n k
当n=4时, 有16变量,8个约束方程
例:现有4份工作,4个人应聘,由 于各人技术专长不同,他们承担 各项工作所需费用如下表所示, 且规定每人只能做一项工作,每 一项工作只能由一人承担,试求 使总费用最小的分派方案。
工作
Z表示总费用
max Z 3 x11 5 x12 4 x13 5 x14 6 x 21 7 x 22 6 x 23 8 x 24 8 x 31 9 x 32 8 x 33 10 x 34 10 x 41 10 x 42 9 x 43 11 x 44
lingo指派问题

实用文档大全Lingo 作业题1、指派问题设有n 个人, 计划作n 项工作, 其中ij c 表示第i 个人做第j 项工作的收益,求一种指派方式,使得每个人完成一项工作,使总收益最大.现6个人做6项工作的最优指派问题,其收益矩阵如表所示,请给出合理安排.一、问题分析根据第一题的题意我们可以知道,此题的最终目标是让我们建立一种数学模型来解决这个实际生活中的问题,此题意简而言之就是为了解决6个人做6项工作的指派最优问题,从而使题目中的ij C 收益等达到所需要的目的。
在题目中曾提到:每个人完成一项工作。
其意思就是每人只能做一项工作且每项工作只能做一人做。
二、符号说明此题属于最优指派问题,引入如下变量:题目中说:ij C 表示第i 个人做第j 项工作的收益。
例如56C 则表示第5个人做第6项工作。
即6611max ij ij i j z xy c ===∑∑s.t.:611iji C==∑ ,j=1,2,3,···,6611ijj C==∑ ,i=1,2,3,···,6 01ij C =或 ,i,j=1,2,3,···,6此题需要求出最大值最优(最大值),即需要使用max ,表示最大。
在编程过程中“bin (x )”是“限制x 为0或1”。
三、建立模型此题属于最优指派问题,与常见的线性问题极为类似。
因此,使用Lingo 软实用文档件。
由于“每人只能做一项工作且每项工作只能做一人做”故采用0-1规划求得优。
四、模型求解(一)常规程序求解Lingo输入框:max=20*c11+15*c12+16*c13+5*c14+4*c15+7*c16+17*c21+15*c22+33*c23+12*c24+8*c25+6*c26+9*c31+12*c32+18*c33+16*c34+30*c35+13*c36+12*c41+8*c42+11*c43+27*c44+19*c45+14*c46+0*c51+7*c52+10*c53+21*c54+10*c55+32*c56+0*c61+0*c62+0*c63+6*c64+11*c65+13*c66;c11+c12+c13+c14+c15+c16=1;c21+c22+c23+c24+c25+c26=1;c31+c32+c33+c34+c35+c36=1;c41+c42+c43+c44+c45+c46=1;c51+c52+c53+c54+c55+c56=1;c61+c62+c63+c64+c65+c66=1;c11+c21+c31+c41+c51+c61=1;c12+c22+c32+c42+c52+c62=1;c13+c23+c33+c43+c53+c63=1;c14+c24+c34+c44+c54+c64=1;c15+c25+c35+c45+c55+c65=1;c16+c26+c36+c46+c56+c66=1;bin(c11);bin(c12);bin(c13);bin(c14);bin(c15);bin(c16);bin(c21);bin(c22);bin(c23);bin(c24);bin(c25);bin(c26);bin(c31);bin(c32);bin(c33);bin(c34);bin(c35);bin(c36);bin(c41);bin(c42);bin(c43);bin(c44);bin(c45);bin(c46);bin(c51);bin(c52);bin(c53);bin(c54);bin(c55);bin(c56);bin(c61);bin(c62);bin(c63);bin(c64);bin(c65);bin(c66);Lingo输出(结果)框:Global optimal solution found.Objective value: 142.0000Extended solver steps: 0Total solver iterations: 0Variable Value Reduced CostC11 1.000000 -20.00000C12 0.000000 -15.00000C13 0.000000 -16.00000C14 0.000000 -5.000000C15 0.000000 -4.000000大全实用文档大全C16 0.000000 -7.000000 C21 0.000000 -17.00000 C22 0.000000 -15.00000 C23 1.000000 -33.00000 C24 0.000000 -12.00000 C25 0.000000 -8.000000 C26 0.000000 -6.000000 C31 0.000000 -9.000000 C32 0.000000 -12.00000 C33 0.000000 -18.00000 C34 0.000000 -16.00000 C35 1.000000 -30.00000 C36 0.000000 -13.00000 C41 0.000000 -12.00000 C42 0.000000 -8.000000 C43 0.000000 -11.00000 C44 1.000000 -27.00000 C45 0.000000 -19.00000 C46 0.000000 -14.00000 C51 0.000000 0.000000 C52 0.000000 -7.000000 C53 0.000000 -10.00000 C54 0.000000 -21.00000 C55 0.000000 -10.00000 C56 1.000000 -32.00000 C61 0.000000 0.000000 C62 1.000000 0.000000 C63 0.000000 0.000000 C64 0.000000 -6.000000 C65 0.000000 -11.00000 C66 0.000000 -13.00000Row Slack or Surplus Dual Price1 142.0000 1.0000002 0.000000 0.0000003 0.000000 0.0000004 0.000000 0.0000005 0.000000 0.0000006 0.000000 0.0000007 0.000000 0.0000008 0.000000 0.0000009 0.000000 0.00000010 0.000000 0.00000011 0.000000 0.000000实用文档大全12 0.000000 0.00000013 0.000000 0.000000(二)循环语句求解Lingo输入框:model:sets:gz/A1..A6/:a;ry/B1..B6/:b;yw(gz,ry):xy,x;endsetsdata:a=1,1,1,1,1,1;b=1,1,1,1,1,1;xy=20 15 16 5 4 7,17 15 33 12 8 6,9 12 18 16 30 13,12 8 11 27 19 14,0 7 10 21 10 32,0 0 0 6 11 13;enddatamax=sum(yw:xy*x);for(gz(i):sum(ry(j):x(i,j))=1);for(ry(j):sum(gz(i):x(i,j))=1);for(yw(i,j):bin(x(i,j)));EndLingo输出(结果)框Global optimal solution found.Objective value: 142.0000Extended solver steps: 0Total solver iterations: 0Variable Value Reduced CostA( A1) 1.000000 0.000000A( A2) 1.000000 0.000000A( A3) 1.000000 0.000000A( A4) 1.000000 0.000000A( A5) 1.000000 0.000000A( A6) 1.000000 0.000000B( B1) 1.000000 0.000000B( B2) 1.000000 0.000000实用文档大全B( B3) 1.000000 0.000000B( B4) 1.000000 0.000000B( B5) 1.000000 0.000000B( B6) 1.000000 0.000000 XY( A1, B1) 20.00000 0.000000 XY( A1, B2) 15.00000 0.000000 XY( A1, B3) 16.00000 0.000000 XY( A1, B4) 5.000000 0.000000 XY( A1, B5) 4.000000 0.000000 XY( A1, B6) 7.000000 0.000000 XY( A2, B1) 17.00000 0.000000 XY( A2, B2) 15.00000 0.000000 XY( A2, B3) 33.00000 0.000000 XY( A2, B4) 12.00000 0.000000 XY( A2, B5) 8.000000 0.000000 XY( A2, B6) 6.000000 0.000000 XY( A3, B1) 9.000000 0.000000 XY( A3, B2) 12.00000 0.000000 XY( A3, B3) 18.00000 0.000000 XY( A3, B4) 16.00000 0.000000 XY( A3, B5) 30.00000 0.000000 XY( A3, B6) 13.00000 0.000000 XY( A4, B1) 12.00000 0.000000 XY( A4, B2) 8.000000 0.000000 XY( A4, B3) 11.00000 0.000000 XY( A4, B4) 27.00000 0.000000 XY( A4, B5) 19.00000 0.000000 XY( A4, B6) 14.00000 0.000000 XY( A5, B1) 0.000000 0.000000 XY( A5, B2) 7.000000 0.000000 XY( A5, B3) 10.00000 0.000000 XY( A5, B4) 21.00000 0.000000 XY( A5, B5) 10.00000 0.000000 XY( A5, B6) 32.00000 0.000000 XY( A6, B1) 0.000000 0.000000 XY( A6, B2) 0.000000 0.000000 XY( A6, B3) 0.000000 0.000000 XY( A6, B4) 6.000000 0.000000 XY( A6, B5) 11.00000 0.000000 XY( A6, B6) 13.00000 0.000000 X( A1, B1) 1.000000 -20.00000 X( A1, B2) 0.000000 -15.00000 X( A1, B3) 0.000000 -16.00000 X( A1, B4) 0.000000 -5.000000实用文档大全X( A1, B5) 0.000000 -4.000000 X( A1, B6) 0.000000 -7.000000 X( A2, B1) 0.000000 -17.00000 X( A2, B2) 0.000000 -15.00000 X( A2, B3) 1.000000 -33.00000 X( A2, B4) 0.000000 -12.00000 X( A2, B5) 0.000000 -8.000000 X( A2, B6) 0.000000 -6.000000 X( A3, B1) 0.000000 -9.000000 X( A3, B2) 0.000000 -12.00000 X( A3, B3) 0.000000 -18.00000 X( A3, B4) 0.000000 -16.00000 X( A3, B5) 1.000000 -30.00000 X( A3, B6) 0.000000 -13.00000 X( A4, B1) 0.000000 -12.00000 X( A4, B2) 0.000000 -8.000000 X( A4, B3) 0.000000 -11.00000 X( A4, B4) 1.000000 -27.00000 X( A4, B5) 0.000000 -19.00000 X( A4, B6) 0.000000 -14.00000 X( A5, B1) 0.000000 0.000000 X( A5, B2) 0.000000 -7.000000 X( A5, B3) 0.000000 -10.00000 X( A5, B4) 0.000000 -21.00000 X( A5, B5) 0.000000 -10.00000 X( A5, B6) 1.000000 -32.00000 X( A6, B1) 0.000000 0.000000 X( A6, B2) 1.000000 0.000000 X( A6, B3) 0.000000 0.000000 X( A6, B4) 0.000000 -6.000000 X( A6, B5) 0.000000 -11.00000 X( A6, B6) 0.000000 -13.00000Row Slack or Surplus Dual Price1 142.0000 1.0000002 0.000000 0.0000003 0.000000 0.0000004 0.000000 0.0000005 0.000000 0.0000006 0.000000 0.0000007 0.000000 0.0000008 0.000000 0.0000009 0.000000 0.00000010 0.000000 0.000000实用文档大全11 0.000000 0.00000012 0.000000 0.00000013 0.000000 0.000000五、模型结果通过以上的应用Lingo模型求解,得出结论:第1项工作由第1个人来完成。
第4章整数规划——指派问题

13 11 2 0 10 11 57 4 4 2 13 7 0 0 6 9 5 32 0 0
0 0 X 1 0
0 0 1 1 0 0 0 0 0 0 1 0
故可得到指派问题的最优解X,这样 安排能使总的维修时间最少,维修时间为 z=4+4+9+11=28(小时)。
X (2)
都是指派问题的最优解。
4 指派问题
4.3 指派问题的求解 指派问题既是一类特殊的整数规划问题,又是特殊的运输问 题,因此可以用多种相应的解法来求解,然而这些解法都没有充 分利用指派问题的特殊性质,有效地减少计算量,直到1955年库 恩(W. W. Kuhn)提出的匈牙利法才有效地解决了指派问题。 匈牙利法的理论基础 定义2 独立零元素组 在效率矩阵中,有一组在不同行不同 列的零元素,称为独立零元素组,其每个元素称为独立零元素。 5 0 2 0 2 3 0 0 C 【例4】 已知效率矩阵 0 5 6 7 4 8 0 0 求其独立零元素组。
4 指派问题
0 , 不 指 派 第 i小 组 维 修 第 j台 机 床 x ij ( i , j 1, 2 ,3, 4 ) 1, 指 派 第 i 小 组 维 修 第 j 台 机 床 机车 该问题的数学模型为: 1 2 3 4 4 小组 min z cij xij i 1 j 1 1 x11 x12 x13 2 x11 15 x12 2 x21 x22 x23 任务约束 4 x 1, j 1, 2 , 3 , 4 3 x31 x32 x33 ij i 1 4 x41 x42 x43 人员约束 4 x ij 1, i 1, 2 , 3, 4 j 1 x ij 0 或 1 i , j 1 , 2 , 3 , 4
匈牙利法解决人数与任务数不等的指派问题1

匈牙利法解决人数与任务数不等的指派问题于凯重庆科技学院经济管理学院物流专业重庆沙坪坝区摘要:本文将讨论运筹学中的指派问题,而且属于非标准指派问题,即人数与任务数不相等的指派问题,应当视为一个多目标决策问题,首先要求指派给个人任务数目两两之间相差不能超过1,其次要求所需总时间最少,并且给出了该类问题的求解方法。
关键词:运筹学指派问题匈牙利算法系数矩阵解矩阵引言:在日常的生产生活中常遇到这样的问题:有n项任务,有n个人员可以去承担这n 项任务,但由于每位人员的特点与专长不同,各对象完成各项任务所用的时间费用或效益不同;有因任务性质要求和管理上需要等原因,每项任务只能由一个人员承担来完成,这就涉及到应该指派哪个人员去完成哪项任务,才能使完成n项任务花费总时间最短,总费用最少,产生的总效益最佳。
我们把这类最优匹配问题称为指派问题或分配问题。
1.指派问题的解法——匈牙利法早在1955年库恩(w.w.ku.hn)就提出了指派问题的解法,该方法是以匈牙利数学家康尼格(koning)提出的一个关于矩阵中0元素的定理为基础,因此得名匈牙利法(The Hungonrian Method of Assignment)1.1匈牙利解法的基本原理和解题思路直观的讲,求指派问题的最优方案就是要在n阶系数矩阵中找出n个分布于不用行不同列的元素使得他们的和最小。
而指派问题的最优解又有这样的性质:若从系数矩阵C(ij)的一行(列)各元素都减去该行(列)的最小元素,得到新矩阵CB(ij),那么以CB(ij)为系数矩阵求得的最优解和原系数矩阵C(ij)求得的最优解相同。
由于经过初等变换得到的新矩阵CB(ij)中每行(列)的最小元素均为“○”,因此求原指派问题C(ij)的最优方案就等于在新矩阵CB(ij)中找出n个分布于不同行不同列的“○”元素(简称为“独立○元素”),这些独立○元素就是CB(ij)的最优解,同时与其对应的原系数矩阵的最优解。
指派问题1

匈牙利指派问题 有 n 项不同的任务,恰好 n 个人可分别承担这些 任务,但由于每人特长不同,完成各项任务的效率等情 况也不同。现假设必须指派每个人去完成一项任务,怎 样把 n 项任务指派给 n 个人,使得完成 n 项任务的 总的效率最高,这就是指派问题。也是一个简单的0—1 整数规划。即:
i 1 这个人做第 件事 xi 0 这个人不做第i件事
(1) 从只有一个0元素的行(列)开始,给这个0元素加圈,记作◎ 。然 后划去◎ 所在列(行)的其它0元素,记作Ø ;这表示这列所代表的任务 已指派完,不必再考虑别人了。 (2) 给只有一个0元素的列(行)中的0元素加圈,记作◎;然后划去◎ 所在行的0元素,记作Ø . (3) 反复进行(1),(2)两步,直到尽可能多的0元素都被圈出和划掉为 止。
第三步:做最少直线覆盖所有0元素
2 1 ◎ 0 2 2
5
◎ 0
5 3 4 2 3 Ø 0 ◎ 0 3
√
加2
3 3 ◎ 0 0 Ø 6 2 5 2 0 Ø 3
√ 减2
第四步,变换矩阵(bij)
以增加0元素:没有被 直线覆盖的所有元素中
的最小元素为2,然后
√ 减2 打√各行都减去2;打 √各列都加上2,得如 下矩阵,并转第二步进 行试指派:
Global optimal solution found. Objective value: Extended solver steps: Total solver iterations: Variable X11 X12 X13 X14 X15 X21 X22 X23 X24 X25 X31 X32 X33 X34 X35 X41 X42 X43 X44 X45 X51 X52 X53 X54 X55 Row 1 2 3 4 5 6 7 8 9 10 11
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
x a a a a x a a D= a a x a a a a x
只要输入:
syms x a; %申明x,a为代量 A=[x,a,a,a; a,x,a,a; a,a,x,a; a,a,ax] ; det(A)
Ans= x^4-6*x^2+8*x*a^3-3*a^4
常用matlab矩阵运算
• • • • • 加减乘除、数乘等 求逆 inv(A) 行列式值 det(A) 最简形 R=rref(A) 特征值,特征向量:[V,D]=eig(A)
第二步:做最少覆盖0元的直线
(1) 对无圈的行打勾 (下面横线无圈)直线就覆盖了所有加圈 的0元所在的行) (2) 在已打勾的行中对有删除标记所在的列打勾;(未被行线覆盖 的作竖线) (3) 在已打勾的列中对有圈标记所在的行打勾;(用列线覆盖过的 就吧要行线了)
(4) 重复 (2), (3), 直到无勾可打为止. (5) 对没有打勾的行画一横线, 对打勾的列画 一竖线. • 这样剩下没有画线的元素中没有零元素. • • •
问题模型
A : a ij 表示第 i 个人做第
n
j 件事所用的时间 j 件事,只取
n
X : x ij 表示第 i 个人是否做第
0 ,1
min( 或 max ) z =
n
∑∑
i =1
j =1
a ij x(工时) ij
) ∑ x ij = 1 ( 每人做一件事 = jn 1 s .t . ∑ x ij = 1 ( 每事由一人做 ) i =1 1 x ij 只取 0 或者 ( i , j = 1 L n )
• [X,FVAL,EXITFLAG,OUTPUT,LAMBDA] = LINPROG(f,A,b,Aeq,beq,LB,UB) • min f‘*x such that • Aeq*x = beq • A*x <= b , x >= 0. • LB <= X <= UB • 用一个分支定界法的代码来说明一下 • 可以求全整型或混合的 • Y=min f*x subject to :G*x<=h Geq*x=heq
2 ) 在没有红圈的右下角如果有 0 5 零,一定是新的独立零元素 3 7 3 3 ) 用直线覆盖红圈所在行
0 5 3 7 3
11 8 0 3 0 4 0 0 4 0 0 2 7 3 0 1 2 1 0 2
11 8 0 3 0 4 0 0 4 0 0 2 7 3 0 1 2 1 0 2
第三步:加0元
• 求出其中的最小元素. 各行都减去这个最小 元素(同一个数), 这时在已被划横线的元 素中的零元素变成负元素, 在它们所在的列 中加上这个最小元素. 还不够所需0元,转 步骤2.
• 在求最优值时,还要回到原来的矩阵去, 除非你每次都记录下了所做的加减的总数。 • 第三步中有点麻烦,可以改为:划去后的 矩阵中全部减去最小数,这样就不麻烦了, 不过就必须回原效率矩阵,对于全矩阵来 说加减已经乱了。为什么可以这么做呢? 因为剩下的部分的最优已经无关于划线部 分了,(自己的想法而已,可不理会)
• 证明:我借的那本书上,是给出了证明,不过我读得好像我的想法不太符合它的思想《运筹学。中 国人民出版社》。所以就不用了。另一种方法就是用数学归纳法,不过一层又一层,挺麻烦的。再 有就是用下面要说的构造直线的过程说明。还有就是利用对换了行或列号是不会改变k,l的值,然 后就变成一个左上角一个矩形中每行每列都有0元,所以最大不同行列的0元个数l和覆盖0元的最小 直线数k都等于这个矩形的行列最小的数目。
end if nargin<4,
• Geq=[];
end upper=inf;c=f;x0=x;A=G;b=h;Aeq=Geq;beq=heq;ID=id; %变量处理,不用管
• ftemp=ILP(lb(:),ub(:));
• x=opt;y=upper;
• • • • • • • •
%下面是子函数 function ftemp=ILP(vlb,vub) global upper opt c x0 A b Aeq beq ID options; [x,ftemp,how]=linprog(c,A,b,Aeq,beq,vlb,vub,x0,options); if how <=0 return; end;%标志<=0 ,则不收敛或达到迭代次数,结束 则不收敛或达到迭代次数, if ftemp-upper>0.00005 %in order to avoid error %得到的解比想象的大
(V的列为特征向量) 求秩:rank(A) 迹(特征值之和)trace(A)
解多项式方程
3x −7x +5x +2x −18= 0
5 4 2
P=[3,-7,0,5,2,-18]; A=compan(p); X1=eig(A) X2=roots(p) %求零点,与上面的结果是一样的。
整数规划matlab指令
aij自然是非负的,如果有这种情况:每件事都有 一个人来做 的时候所需的时间是0,且所有的事分配,可 以找到这样不冲 突的人,这样,总时间 就是0,自然就是最优的。
由此,每行每列减去最小数,总可以得到每行每列至少有一个0
第二个定理
• 覆盖0元的最小直线(行或列)数k,等于 位于不同行且不同列的0元的最大个数l。
•
If nargin<10,
• • • options=optimset({}); options.Display='off'; rgeScale='off'; end id=ones(size(f));
• • • • • • • • • • • • •
if nargin<9,
4 ) 在直线未覆盖处找零,如果没有零停止,否则 在直线未覆盖处找零,如果没有零停止, 会出现以下两种情况, 会出现以下两种情况,其中黑实圈圈住的是新零
0 5 3 7 3 11 8 0 3 0 4 0 0 4 0 0 2 7 3 0 1 2 1 0 2 0 5 3 7 3 11 8 0 3 0 4 0 0 4 0 0 2 7 3 0 0 2 1 0 2
指派问题的解法
先得出0元: 每行每列减去各自最小数 (1). 将系数矩阵C={Cij}的各行减去本行中的最小元素形成矩阵Cr (2). 将系数矩阵Cr的各列减去本列中的最小元素形成矩阵Cc
• 第一步:试指派
Cc ( ) , , 在Cc 中如果有某行(或列)上只有一个没有标记的零元素, 在这零元素上做圈标记, 同 时把零元素所在的列(或行)上的零元素做删除标记. 如此反复进行, 直到所有的零元素 都被做上标记或划去为止. 如果在以上过程中的所有行和列中没有标记的零元素都不止一个时,可选0元最少的行 (列)开始,且所在列(行)上的0元最少的一个0元做圈标记, 同时对同行同列中的 其他零元素做删除标记. •如果做上圈标记的零元素个数达到 n 个, 则每行每列有且仅有一个画圈的零元素 (显然的). 令(分配)矩阵中的加圈的零元素换为一,其余的元素换为零, 就是指派 问题的最优解矩阵. 如不然, 转下步
情况一
情况二
两 种 情 况 的 处 理 方 法
0 5 3 7 3
11 8 0 3 0 4 0 0 4 0 0 2 7 3 0 1 2 1 0 2
→
0 5 3 7 3
11 8 0 3 0 4 0 0 4 0 0 2 7 3 0 1 2 1 0 2
例
4 7 C = 6 6 6
8 7 15 12 9 17 14 10 9 12 8 7 7 14 6 10 9 12 10 6
一、顺序对每行每列减去最小值产生零元素
0 0 0 0 0 4 3 11 8 0 2 10 7 3 0 3 6 2 1 →0 1 8 0 4 0 3 6 4 0 0 3 0 11 8 1 7 7 3 2 3 2 1 = C′ 0 5 0 4 2 3 4 0
第四章 4.3 指派问题(分配问题)
一. 什么是指派问题 二. 两个定理 三. 指派问题的求解
lp-norm support vector machine with CCCP
一 . 什么是指派问题
• • • • • 指派问题就是分配问题: 比如有n个人去做n件事,规定: 每件事只能有且仅有一个人来做 事与人决定时间 求最高的效率的情况
二、对给定矩阵找到最大数目的独立零元素组 1 ) 用红圈标出一些某行或某列仅有的零元素,再 用红圈标出一些某行或某列仅有的零元素, 通过行列交换把这些零换到左上角(后者非必须) 通过行列交换把这些零换到左上角(后者非必须)
0 0 0 0 0 3 0 11 8 0 7 1 7 7 3 2 3 2 1 →3 5 0 5 0 4 2 3 4 0 列 3 交 换 11 8 0 3 0 5 7 3 0 1 2 1 0 2 →3 7 0 4 0 0 4 0 0 2 行 3 交 换 11 8 0 3 0 4 0 0 4 0 0 2 7 3 0 1 2 1 0 2
•
end if nargin<8,
• x=[];
end if nargin<7 |isempty(ub),
• ub=inf*ones(size(f));
end if nargin<6 |isempty(lb),
• lb=zeros(size];
• return;
end; if max(abs(x.*ID-round(x.*ID)))<0.00005 %得到最优解(如果没错的话),因为用 %linpro 的时候已经吧实数得到最优了,这里判断整数的就好了