【数学建模】第02章 整数规划
建模算法(二)——整数规划

建模算法(⼆)——整数规划⼀、概述1、定义:规划中变量部分或全部定义成整数是,称为整数规划。
2、分类:纯整数规划和混合整数规划。
3、特点:(1)原线性规划有最优解,当⾃变量限制为整数后:a、原最优解全是整数,那最优解仍成⽴b、整数规划没有可⾏解c、有可⾏解,但是不是原最优解4、求解⽅法分类(1)分⽀定界法(2)割平⾯法(3)隐枚举法(4)匈⽛利法(5)蒙特卡洛法⼆、分⽀定界法1、算法如下(求解整数规划最⼤化问题)MATLAB实现function r=checkint(x)%判断x(i)是不是整数了。
是的话r(i)返回1,不是的话,返回0%输⼊参数:x X向量%输出参数:r R向量for i=1:length(x)if(min(abs(x(i)-floor(x(i))),abs(x(i)-ceil(x(i))))<1e-3)r(i)=1;elser(i)=0;endendfunction val=isrowinmat(arow,mat)%⽤来判断mat中是否包含与arow⼀样的向量%输⼊变量:arow 向量% mat 矩阵%输出变量:val 1表⽰有,0表⽰没有val=0;rows=size(mat,1);for i=1:rowstemp=(mat(i,:)==arow);if length(find(temp==0))==0val=1;return;elseval=0;end;end% [x,fval,exitflag,output,lambda]=lpint(ifint.f,A,b,Aeq,beq)% [x,fval,exitflag,output,lambda]=lpint(ifint,f,A,b,Aeq,beq,lb)% [x,fval,exitflag,output,lambda]=lpint(ifint,f,A,b,Aeq,beq,lb,ub)% [x,fval,exitflag,output,lambda]=lpint(ifint,f,A,b,Aeq,beq,lb,ub,x0)% [x,fval,exitflag,output,lambda]=lpint(ifint,f,A,b,Aeq,beq,lb,ub,x0,options)if nargin<10, options=[]; endif nargin<9, x0=[]; endif nargin<8, ub=inf*ones(size(f)); endif nargin<7, lb=zeros(size(f)); end[x,fval,exitflag,output,lambda]=linprog(f,A,b,Aeq,beq,lb,ub,x0,options);if exitflag<=0 %表⽰线性规划没有最优解returnendv1=find(ifint==1); %找到需要整数规划的变量的下标temp=x(v1);%如果不是要求整数规划的就可以返回了。
整数规划和动态规划-数学建模

(1.13), (1.14)
max z = ∑ (0.487xi1 + 0.520 xi2 + 0.613 xi3 + 0.720 xi 4 + 0.487 xi 5 + 0.520 xi 6 + 0.640 xi 7 )
i =1
2
于是成为一个有 13 个不等式约束 14 个自然条件的整数线性规划模型,目标是函数 的最大化. (3)问题求解 1) 此模型可用分枝定界法,割平面法求最优解,但用部分枚举法比较便当. 部分枚举法————隐枚举法(Implicit Enumeration) 2) 用 Lingo 软件求解 max=0.487*x11+0.520*x12+0.613*x13+0.720*x14+0.487*x15+0.520*x16+0.640*x17+ 0.487*x21+0.520*x22+0.613*x23+0.720*x24+0.487*x25+0.520*x26+0.640*x27; x11+x21<=8; x12+x22<=7; x13+x23<=9; x14+x24<=6; x15+x25<=6; x16+x26<=4; x17+x27<=8; 2*x11+3*x12+x13+0.5*x14+4*x15+2*x16+x17<=40;
西安理工大学理学院
王秋萍
x13 + x23 ≤ 9 x14 + x24 ≤ 6 x15 + x25 ≤ 6 x16 + x26 ≤ 4 x17 + x27 ≤ 8
02-整数规划数学模型及其解法-4h

− x1 − x 2 − x 3 < − 3 + My i − 3 x − 2 x − x < − 5 + My i 1 2 3 x 1 < 10 + My i 则有 (M 为任意大的正数) x 2 < 4 + My i x 3 < 11 + My i y1 + y 2 + L + y 5 ≥ 2
(1) (2)
25
4.用以表达含固定费用的函数
如用xj代表产品j的生产数量,其生产费用函数通 常可表示为: ( x j > 0) K j + c j x j C j (x j ) = ( x j = 0) 0 式中kj是同产量无关的生产准备费用。 问题的目标是使所有产品的总生产费用为最小。 n 即:
7
引例2-3
各点的设备投资及年获利预测表
A1 A2 A3 A4 A5 A6 A7 A8 A9 A10
投 资 100 120 150 80 70 90 80 140 160 180 额 利 36 40 50 22 20 30 25 48 58 61 润 投资总额不能超过720万元。 问应选择哪几个点,可使年利润为最大?
10
整数规划的图解
有人认为,对整数规划问题的求解可以 先不考虑对变量的整数约束,作为一般 线性规划问题来求解,当解为非整数时 可用四舍五人或凑整方法寻找最优解。 当然在变量取值很大时,用上述方法得 到的解与最优解差别不大。但当变量取 值较小时,得到的解就可能与实际整数 最优解差别很大。再者当问题规模较大 时,用凑整办法来算工作量很大。
j =1
n
K j + c j x j ( x j > 0) C j (x j ) = ( x j = 0) 0
数学建模-整数规划

算例
max 3x1 5x2 4x3
2x1 3x2 1500
s.t.32xx12
4x3 2x2
800 5x3
2000
x1
,
x2
,
x3
0,
x1 , x3为整数
max 3 x1+5 x2+4 x3 subject to 2 x1+3 x2<=1500 2 x2+4 x3<=800 3 x1+2 x2 +5 x3<=2000 end gin x1 gin x3
注解
该问题本质上是个整数规划问题, 放松的线性规划的最优解是个整数 解,所以两规划等价。
定义整数变量用函数@gin(x1)…… @gin(x7); 0-1整数变量为@bin(x1)
应急选址问题
某城市要在市区设置k个应急服务中心, 经过初步筛选确定了m个备选地,现已 知共有n个居民小区,各小区到个备选地 的距离为 d ij , i 1,2,..., n, j 1,2,..., m,为了使 得各小区能及时得到应急服务,要求各 小区到最近的服务中心的距离尽可能的 短,试给出中心选址方案。
问题分析
为了便于说明问题引入间接变量,第i 小区是否由第j个中心服务
yij 0,1, i 1,2,..., n, j 1,2,..., m,
以及最远的距离 z,
约束条件
小区服务约束
yij x j , i 1,2,..., n, j 1,2,..., m,
m
yij 1, i 1,2,..., n,
方案 确定每天工作的人数,由于连续休息2天,当确定每 个人开始休息的时间就等于知道工作的时间,因而确定 每天开始休息的人数就知道每天开始工作的人数,从而 求出每天工作的人数。
数学建模整数规划PPT学习教案

已知三工厂每月的经营费用 di (与 产量无关)分别为 100、90、120 .问如 何选址使每月经营和运输费用最低 .
x11 x21 x31 40
x12 x22 x32 60
x13 x23 x33 45
y1 y2 y3 2
Solution:
1、 先检查最大上界(极大化问题)的活问题
优点:检 查子问 题较其 他规则 为少;
缺点:计算机储存量较大 .
2、 先检查最新产生的最大上界的活问题 优点:计算机储存量较少 ;
缺点:需要更多的分支运算 .
选择的不 同,提 供了发 挥的余 地
第13页/共30页
第五章去掉整数约整束数为3<规x 划<4 之间无整数解P Example4
0123456789
x1第14页/共30页
P6 (x2≥5)
x1=0、x2=5 Z6=40
*
§2 整 数 规 划 的解 法 Example 5 (投资方案的最优选择)
投资 年度
项目
A1 A2 A3
投资 额度
1 042 5
某公司欲对三个项目进行投资, 根据预算 四年内 的投资 额、三 个项目 每年所需投资额以及所创利润如表. 问应对哪 几个项 目进行 投资, 可获利 最大?
整数规划
物品 重量 aj
1
3
2
4
3
3
4
3
5
15
6
13
7
16
价值 cj 12 12 9 15 90 26 112
Solution: 这是一个 0-1 规划问题.
1 x j 0
如果带第 j 件物品 否则 j = 1~7
整数规划模型

王秋萍:整数规划模型
为(非负)整数
仅一部分变 量为整数
4
有些问题用线性规划数学模型无法描述,可以 通过设置逻辑变量建立整数规划的数学模型。
王秋萍:整数规划模型
5
逻辑变量在建立数学模型中的作用
m个约束条件中只有k个起作用
设m个约束条件可表为
∑a x
ij j =1
n
j
≤ bi
i = 1, 2, " , m
定义 又M为任意大的正数,则
n ⎧ ⎪ ∑ aij x j ≤ bi + Myi j =1 ⎨ ⎪ y + y +" + y = m − k 2 m ⎩ 1
王秋萍:整数规划模型
6
逻辑变量在建立数学模型中的作用
约束条件的右端项可能是r个值 ( b1 , b2 ," , br ) 中的一个,即 n
( i = 1," , m; j = 1," , m ) 则分配问题的数学模型为 min z = ∑∑ a x
m m i =1 j =1 ij
ij
⎧ m xij = 1 ( i = 1,", m ) ⎪ ∑ j =1 ⎪ m ⎪ ( j = 1,", m ) ⎨ ∑ xij = 1 ⎪ i =1 ⎪ xij = 0或1 ( i = 1," , m; j = 1," , m ) ⎪ ⎩
j = 1, 2, 3 ⎧ x j − My j ≤ 0 ⎪ x + x + x ≥ 4000 ⎪ 1 2 3 ⎨ ⎪ x1 ≤ 1500, x2 ≤ 2000 ⎪ ⎩ x j ≥ 0, y j = 1或0, j = 1, 2, 3
数学建模(整数规划)

整数规划模型实际问题中x x x x f z Max Min Tn "),(),()(1==或的优化模型mi x g t s i ",2,1,0)(..=≤x ~决策变量f (x )~目标函数g i (x )≤0~约束条件多元函数决策变量个数n 和数线性规划条件极值约束条件个数m 较大最优解在可行域学规非线性规划解的边界上取得划整数规划Programming+Integer所有变量都取整数,称为纯整数规划;有一部分取整数,称为混合整数规划;限制取0,1称为0‐1型整数规划。
型整数规划+整数线性规划max(min) nz c x =1j jj n=∑1s.t. (,) 1,2,,ij j i j a x b i m=≤=≥=∑"12 ,,,0 ()n x x x ≥"且为整数或部分为整数+例:假设有m 种不同的物品要装入航天飞机,它们的重量和体积分别为价值为w j 和v j ,价值为c j ,航天飞机的载重量和体积限制分别为W 和V ,如何装载使价值最大化?m1⎧1max j jj c y =∑ 1 0j j y =⎨被装载 s.t. mj j v y V≤∑0j ⎩没被装载1j m=1j j j w y W=≤∑ 0 or 1 1,2,,j y j m=="(Chicago)大学的Linus Schrage教授于1980年美国芝加哥(Chi)Li S h前后开发, 后来成立LINDO系统公司(LINDO Systems Inc.),网址:I)网址htt//li dLINDO: Interactive and Discrete Optimizer (V6.1) Linear(V61) LINGO: Linear Interactive General Optimizer (V8.0) LINDO——解决线性规划LP—Linear Programming,整数规划IP—Integer Programming问题。
数学建模整数规划

整数规划前面介绍的线性规划问题中,只要求决策变量非负,也就是说决策变量可以取小数,然而在许多经济管理的实际问题中,决策变量只有取非负的整数才有实际意义。
如果一个线性规划问题要求全部的决策变量都取整数,那么这样的线性规划问题称为全整数规划或纯整数规划问题。
如果只要求一部分决策变量取整数,那么这样的线性规划问题称为混合整数规划问题。
如果决策变量只能取0或者1,那么就称为0-1规划问题 整数规划在实际中的应用: 1. 指派问题:某公司人事部门欲安排四个人去做四项不同的工作,每个人只能完成一项工作,一项工作只能由一个人完成。
每个人完成各项工作所消耗的时间(单位:分钟)如下表所示,(2) 如果把(1)中的消耗时间数据看成创造效益的数据,那么应该如何指派,可以使得总的效益最大?(3) 如果在(1)中再增加一项工作E ,甲 、乙、丙、丁四人完成工作E 的时间分别为17,20,15,16分钟,那么应该指派这四个人干哪四项工作,可使得这四个总的消耗时间为最少?解:(1) 引入0-1变量ij x ,并令⎩⎨⎧=项工作时个人不做第当第项工作时个人去做第当第j i j i x ij 01,于是这个分派问题的数学模型为:⎪⎪⎪⎪⎪⎪⎪⎩⎪⎪⎪⎪⎪⎪⎪⎨⎧====+++=+++=+++=+++=+++=+++=+++=++++++++++++++++++=4,3,2,1,4,3,2,1101111111119242017181516262027241828201920min 443424144333231342322212413121114443424134333231242322211413121144434241343332312423222114131211j i x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x xx x x x x x x x x x x x x x x Z ij ,或 用管理运筹学2.0软件求解结果如下:**********************最优解如下*************************目标函数最优值为 : 71变量 最优解 ------- --------x1 0 x2 1 x3 0 x4 0 x5 1 x6 0 x7 0 x8 0 x9 0 x10 0 x11 1 x12 0 x13 0 x14 0 x15 0 x16 1 约束 松弛/剩余 ------- ---------1 02 03 04 05 06 07 08 0 这就说明112=x ,121=x ,133=x ,144=x所以应该让甲去做B 工作,让乙去做A 工作,让丙去做C 工作,让丁去做D 工作,这时总的消耗时间为71分钟。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
再定界:340 z * 341,并将B12 剪枝。
(iv)对问题B 再进行分枝得问题B 和 B ,它们的最优解为
2
21
22
B21 : x1 = 5.44, x2 = 1.00, z22 = 308
B22 无可行解。
将 B , B 剪枝。 21 22
于是可以断定原问题的最优解为:
x1 = 4, x2 = 2, z* = 340
从以上解题过程可得用分枝定界法求解整数规划(最大化)问题的步骤为:
开始,将要求解的整数规划问题称为问题A ,将与它相应的线性规划问题称为问
题B。
(i)解问题B 可能得到以下情况之一:
(a) B 没有可行解,这时A 也没有可行解,则停止.
(b) B 有最优解,并符合问题A 的整数条件,B 的最优解即为A 的最优解,则
第二章 整数规划
§1 概论 1.1 定义
规划中的变量(部分或全部)限制为整数时,称为整数规划。若在线性规划模型中,
变量限制为整数,则称为整数线性规划。目前所流行的求解整数规划的方法,往往只适
用于整数线性规划。目前还没有一种方法能有效地求解一切整数规划。
1.2 整数规划的分类 如不加特殊说明,一般指整数线性规划。对于整数线性规划模型大致可分为两类: 1o 变量全限制为整数时,称纯(完全)整数规划。 2o 变量部分限制为整数的,称混合整数规划。
(v)蒙特卡洛法—求解各种类型规划。
下面将简要介绍常用的几种求解整数规划的方法。
§2 分枝定界法 对有约束条件的最优化问题(其可行解为有限数)的所有可行解空间恰当地进行系
统搜索,这就是分枝与定界内容。通常,把全部可行解空间反复地分割为越来越小的子 集,称为分枝;并且对每个子集内的解集计算一个目标下界(对于最小值问题),这称 为定界。在每次分枝后,凡是界限超出已知可行解集目标值的那些子集不再进一步分枝,
1.2 整数规划特点 (i) 原线性规划有最优解,当自变量限制为整数后,其整数规划解出现下述情况: ①原线性规划最优解全是整数,则整数规划最优解与线性规划最优解一致。
②整数规划无可行解。
例 1 原线性规划为
min z = x1 Ƴ, x1 ≥ 0, x 2 ≥ 0
其最优实数解为:x 1 = 0, x 2 =
选址问题、背包问题及分配问题等。
设有最大化的整数规划问题 A ,与它相应的线性规划为问题 B ,从解问题 B 开始, 若其最优解不符合 A 的整数条件,那么 B 的最优目标函数必是 A 的最优目标函数 z* 的 上界,记作 z ;而 A 的任意可行解的目标函数值将是 z* 的一个下界 z 。分枝定界法就 是将 B 的可行域分成子区域的方法。逐步减小 z 和增大 z ,最终求到 z* 。现用下例来
最优解为: x1 = 5.0, x2 = 1.57, z1 = 341.4。 再定界:0 z* 349。
(iii)对问题 B1 再进行分枝得问题 B11 和 B12 ,它们的最优解为
-17-
B11 : x1 = 4,x 2 = 2,z 11= 340 B12 : x1 = 1.43, x2 = 3.00, z12 = 327.14
-16-
这样,许多子集可不予考虑,这称剪枝。这就是分枝定界法的主要思路。 分枝定界法可用于解纯整数或混合的整数规划问题。在本世纪六十年代初由 Land
Doig 和 Dakin 等人提出的。由于这方法灵活且便于用计算机求解,所以现在它已是解 整数规划的重要方法。目前已成功地应用于求解生产进度问题、旅行推销员问题、工厂
停止。
(c) B 有最优解,但不符合问题A 的整数条件,记它的目标函数值为z 。
(ii)用观察法找问题A 的一个整数可行解,一般可取x j = 0, j = 1,L, n ,试探,
求得其目标函数值,并记作z 。以z* 表示问题A 的最优目标函数值;这
时有
z z* z
进行迭代。
第一步:分枝,在B 的最优解中任选一个不符合整数条件的变量x j,其值为b ,j
说明:
例 3 求解下述整数规划
Max z = 40x1 + 90x2
9x1 + 7x2 56 7x1 + 20x2 70 x1, x2 0 且为整数 解 (i)先不考虑整数限制,即解相应的线性规划 B ,得最优解为:
x1 = 4.8092, x2 = 1.8168, z = 355.8779 可见它不符合整数条件。这时 z 是问题 A 的最优目标函数值 z* 的上界,记作 z 。而 x1 = 0, x2 = 0 显然是问题 A 的一个整数可行解,这时 z = 0 ,是 z* 的一个下界,记作 z , 即 0 z* 356。
5,min z = 4
5。 4
③有可行解(当然就存在最优解),但最优解值变差。
例 2 原线性规划为
min z = x1 + x2
2x1 + 4x2 = 6, x1 ≥ 0, x 2 ≥ 0
其最优实数解为:x 1 = 0, x 2 =
3,min z = 2
3。 2
若限制整数得:x 1 = 1, x 2= 1,min z = 2 。
(ii) 整数规划最优解不能按照实数最优解简单取整而获得。
1.3 求解方法分类:
(i)分枝定界法—可求纯或混合整数线性规划。
(ii)割平面法—可求纯或混合整数线性规划。
(iii)隐枚举法—求解“0-1”整数规划:
①过滤隐枚举法;
②分枝隐枚举法。
(iv)匈牙利法—解决指派问题(“0-1”规划特殊情形)。
问题 B1 : Max z = 40x1 + 90x2 9x1 + 7x2 56 7x1 + 20x2 70 0 x1 4, x2 0
最优解为: x1 = 4.0, x2 = 2.1, z1 = 349 。 问题 B2 : Max z = 40x1 + 90x2 9x1 + 7x2 56 7x1 + 20x2 70 x1 5, x2 0
(ii)因为 x1 , x2 当前均为非整数,故不满足整数要求,任选一个进行分枝。设选 x1
进行分枝,把可行集分成 2 个子集:
x1 [4.8092] = 4 , x1 [4.8092] + 1 = 5
因为 4 与 5 之间无整数,故这两个子集的整数解必与原可行集合整数解一致。这 一步称为分枝。这两个子集的规划及求解如下: