《0-1整数规划模型ppt课件》由会员分享,可在线阅读,更多相关《0-1整数规划模型ppt课件(30页珍藏版)》请在金锄头文库上搜索。
1、一、决策问题与0-1变量10做第i件事不做第i件事n件事中必须做k件并只做k件事n件事中最多做k件事n件事中至少做k件事做第i件事的充要条件是做第j件事做第i件事的充要条件是不做第j件事只在做了第i件事前提下才考虑是否做第j件事1例1(布点问题)某城市共有6个区,每个区都可以建消防站。市政府希望设置的消防站最少,但必须满足在城市任何地区发生火火警时,消防车要在15分钟内赶到现场。据实地测定,各区之间消防车行驶的时间见右表。地区123456101016282720210024321710316240122721428321201525527172715014620102125140 请为该市制定
2、一个最节省的计划在第i个地区建站Z表示全区消防站总数不在第i个地区建站i=1,2, ,6布点问题模型:最优解x2=1, x4=1最优值Z=22二、过滤隐枚举法(适合于变量个数较少的0-1规划)(x1 x2 x3)Z值 约束条件(1)(2)(3)(4)过滤条件(0 0 0)(0 0 1)(0 1 0)(1 0 0)(1 0 1)(1 1 0)(0 1 1)(1 1 1) 0Z0枚举法:检验可行解:32次运算-25 Z5318 36运算次数:21计算目标函数值:8次 3 例例 有一份说明书,需译成有一份说明书,需译成英、日、德、俄四种文字。英、日、德、俄四种文字。现有甲、乙、丙、丁四个人,现有甲、
3、乙、丙、丁四个人,他们将说明书译成不同文字他们将说明书译成不同文字所需的时间如下表。问应指所需的时间如下表。问应指派哪个人完成哪项工作,使派哪个人完成哪项工作,使所需的总时间最少?所需的总时间最少? 一一般般地地,有有n n项项任任务务、n n个个完完成成人人,第第i i人人完完成成第第j j项项任任务务的的代代价价为为c cijij(i,ji,j1,2,1,2,n,n)。为为了了求求得得总总代价最小的指派方案,引入代价最小的指派方案,引入0-10-1型变量型变量x xijij,并令,并令 1 1 指派第指派第i i人去完成第人去完成第j j项任务项任务 x xijij 0 0 不指派第不指派
4、第i i人去完成第人去完成第j j项任务项任务 二、指派问题二、指派问题4 指派问题的求解,最简便易行的方法是匈牙利法。指派问题的求解,最简便易行的方法是匈牙利法。 可见指派问题是可见指派问题是0-10-1型整数规划的特例。不型整数规划的特例。不难发现,指派问题也是难发现,指派问题也是运输问题的特例,其产运输问题的特例,其产地和销地数都为地和销地数都为n n,各,各产地的产量和各销地的产地的产量和各销地的销量都为销量都为1 1。 数学模型为数学模型为 Min zMin zc cijijx xijij n n x xijij1 j=1,2,1 j=1,2,n,n i=1i=1 n n x xij
5、ij1 i=1,2,1 i=1,2,n,n j=1j=1 x xijij0 0或或1 1 匈牙利法基于下面的效率矩阵:匈牙利法基于下面的效率矩阵: c11 c12 c1n (cij)= c21 c22 c2n . cn1 cn2 cnn5 匈牙利法基于这样一个明显的事实:如果系匈牙利法基于这样一个明显的事实:如果系数矩阵的所有元素满足数矩阵的所有元素满足c cijij00,而其中有,而其中有n n个位个位于不同行不同列的一组于不同行不同列的一组0 0元素,则只要令对应于元素,则只要令对应于这些这些0 0元素位置的元素位置的x xijij1 1,其余的,其余的x xijij0 0,就得,就得到最
6、优解。到最优解。 匈牙利法求解指派问题的步骤如下:匈牙利法求解指派问题的步骤如下: 0 4 2 0 例如:例如: (cij)= 2 0 7 8 3 1 5 0 0 6 0 36 第第一一步步:变变换换系系数数矩矩阵阵,使使每每行行每每列列都都出出现现0 0元元素素。(1)(1)系系数数矩矩阵阵的的各各行行分分别别减减去去各各行行中中的的最最小小元元素素;(2)(2)所得系数矩阵的各列再分别减去各列中的最小元素。所得系数矩阵的各列再分别减去各列中的最小元素。 第二步:试求最优解。第二步:试求最优解。 (1)(1)给给只只有有一一个个0 0元元素素(不不含含划划去去的的0 0)的的行行中中的的“0
7、 0”画画,划去与,划去与同列的其它同列的其它“0 0”; (2)(2)给给只只有有一一个个0 0元元素素(不不含含划划去去的的0 0)的的列列中中的的“0 0”画画,划去与,划去与同行的其它同行的其它“0 0”; (3)(3)重复重复(1)(1)、(2)(2),直到无新的,直到无新的画出。若系数矩画出。若系数矩阵中已无未画阵中已无未画也未划去的也未划去的“0 0”,则已得到最多的,则已得到最多的,转,转(5)(5);否则,便出现了;否则,便出现了0 0元素的闭回路,转元素的闭回路,转(4)(4)。 (4)(4)从从0 0元元素素的的闭闭回回路路上上任任选选一一个个“0 0”画画,划划去去其同
8、行同列的其它其同行同列的其它“0 0”,转,转(1)(1)。 (5)(5)显然,按上述步骤得到的显然,按上述步骤得到的是位于不同行不同是位于不同行不同列的。若列的。若已达已达n n个,则指派问题的最优解已得到,个,则指派问题的最优解已得到,结束计算;否则,转第三步。结束计算;否则,转第三步。7 第三步第三步:用最少的直线覆盖所有用最少的直线覆盖所有0 0元素。元素。 (1)(1)给无给无的行打的行打“”; (2)(2)给打给打行中含有行中含有0 0元素的列打元素的列打“”; (3)(3)给打给打列中含有列中含有元素的行打元素的行打“”; (4)(4)重复重复(2)(2)、(3)(3),直到无新
9、的,直到无新的“”打出。打出。 (5)(5)给没有打给没有打的行画横线,给打的行画横线,给打的列画纵线。的列画纵线。 第四步:变换系数矩阵,增加第四步:变换系数矩阵,增加0 0元素。在未被画线元素。在未被画线覆盖的其它元素中找出最小元素,各打覆盖的其它元素中找出最小元素,各打“”行减去行减去最小元素,各打最小元素,各打“”列加上最小元素,转第二步。列加上最小元素,转第二步。8v指派问题的数学模型为:9v克尼格定理 :v如果从分配问题效率矩阵aij的每一行元素中分别减去(或加上)一个常数ui,从每一列中分别减去(或加上)一个常数vj,得到一个新的效率矩阵bij,则以bij为效率矩阵的分配问题与以
10、aij为效率矩阵的分配问题具有相同的最优解。10v指派问题的求解步骤:1) 变变换换指指派派问问题题的的系系数数矩矩阵阵(cij)为为(bij),使使在在(bij)的的各各行行各各列列中都出现中都出现0元素,即元素,即 从从(cij)的每行元素都减去该行的最小元素;的每行元素都减去该行的最小元素; 再从所得新系数矩阵的每列元素中减去该列的最小元素。再从所得新系数矩阵的每列元素中减去该列的最小元素。2) 进行试指派,以寻求最优解。进行试指派,以寻求最优解。 在在(bij)中中找找尽尽可可能能多多的的独独立立0元元素素,若若能能找找出出n个个独独立立0元元素素,就就以以这这n个个独独立立0元元素素
11、对对应应解解矩矩阵阵(xij)中中的的元元素素为为1,其其余余为为0,这就得到最优解。,这就得到最优解。11v找独立0元素,常用的步骤为: 从只有一个从只有一个0元素的行开始,给该行中的元素的行开始,给该行中的0元素加圈,记作元素加圈,记作 。然后划去。然后划去 所在列的其它所在列的其它0元素,记作元素,记作 ;这表示该列所代表;这表示该列所代表的任务已指派完,不必再考虑别人了。依次进行到最后一行。的任务已指派完,不必再考虑别人了。依次进行到最后一行。 从只有一个从只有一个0元素的列开始(画元素的列开始(画 的不计在内),给该列中的的不计在内),给该列中的0元素加圈,记作元素加圈,记作;然后划
12、去;然后划去 所在行的所在行的0元素,记作元素,记作 ,表示,表示此人已有任务,不再为其指派其他任务了。依次进行到最后一列。此人已有任务,不再为其指派其他任务了。依次进行到最后一列。 若仍有没有划圈的若仍有没有划圈的0元素,且同行元素,且同行(列列)的的0元素至少有两个,比元素至少有两个,比较这行各较这行各0元素所在列中元素所在列中0元素的数目,选择元素的数目,选择0元素少这个元素少这个0元素加元素加圈圈(表示选择性多的要表示选择性多的要“礼让礼让”选择性少的选择性少的)。然后划掉同行同列。然后划掉同行同列的其它的其它0元素。可反复进行,直到所有元素。可反复进行,直到所有0元素都已圈出和划掉为
13、止。元素都已圈出和划掉为止。12 若若 元素的数目元素的数目m 等于矩阵的阶数等于矩阵的阶数n(即:(即:mn),那么这指,那么这指派问题的最优解已得到。若派问题的最优解已得到。若m n, 则转入下一步。则转入下一步。3) 用最少的直线通过所有用最少的直线通过所有0元素。其方法:元素。其方法: 对没有对没有的行打的行打“”; 对已打对已打“” 的行中所有含的行中所有含 元素的列打元素的列打“” ; 再对打有再对打有“”的列中含的列中含 元素的行打元素的行打“” ; 重复重复、直到得不出新的打直到得不出新的打号的行、列为止;号的行、列为止; 对没有打对没有打号的行画横线,有打号的行画横线,有打号
14、的列画纵线,这就得到覆盖号的列画纵线,这就得到覆盖所有所有0元素的最少直线数元素的最少直线数 l 。注注:l 应应等等于于m,若若不不相相等等,说说明明试试指指派派过过程程有有误误,回回到到第第2步步,另另行行试试指指派派;若若 lm n,表表示示还还不不能能确确定定最最优优指指派派方方案案,须须再再变变换换当当前前的的系系数矩阵,以找到数矩阵,以找到n个独立的个独立的0元素,为此转第元素,为此转第4步。步。13v4) 变换矩阵(bij)以增加0元素v在没有被直线通过的所有元素中找出最小值,没有被直线通过的所有元素减去这个最小元素;直线交点处的元素加上这个最小值。新系数矩阵的最优解和原问题仍相
15、同。转回第2步。14v例4.6 有一份中文说明书,需译成英、日、德、俄四种文字,分别记作A、B、C、D。现有甲、乙、丙、丁四人,他们将中文说明书译成不同语种的说明书所需时间如下表所示,问如何分派任务,可使总时间最少? 任务人员ABCD甲67112乙4598丙31104丁598215v解:1)变换系数矩阵,增加0元素。52)试指派(找独立)试指派(找独立0元素)元素) 找到找到 3 个独立零元素个独立零元素 但但 m = 3 n = 416v3)作最少的直线覆盖所有0元素 独立零元素的个数独立零元素的个数m等于最少等于最少直线数直线数l,即,即lm=3n=4;4)没有被直线通过的元素中选择最小值
16、为)没有被直线通过的元素中选择最小值为1,变换系数矩,变换系数矩阵,将没有被直线通过的所有元素减去这个最小元素;直阵,将没有被直线通过的所有元素减去这个最小元素;直线交点处的元素加上这个最小值。得到新的矩阵,重复线交点处的元素加上这个最小值。得到新的矩阵,重复2)步进行试指派步进行试指派17000 0 00试指派试指派得到得到4个独立零元素,个独立零元素, 所以最优解矩阵为:所以最优解矩阵为: 即完成即完成4个任务的总时间最少个任务的总时间最少为:为:241+8=1518v例4.7 已知四人分别完成四项工作所需时间如下表,求最优分配方案。 任务人员ABCD甲215134乙1041415丙914
17、1613丁7811919v解:1)变换系数矩阵,增加0元素。2)试指派(找独立)试指派(找独立0元素)元素) 独立独立0元素的个数为元素的个数为4 , 指派问题的最优指指派问题的最优指派方案即为甲负责派方案即为甲负责D工作,乙负责工作,乙负责B工作,工作,丙负责丙负责A工作,丁负责工作,丁负责C工作。这样安排工作。这样安排能使总的工作时间最少,为能使总的工作时间最少,为4491128。20v例4.8 已知五人分别完成五项工作耗费如下表,求最优分配方案。 任务人员ABCDE甲759811乙9127119丙85468丁73696戊46751121-1 -2v解:1)变换系数矩阵,增加0元素。222
18、)试指派(找独立)试指派(找独立0元素)元素) 独立独立0元素的个数元素的个数l45,故画直线调整矩阵。,故画直线调整矩阵。23选择直线外的最小元素选择直线外的最小元素为为1;直线外元素减;直线外元素减1,直线交点元素加直线交点元素加1,其,其他保持不变。他保持不变。24l =m=4 n=5选择直线外最小元素为选择直线外最小元素为1,直线外元素减,直线外元素减1,直线,直线交点元素加交点元素加1,其他保持,其他保持不变,得到新的系数矩阵。不变,得到新的系数矩阵。25总费用为总费用为=5+7+6+6+4=28=5+7+6+6+4=28注:此问题有多个最优解注:此问题有多个最优解26总费用为总费用为=7+9+4+3+5=28=7+9+4+3+5=2827总费用为总费用为=8+9+4+3+4=28=8+9+4+3+4=2828v课堂练习:用匈牙利法求解下列指派问题。练习练习1:练习练习2:29分配问题与匈牙利法4848 21 21答案答案:30