数学建模第二章 整数规划2
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数学建模
求解指派问题的匈牙利算法实用条件:
模型求最小值,且系数矩阵C每一元素都为非负数。 如果求最大值,m ax z cijxij ,要转化为求最小值问 i j 题,转化方法为: M m ax cij 令
i,j
C M cij
mi n z ci jx i j i j
数学建模
if p0<=f x0=x1;p0=f; end end [f,g]=mengte(x2); if sum(g<=0)==4 if p0<=f x0=x2;p0=f; end end end x0,p0 toc
枚举法 p0=0; X=[]; tic for i1=0:99 X(1,1)=i1; for i2=0:99 X(2,1)=i2; for i3=0:99 X(3,1)=i3; for i4=0:99 X(4,1)=i4; for i5=0:99 X(5,1)=i5; [f,g]=mengte(X); if sum(g<=0)==4
m 个yi中只有一个能取0 值
数学建模
2.2.2 关于固定费用的问题(Fixed Cost Problem)
在讨论线性规划时,有些问题是要求使成本为最小。那 时总设固定成本为常数,并在线性规划的模型中不必明显列 出。但有些固定费用(固定成本)的问题不能用一般线 性规划来描述,但可改变为混合整数规划来解决,见下例。
(ii)因为 x1, x2当前均为非整数,故不满足整数要求, 任选一个进行分枝。设选x1进行分枝,把可行集分成2 个子集:
因为 4 与5 之间无整数,故这两个子集的整数解必与原 可行集合整数解一致。这一步称为分枝。这两个子集的 规划及求解如下:
数学建模
数学建模
再定界: (iii)对问题B1再进行分枝得问题 B11和B12 ,它们的最优解 为
数学建模
其中M为充分大的数。y=0为用车,1为用船
例2:把相互排斥的约束条件改成普通约束条件
数学建模
例3:M个相互排斥的约束条件 如果有m 个互相排斥的约束条件:
为了保证这m 个约束条件只有一个起作用,我们引入m 个 0 − 1变量 yi ( i=1, 2 , ….m ) 和一个充分大的常数M ,则 变为
g=[sum(x)-400 x(1)+2*x(2)+2*x(3)+x(4)+6*x(5)-800 2*x(1)+x(2)+6*x(3)-200 x(3)+x(4)+5*x(5)-200]; (ii)随机取样计算方法-编写主函数对应M文件mainint.m如 下求问题的解: rand('state',sum(clock)); p0=0; tic for i=1:10^6 x=99*rand(5,1); x1=floor(x);x2=ceil(x); [f,g]=mengte(x1); if sum(g<=0)==4
数学建模
数学建模
if p0<=f x0=X;p0=f; end end end end end end end x0,p0 toc
数学建模
2.4 指派问题的计算机求解 指派问题的数学模型 拟分配n 人去干n 项工作,每人干且仅干一项工作,若分 配第i 人去干第j项工作,需花费cij单位时间,问应如何分 配工作才能使工人花费的总时间最少? 要给出一个指派问题的实例,只需给出矩阵 C(ij) = c ,C 被称为指派问题的系数矩阵。 引入变量 xij ,若分配i干j工作,则取xij =1 ,否则取xij = 0 。 上述指派问题的数学模型为
数学建模
数学建模
求解指派问题,其系数矩阵为
数学建模
解 将第一行元素减去此行中的最小元素15,同样,第二行元 素减去17,第三行元素减去17,最后一行的元素减去16,得
再将第 3 列元素各减去1,得
数学建模
以 B2为系数矩阵的指派问题有最优指派
0 1 X 0 0
1 0 0 0 0 0 0 1 0 0 0 1
数学建模
第二章 整数规划
数学建模
2.1 概论
2.1.1 定义 规划中的变量(部分或全部)限制为整数时,称为整 数规划。若在线性规划模型中,变量限制为整数,则称为 整数线性规划。目前所流行的求解整数规划的方法,往往 只适用于整数线性规划。目前还没有一种方法能有效地求 解一切整数规划。 2.1.2 整数规划的分类 如不加特殊说明,一般指整数线性规划。对于整数线性规 划模型大致可分为两类: 1. 变量全限制为整数时,称纯(完全)整数规划。 2. 变量部分限制为整数的,称混合整数规划。
数学建模
数学建模
对于指派问题等 0 − 1整数规划问题,可以直接利用 Matlab 的函数bintprog 进行求解。 例2.7 求解下列指派问题,已知指派矩阵为
数学建模
%解:编写Matlab 程序如下: c=[3 8 2 10 3;8 7 2 9 7;6 4 2 7 5 8 4 2 3 5;9 10 6 9 10]; c=c(:); a=zeros(10,25); for i=1:5 a(i,(i-1)*5+1:5*i)=1; a(5+i,i:5:25)=1; end b=ones(10,1); [x,y]=bintprog(c,[],[],a,b); x=reshape(x,[5,5]),y %求得最优指派方案为 x51 =x44= x32 =x23= x15 = 1 最优值为21。
数学建模
问题中的变量只能取 0 或1,从而是一个0-1 规划问题。一 般的0-1 规划问题求解极为困难。但指派问题并不难解,其 约束方程组的系数矩阵十分特殊
数学建模Leabharlann Baidu
求解指派问题的匈牙利算法的依据
由匈牙利数学家 Konig 提出的更为简便的解法—匈牙利算 法。算法主要依据以下事实:如果系数矩阵C (ij) = c 一行 (或一列)中每一元素都加上或减去同一个数,得到一个 新矩阵B(ij) = b ,则以C或B为系数矩阵的指派问题具有相 同的最优指派。
数学建模
2.2 0 −1 型整数规划 0 −1 型整数规划是整数规划中的特殊情形,它的变量 x j 仅取值0 或1。这时xj称为0 − 1变量 约束条件: 此种情况对应实际问题
2.2.1 相互排斥的约束条件
例1: 有两种运输方式可选,但只能用其中一种, 用车的约束条件 用船的约束条件 为了统一在一个问题中,引入 0 − 1变量y,约束条件 可改写为:
数学建模
例来说明:
解 (i)先不考虑整数限制,即解相应的线性规划B ,得最 优解为:
数学建模
可见它不符合整数条件。这时z 是问题A的最优目标函数值 z*的上界,记作 。而x1=0, x2 = 0 显然是问题A的一个 整数可行解,这时z = 0,是z*的一个下界,记作 , 即0 ≤ z* ≤ 356。
数学建模
2.5 分枝定界法
对有约束条件的最优化问题(其可行解为有限数)的 所有可行解空间恰当地进行系统搜索,这就是分枝与定 界内容。通常,把全部可行解空间反复地分割为越来越 小的子集,称为分枝;并且对每个子集内的解集计算一 个目标下界(对于最小值问题),这称为定界。在每次 分枝后,凡是界限超出已知可行解集目标值的那些子集 不再进一步分枝,这样,许多子集可不予考虑,这称剪 枝。这就是分枝定界法的主要思路。
数学建模
分枝定界法可用于解纯整数或混合的整数规划问题。 在本世纪六十年代初由 Land Doig 和Dakin 等人提出的。由 于这方法灵活且便于用计算机求解,所以现在它已是解 整数规划的重要方法。目前已成功地应用于求解生产进度 问题、旅行推销员问题、工厂选址问题、背包问题及分配 问题等。 设有最大化的整数规划问题 A ,与它相应的线性规 划为问题B ,从解问题B 开始,若其最优解不符合A的 整数条件,那么B的最优目标函数必是A的最优目标函 数z*的上界,记作 ,而A的任意可行解的目标函数 值将是z*的一个下界 分枝定界法就是将B的可行域分成子区域的方法。 逐步减小 和增大 最终求到z*。现用下
例2.3 某工厂为了生产某种产品,有几种不同的生产方式 可供选择,如选定的生产方式投资高(选购自动化程度高的 设备),由于产量大,因而分配到每件产品的变动成本就降 低;反之,如选定的生产方式投资低,将来分配到每件产品 的变动成本可能增加。 所以必须全面考虑。今设有三种方式可供选择,令 xj表示采用第j 种方式时的产量; cj表示采用第j 种方式时每件产品的变动成本; kj表示采用第j 种方式时的固定成本。
数学建模
2.1.4 求解方法分类: (i)分枝定界法—可求纯或混合整数线性规划。 (ii)割平面法—可求纯或混合整数线性规划。 (iii)隐枚举法—求解“0-1”整数规划: ①过滤隐枚举法; ②分枝隐枚举法。 (iv)匈牙利法—解决指派问题(“0-1”规划特殊情形)。 (v)蒙特卡洛法—求解各种类型规划。
数学建模
数学建模
例如
数学建模
0 − 1整数规划问题,可以直接利用Matlab 的函数bintprog 进行求解。 例如max=193*x1+191*x2+187*x3+186*x4+180*x5+185*x6; %f st.. x5+x6>=1; x3+x5>=1; x1+x2<=1; x2+x6<=1; x4+x6<=1; x1+x2+x3+x4+x5+x6=3 代码如下 c=[-193;-191;-187;-186;-180;-185]; a=[0,0,0,0,-1,-1;0,0,-1,0,-1,0;1,1,0,0,0,0;0,1,0,0,0,1;0,0,0,1,0,1]; b=[-1,-1,1,1,1]'; aeq=[1,1,1,1,1,1]; beq=[3]; x=bintprog(c,a,b,aeq,beq)
(iv)对问题B2再进行分枝得问题 B12和 B22 ,它们的最优解 为
数学建模
于是可以断定原问题的最优解为:
从以上解题过程可得用分枝定界法求解整数规划(最大化) 问题的步骤为: 开始,将要求解的整数规划问题称为问题 A ,将与它相应的 线性规划问题称为问题B 。 (i)解问题B 可能得到以下情况之一: (a) B 没有可行解,这时A 也没有可行解,则停止. (b) B 有最优解,并符合问题A 的整数条件, B 的最优解 即为A 的最优解,则停止。 (c) B 有最优解,但不符合问题A 的整数条件,记它的目 标函数值为
数学建模
数学建模
2.3 蒙特卡洛法
例2.6 已知非线性整数规划为:
如果用显枚举法试探,共需计算 ( 100 ) 5 个点,其计 算量非常之大。然而应用蒙特卡洛去随机计算106个点, 便可找到满意解,
数学建模
随机取样采集6 个点计算时,应用概率理论来估计一下可 信度。 不失一般性,假定一个整数规划的最优点不是孤立的奇 点。假设目标函数落在高值区的概率分别为0.01,0.00001, 则当计算106个点后,有任一个点能落在高值区的概率分别为
数学建模
2.1.3 整数规划特点 (1)原线性规划有最优解,当自变量限制为整数后,其 整数规划解出现下述情况: ①原线性规划最优解全是整数,则整数规划最优解与 线性规划最优解一致。 ②整数规划无可行解。
数学建模
③有可行解(当然就存在最优解),但最优解值变差。
(2) 整数规划最优解不能按照实数最优解简单取整而获得。
数学建模
分析:
采用各种生产方式的总成本分别为
在构成目标函数时,为了统一在一个问题中讨论,现引入 0 − 1变量yj
于是目标函数
数学建模
对应的3个线性约束条件
其中ε是一个充分小的正常数,M 是个充分大的正常数
2.2.3指派问题 例2.4 拟分配n 人去干n 项工作,每人干且仅干一项工作, 若分配第i 人去干第j项工作,需花费 cij单位时间,问应如何 分配工作才能使工人花费的总时间最少? 分析 要给出一个指派问题的实例,只需给出矩阵 C= ( cij), C 被称为指派问题的系数矩阵。 引入变量 xij ,若分配i 干j 工作,则取xij = 1 ,否则取xij = 0 。上述指派问题的数学模型为
(i)首先编写子函数M 文件mente.m 定义目标函数f 和 约束向量函数g,程序如下: function [f,g]=mengte(x); f=x(1)^2+x(2)^2+3*x(3)^2+4*x(4)^2+2*x(5)-8*x(1)2*x(2)-3*x(3)-x(4)-2*x(5);
数学建模