1、第四节 01型整数规划,一、0-1变量及其应用 某些特殊问题,只做是非选择,故变量设置简化为0或1, 1代表选择,0代表不选择。,一、01规划数学模型,例:固定费用问题 有三种产品被用于生产三种产品,资源量、产品单件费用、 资源消耗量以及生产产品的固定费用。要求制定一个生产计 划,总收益最大。,产品,资源,解:xj是生产第j种产品的产量。 总收益等于销售减去所生产的产品的总费用。建立数学模型时,无法确定某种产品是否生产,不能确定相应的固定费用是否发生,用0-1变量解决此问题。,分析: 如果生产第j种产品,xj0. 约束条件xj=Mjyj,yj=1; 如果不生产第j种产品,xj=0.约束条件xj
2、=Mjyj,yj=1或0。当yj=1不利于目标函数的最大化,因此在最优解必然是yj=0。,例 含有相互排斥的约束条件的问题,设工序B的每周工时约束条件为0.3x1+0.5x2150,式(1) 现有一新的加工方式,相应的每周工时约束条件为0.2x1+0.4x2120 ,式(2) 如果工序B只能选择一种,那么(1)和(2)变成相互排斥的约束条件.,当y1=1,y2=0;采用新工艺,(2)式成立;,多余的约束,约束条件组,在约束条件中保证了在P个0-1变量中有p-q个1,q个0;凡取值=0的yi对应的约束条件为原约束条件,凡取值=1的yi对应的约束条件将自然满足,因而为多余.,例 工件排序问题,使用
3、4台机床加工3件产品.各个产品的机床加工顺序以及产品i在机床j上的加工时间 aij见表.由于某种原因,产品2的加工总是件不得超过d.现在要求各件产品在机床上的加工方案,使在最段时间内加工完全部产品.,解 设xij表示产品i在机床j 上开始加工的时间(i=1,2,3;j=1,2,3,4),1.同一件产品在不同机床上的加工顺序约束 同一件产品在下一台机床上的加工的开始时间不早于在上一台机床上加工的结束时间,故应有 产品1:x11+a11x12 ; x13+a13x14 产品2:x21+a21x22 ; x23+a23x24 产品3:x32+a32x33 ;,2.每一台机床对不同产品的加工顺序约束
4、一台机床在工作中,如果已经开始加工还没有结束,则不能开始加工另一件产品.对于机床1,先加工1不能加工2. 为了容纳两种相互排斥的约束条件,对于每台机床,分别引入0-1变量:,机床1:x11+a11x21+My1 ; x21+a21x11+M(1-y1) 机床2:x22+a22x32+My2 ; x32+a32x22+M(1-y2) 机床3:x13+a13x33 +My3 ; x33+a33x13+M(1-y3) 机床4:x14+a14x24 +My4 ; x24+a24x14+M(1-y4) 当y1=0,表示机床1先加工产品1,后加工产品2;当y1=1,表示机床1先加工产品2,后加工产品1.,
5、3.产品2的加工总时间约束 产品2的开始加工时间x21,结束家工时间为x24+a24,所以 x24+a24-x21d,4.目标函数的建立 由于三件产品的加工时间分别为x14+a14,x24+a24,x33+a33,全部产品的实际加工时间为:w=max(x14+a14,x24+a24,x33+a33) Minz=W st. Wx14+a14, W x24+a24, W x33+a33,二、0-1型整数规划的解法,求解思路: 检测可行解的目标函数值,根据其目标函数值可以产生一个过滤条件,对于目标函数数值比它差的变量组合删除,这样有效减少运算次数,使最优解快速找到。,解:求解过程可以列表表示:,在求
6、解0-1整数规划问题,为了进一步减少运算量,常按照目标函数中各个变量系数的大小顺序重新排列各个变量,以便于最优解有可能较早出现。 对于最大化问题,可以按照从小到大的顺序排列; 对于最小化问题,可以按照从大到小的顺序排列;,运算36次,运算30次,练习:使用一等价的整数规划表述下面的问题,小结: 0-1型整数规划的应用。 作业: 5.9(1),第五节 指派问题,一、指派问题的标准形式及其数学模型 标准形式(以人和事):有n个人作n件事情,已知第j人做第j件事情的费用Cij; 要求:确定人和事之间一一对应的指派问题。,例1:某商业公司计划开5家新商店,商业公司决定由5家建筑公司分别承建。已知建筑公
7、司Ai(i=1,25)对新商店Bj(j=15)的建筑费用报价Cij.问题:商业公司对5家建筑公司如何分配任务,才能使总的建筑费用最少?,Bj,Cij,Ai,指派问题解法:匈牙利解法 解法思想: 若从系数矩阵C的任何一行(列)各元素中分别减去一个常数K(K可正可负)得到新矩阵C,则以C为系数矩阵的指派问题与原问题有相同的解,但最优值比原问题最优值小K。匈牙利法条件:MIN、i=j 、Cij0,匈牙利法的主要步骤: 步骤1:变换系数矩阵,使在各行各列都出现零元素。(1)从矩阵C的每行元素减去该行的最小元素;(2)再从所得矩阵的每列中减去该列最小元素。 步骤2:在变换后的系数矩阵中确定独立零元素。以
8、最少数目的 水平线和垂直线划去所有的零元素。如果所用的直线等于行或 列数,则结束指派。否则继续。 步骤3:找到没有被划去的最小的元素,所有没有被划中的元素 减去这一最小值。在被直线覆盖的元素中出现负元素,为消除 负元素,则要加上这一最小值。再返回到第二步。最后根据零 元素的位置,确定最优分配方案。,第一步 造0 各行各列减其最小元素,求解:,第二步 圈0 寻找不同行不同列的0元素,圈之。 所在行和列其它0元素划掉,第四步 确定方案划线 没有打行上画一条横线; 有打列上画一条竖线; 得到覆盖所有零元素的最小直线数目。,未被直线覆盖的元素中出现零元素,将第二行和第三行所有元素减去最小元素1,第一列
9、元素出现负值,对其所有元素+1;加圈,5个独立零元素,确定问题的最优解,最优指派方案:A1-B3;A2-B2;A3-B1;A4-B4,A5-B5 minZ=7+9+6+6+6=34,三、非标准形式的指派问题,非标准指派型问题的标准化MAX 、ij、Cij0、Cij 缺省,1、目标利润MAX: MAXMIN ?找出最大元素,分别用它去减每一个非缺省元素。新矩阵对应的目标即为MIN,而且也使Cij0。 2、C 的缺省:缺省意味着不胜任,因此在缺省处填上充分大的正数,使成本很大。例如:某事不需要某人做。 3、 ij:添上一行(一列)零元素。例如:人和事不等,增加虚拟的人或事,其所对应的系数为零。,例
10、2 :求下表所示指派问题(利润)的最大值,标准化,(1) 本例中最大元素为3,除缺省外,其余元素均被3去减; (2) 在缺省处填上充分大的正数M;(3) 行比列少一,因此填上一行0元素(1) (2) (3),0 1 5 2 1 5 3 4 2 3,0 1 5 2 1 5 3 M M 4 2 3,0 1 5 2 1 5 3 M M 4 2 3 0 0 0 0,-1 0 4 1,-1 3 1 M,A-乙 B-甲 C-丙,练习:对于上述例题1,如果不让技术力量弱的A4,A5做,让技术力量强的A1,A2,A3承建。根据实际情况,可以允许每家公司承建一家或两家商店,求使总费用最小的指派方案。 反映投标费用的系数矩阵为:,B1 B2 B3 B4 B5,A1 A2 A3,由于每家公司最多可以承建2家商店,把每家公司化成2家同样的公司,系数矩阵为:,B1 B2 B3 B4 B5,A1 A1 A2 A2 A3 A3,6人5件事,增加1件“虚 ” 事B6,2 0 9 5 2 -1,2 0 9 5 2 -1,A1-B1;A1-B3;实际承建2家商店 A2-B2;A2-B6 ;实际承建1家商店 A3-B4;A3-B5 ;实际承建2家商店,小结 1、指派问题的数学模型。 2、指派问题的计算步骤。 作业 5.13(1), 5.14,