整数规划
概论
定义
数学规划中的变量(部分或全部)限制为整数时,称为整数规划。
线性规划模型中变量限制为整数,则称为整数线性规划。
目前所流行的求解整数规划的方法往往只适用于整数线性规划。
分类
纯(完全)整数规划 变量全限制为整数
混合整数规划 变量部分限制为整数
特点
- 若原线性规划有最优解,自变量限制为整数后,其整数规划解会出现下述三种情况。
(1). 原线性规划最优解全为整数,则整数规划最优解与线性规划最优解一致。
(2). 整数规划无可行解。
(3). 有可行解,但最优值变差。 - 整数规划最优解不能按照实数最优解简单取整而获得。
求解方法分类
- 分枝定界法
- 割平面法
- 隐枚举法
过滤隐枚举法
分枝隐枚举法 - 匈牙利法
- 蒙特卡洛法
0-1型整数规划
0-1型整数规划是整数规划中的特殊情形,它的变量
x
i
x_i
xi仅取值0或1,可由下述约束条件
0
≤
x
i
≤
1
且
x
i
为
整
数
0 \leq x_i \leq 1 且x_i为整数
0≤xi≤1且xi为整数
所代替,与一般整数规划的约束条件形式一致。
蒙特卡洛法(随机取样法)
假如计算量非常大,如采用显枚举试探法,共需计算 1 0 10 10^{10} 1010个点,而应用蒙特卡洛去随机计算 1 0 6 10^6 106个点便可找到满意解。
可信度
假如目标函数落在高值区域的概率为0.01,0.00001,则计算 1 0 6 10^6 106个点后,至少有一个点落在高值区的概率分别为
1 − 0.9 9 1000000 ≈ 0.99 ⋯ 99 ( 100 多 位 ) 1-0.99^{1000000}\approx0.99\cdots99(100多位) 1−0.991000000≈0.99⋯99(100多位)
1 − 0.9999 9 1000000 ≈ 0.999954602 1-0.99999^{1000000}\approx0.999954602 1−0.999991000000≈0.999954602
整数规划Matlab求解
matlab命令
[ x , f v a l ] = i n t l i n p r o g ( f , i n t c o n , A , b , A e q , b e q , l b , u b ) [x,fval]=intlinprog(f,intcon,A,b,Aeq,beq,lb,ub) [x,fval]=intlinprog(f,intcon,A,b,Aeq,beq,lb,ub)
matlab数学模型
s . t . { x ( i n t c o n ) 为 整 数 A ⋅ x ≤ b A e q ⋅ x = b e q l b ≤ x ≤ u b s.t. \begin{cases} x(intcon)为整数\\ A\cdot x\leq b\\ Aeq\cdot x =beq\\ lb \leq x \leq ub \end{cases} s.t.⎩⎪⎪⎪⎨⎪⎪⎪⎧x(intcon)为整数A⋅x≤bAeq⋅x=beqlb≤x≤ub
式中: f , x , i n t c o n , b , b e q , l b , u b \pmb{f},\pmb{x},intcon,\pmb{b},beq,lb,ub fff,xxx,intcon,bbb,beq,lb,ub为列向量 A , A e q \pmb{A},Aeq AAA,Aeq为矩阵。
缺陷
使用matlab求解数学规划问题有一个缺陷,必须把所有的决策变量化成一维决策变量。多位决策变量化成一维决策变量后约束条件很难写出。而使用Lingo软件求解数学规划问题是不需要做变换的,使用起来相对比较容易。