整数规划的数学模型及解的特点
整数规划IP (integer programming):在许多规划问题中,如果要求一部分或全部决策变量必须取整数。例如,所求的解是机器的台数、人数、车辆船只数等,这样的规划问题称为整数规划,简记IP。
松弛问题(slack problem):不考虑整数条件,由余下的目标函数和约束条件构成的规划问题称为该整数规划问题的松弛问题。
若松弛问题是一个线性规化问题,则该整数规划为整数线性规划(integer linear programming)。
一、整数线性规划数学模型的一般形式
整数线性规划问题可以分为以下几种类型
1、纯整数线性规划(pure integer linear programming):指全部决策变量都必须取整数值的整数线性规划。有时,也称为全整数规划。
2、混合整数线性规划(mixed integer liner programming):指决策变量中有一部分必须取整数值,另一部分可以不取整数值的整数线性规划。
3、0—1型整数线性规划(zero—one integer liner programming):指决策变量只能取值0或1的整数线性规划。
1 解整数规划问题
0—1型整数规划
0—1型整数规划是整数规划中的特殊情形,它的变量仅可取值0或1,这时的变量xi称为0—1变量,或称为二进制变量。
0—1型整数规划中0—1变量作为逻辑变量(logical variable),常被用来
示系统是否处于某一特定状态,或者决策时是否取某个方案。
一、0—1型整数规划的典型应用问题
例1:背包问题:一个登山队员,他需要携带的物品有:食品、氧气、冰镐、绳索、帐篷、照相器材、通信器材等。每种物品的重量和重要性系数如表所示。设登山队员可携带的最大重量为25kg,试选择该队员所应携带的物品。
序号
1
2
3
4
5
6
7
物品
食品
氧气
冰镐
绳索
帐篷
照相器材
通信设备
重量/Kg
5
5
2
6
12
2
4
重要性系数
20
15
18
14
8
4
10
解:引入0—1变量xi, xi=1表示应携带物品i,,xi=0表示不应携带物品i
上述问题就是一个
的0-1整数规划问题,解得: X*=(1,1,1,1,0,1,1)’ Z*=81
例2:集合覆盖和布点问题
某市消防队布点问题。该市共有6个区,每个区都可以建消防站,市政府希望设置的消防站最少,但必须满足在城市任何地区发生火警时,消防车要在15min内赶到现场。据实地测定,各区之间消防车行驶的时间见表,请制定一个布点最少的计划。
地区1
地区2
地区3
地区4
地区5
地区6
地区1
地区2
地区3
地区4
地区5
地区6
0
10
16
28
27
20
10
0
24
32
17
10
16
24
0
12
27
21
28
32
12
0
15
25
27
17
27
15
0
14
20
10
21
25
14
0
解:引入0—1变量xi, xi=1表示在该区设消防站,,xi=0表示不设
解得: X*=(0,1,0,1,0,0)’ Z*=2
二、特殊约束的处理
1.矛盾约束:建模时,有时会遇到相互矛盾的约束,而模型只能两者取一或,例如下面两个约束
先不等式同向处理,原式可化为: ,
再引入一个0-1变量y, 及一个很大的正数M,
y=0时,(5)与(1)相同,(6)自然满足,实际上不起作用
y=1时,(6)与(2)相同,(5)自然满足,实际上起作用
对于形似,可以用以下一对约束代替
约束同向处理,改为
引入0—1变量后,
2.多中选一的约束
模型希望在下列几个约束中,只能有一个约束有效:
引入n个0-1整数变量yi, i=1,2,…,n.
则上式可改写为:
yi=0时,(2)自然满足,此时约束不起作用
yi=1时,约束起作用。
而和式保证了在0—1整数变量中有一个且也只有一个取值1,其余取0值。
若希望有k个约束有效,只需将(3)改为
3、某市为方便学生,拟在新建的7个居民小区增设若干所学校。已知各备选校址代号及其能覆盖的居民小区编号如表1所示,问要覆盖所有居民小区至少应建多少所学校?对应的校址代号是哪些?
表1
备选校址
A
B
C
D
E
F
小区编号
1,5,7
1,2,5
1,3,5
2,4,5
3,6
4,6
解:对每一个学校定义一个变量
1,当某居民小区可由第j个学校负责
=
0,当某居民小区不可由第j个学校负责
则对于第1个小区:
对于第2个小区:
对于第3个小区:
对于第4个小区:
对于第5个小区:
对于第6个小区:
对于第7个小区:
Min z =
解得: =3
例2 有两个相互排斥的约束条件
或 。
为了统一在一个问题中,引入变量,则上述约束条件可改写为:
其中是充分大的数。
例3 约束条件 或
可改写为
3.1.3 关于固定费用的问题(Fixed Cost Problem)
在讨论线性规划时,有些问题是要求使成本为最小。那时总设固定成本为常数,并在线性规划的模型中不必明显列出。但有些固定费用(固定成本)的问题不能用一般线性规划来描述,但可改变为混合整数规划来解决,见下例。
例5 某工厂为了生产某种产品,有几种不同的生产方式可供选择,如选定的生产方式投资高(选购自动化程度高的设备),由于产量大,因而分配到每件产品的变动成本就降低;反之,如选定的生产方式投资低,将来分配到每件产品的变动成本可能增加。所以必须全面考虑。今设有三种方式可供选择,令
表示采用第种方式时的产量;
表示采用第种方式时每件产品的变动成本;
表示采用第种方式时的固定成本。
为了说明成本的特点,暂不考虑其它约束条件。采用各种生产方式的总成本分别为
.
在构成目标函数时,为了统一在一个问题中讨论,现引入变量,令
于是目标函数
(3)
(3)式这个规定可表为下述3个线性约束条件:
(4)
其中是一个充分小的正常数,是个充分大的正常数。(4)式说明,当时必须为1;当时只有为0时才有意义,所以(4)式完全可以代替(3)式。
例8 求解下列指派问题,已知指派矩阵为
,求最小指派问题。
数学模型为:
Min z=3*x11+8*x12+2*x13+10*x14+3*x15
+8*x21+7*x22+…+
……
+9*x51+10*x52+6*x53+9*x54+10*x55
X11+x12+x13+x14+x15=1
……
X51+x52+x53+x54+x55=1
X11+x21+x31+x41+x51=1
…..
X15+x25+x35+x45+x55=1
Xi,j=0,1
Lingo程序为:
model:
sets:
row/1..5/: ;
col/1..5/: ;
link(row,col):a,x;
endsets
data:
a=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;
enddata
min = @sum(link(i,j):a(i,j)*x(i,j));
@for(row(i):@sum(col(j):x(i,j))=1);
@for(col(j):@sum(row(i)|i#le#2:x(i,j))+ @sum(row(i)|i#ge#3:x(i,j))=1);
end
篮球队需要选择5名队员组成出场阵容参加比赛。8名队员的身高和擅长位置见下表:
队员
身高(米)
擅长位置
1
1.92
中锋
2
1.90
中锋
3
1.88
前锋
4
1.86
前锋
5
1.85
前锋
6
1.83
后卫
7
1.80
后卫
8
1.78
后卫
出现阵容应满足以下条件:
中锋只能有一个上场;x1+x2=1
至少有一名后卫;x6+x7+x8>=1
如1号和4号上场,则6号不出场; y=x1+x4 ,if y=2 x6=0
X1 <= x6
2号和6号至少保留一个不出场。X2+x6 <=1
应当选择哪5名队员上场,才能使出场队员平均身高最高?
\\\\
公司生产A、B、C三种产品,售价分别为12元、7元和6元。生产每单位A需要1小时技术服务、10小时直接劳动、3千克材料;生产每单位B需要2小时技术服务、4小时直接劳动、2千克材料;生产每单位C需要1小时技术服务、5小时直接劳动、1千克材料;现在最多能提供100小时技术服务、700小时直接劳动、400千克材料;生产成本是生产量的非线性函数,如下所示:
产品A
产品B
产品C
产量
单位成本(元)
0~40
40~100
100~150
150以上
10
9
8
7
产量
单位成本
(元)
0~50
5~100
100以上
6
4
3
产量
单位成本
(元)
0~100
100以上
5
4
要求建立一个总利润最大的生产计划数学模型。
设产品A的产量为,且
设产品B的产量为,且:
设产品C产量为,且:
设总利润为:y
2 某钻井队要从以下10个可供选择的井位中确定5个钻井采油,目的是使总的钻井费用最小。若10个钻井位代号为,相应的钻控费用为,并且井位的选择要满足下列条件:
若选择和,或选择钻探:
选择了 或,就不能选择 ,反过来也是一样。
在中最多只能选择两个。试建立这个问题的整数规划模型。
设或,其中代表点未入选,代表点入选;
于是可构造如下数学模型:
考虑下列数学模型
其中
满足约束条件
(1)x1≥8或x2≥6
(3)x1+2x2≥20、2x1+x2≥20及x1+x2≥20 三个约束中至少一个满足
将此问题归结为混合整数规划的数学模型。
文档已经阅读完毕,请返回上一页!