加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

整数规划

(2011-03-22 15:28:32)
标签:

it

分类: 数学算法


整数规划


1.1  定义

规划中的变量(部分或全部)限制为整数时,称为整数规划。若在线性规划模型中,变量限制为整数,则称为整数线性规划。目前所流行的求解整数规划的方法,往往只适用于整数线性规划。目前还没有一种方法能有效地求解一切整数规划。

1.2     整数规划的分类

如不加特殊说明,一般指整数线性规划。对于整数线性规划模型大致可分为两类:

1o 变量全限制为整数时,称纯(完全)整数规划。

2o 变量部分限制为整数的,称混合整数规划。

3o 变量只能取01时,称之为0-1整数规划。

  整数规划特点

i 原线性规划有最优解,当自变量限制为整数后,其整数规划解出现下述情况:

原线性规划最优解全是整数,则整数规划最优解与线性规划最优解一致。

整数规划无可行解。

1  原线性规划为

      http://www.businessanalysis.cn/article/sxjm/chapter2/2-1.ht1.gif

       s.t.  http://www.businessanalysis.cn/article/sxjm/chapter2/2-1.ht2.gif

其最优实数解为: http://www.businessanalysis.cn/article/sxjm/chapter2/2-1.ht3.gif

有可行解(当然就存在最优解),但最优解值一定不会优于原线性规划的最优值。

2  原线性规划为

         http://www.businessanalysis.cn/article/sxjm/chapter2/2-1.ht4.gif

         s.t.  http://www.businessanalysis.cn/article/sxjm/chapter2/2-1.ht5.gif

其最优实数解为: http://www.businessanalysis.cn/article/sxjm/chapter2/2-1.ht6.gif

若限制整数得: http://www.businessanalysis.cn/article/sxjm/chapter2/2-1.ht7.gif

ii 整数规划最优解不能按照实数最优解简单取整而获得。

1.3  求解方法分类:

i )分枝定界法—可求纯或混合整数线性规划。

ii )割平面法—可求纯或混合整数线性规划。

iii )隐枚举法—求解“0-1”整数规划:

   过滤隐枚举法;

   分枝隐枚举法。

iv )匈牙利法—解决指派问题(“0-1”规划特殊情形)。

v )蒙特卡洛法—求解各种类型规划。

下面将简要介绍常用的几种求解整数规划的方法。


分枝定界法

 

对有约束条件的最优化问题 (其可行解为有限数)的可行解空间恰当地进行系统搜索,这就是分枝与定界内容。通常,把全部可行解空间反复地分割为越来越小的子集,称为分枝;并且对每个 子集内的解集计算一个目标下界(对于最小值问题),这称为定界。在每次分枝后,凡是界限不优于已知可行解集目标值的那些子集不再进一步分枝,这样,许多子 集可不予考虑,这称剪枝。这就是分枝定界法的主要思路。

分枝定界法可用于解纯整数或混合的整数规划问题。在二十世纪六十年代初由Land DoigDakin等人提出。由于这方法灵活且便于用计算机求解,所以现在它已是解整数规划的重要方法。目前已成功地应用于求解生产进度问题、旅行推销员问题、工厂选址问题、背包问题及分配问题等。

设有最大化的整数规划问题 http://www.businessanalysis.cn/article/sxjm/chapter2/2-2.ht15.gif 。现用下例来说明:

3  求解下述整数规划

     http://www.businessanalysis.cn/article/sxjm/chapter2/2-2.ht16.gif

            s.t. http://www.businessanalysis.cn/article/sxjm/chapter2/2-2.ht17.gif

i )先不考虑整数限制,即解相应的线性规划 http://www.businessanalysis.cn/article/sxjm/chapter2/2-2.ht18.gif ,得最优解为:

http://www.businessanalysis.cn/article/sxjm/chapter2/2-2.ht19.gif

可见它不符合整数条件。这时 http://www.businessanalysis.cn/article/sxjm/chapter2/2-2.ht29.gif

ii )因为 http://www.businessanalysis.cn/article/sxjm/chapter2/2-2.ht31.gif 进行分枝,把可行集分成2个子集:

http://www.businessanalysis.cn/article/sxjm/chapter2/2-2.ht33.gif

因为45之间无整数,故这两个子集内的整数解必与原可行集合整数解一致。这一步称为分枝。这两个子集的规划及求解如下:

问题 http://www.businessanalysis.cn/article/sxjm/chapter2/2-2.ht35.gif

                s.t. http://www.businessanalysis.cn/article/sxjm/chapter2/2-2.ht36.gif

最优解为: http://www.businessanalysis.cn/article/sxjm/chapter2/2-2.ht37.gif

问题 http://www.businessanalysis.cn/article/sxjm/chapter2/2-2.ht39.gif

                 s.t. http://www.businessanalysis.cn/article/sxjm/chapter2/2-2.ht40.gif

最优解为: http://www.businessanalysis.cn/article/sxjm/chapter2/2-2.ht41.gif

再定界: http://www.businessanalysis.cn/article/sxjm/chapter2/2-2.ht42.gif

 

ii )用观察法找问题 http://www.businessanalysis.cn/article/sxjm/chapter2/2-2.ht47.gif 的最优目标函数值;这时有

                 http://www.businessanalysis.cn/article/sxjm/chapter2/2-2.ht48.gif

进行迭代。

第一步:分枝,在 http://www.businessanalysis.cn/article/sxjm/chapter2/2-2.ht53.gif 的最大整数。构造两个约束条件

http://www.businessanalysis.cn/article/sxjm/chapter2/2-2.ht55.gif

将这两个约束条件,分别加入问题 http://www.businessanalysis.cn/article/sxjm/chapter2/2-2.ht58.gif 。不考虑整数条件求解这两个后继问题。

    定界,以每个后继问题为一分枝标明求解的结果,与其它问题的解的结果中,找出最优目标函数值最大者作为新的上界 http://www.businessanalysis.cn/article/sxjm/chapter2/2-2.ht59.gif 。从已符合整数条件的各分支中,找出目标函数值为最大者作为新的下界 http://www.businessanalysis.cn/article/sxjm/chapter2/2-2.ht61.gif

第二步:比较与剪枝,各分枝的最优目标函数中若有小于 http://www.businessanalysis.cn/article/sxjm/chapter2/2-2.ht65.gif



 

http://www.businessanalysis.cn/article/sxjm/chapter2/2-3.ht110.gif 仅取值01。这时 http://www.businessanalysis.cn/article/sxjm/chapter2/2-3.ht110.gif 仅取值01这个条件可由下述约束条件:

          http://www.businessanalysis.cn/article/sxjm/chapter2/2-3.ht110.gif ,整数

所代替,是和一般整数规划的约束条件形式一致的。在实际问题中,如果引入 http://www.businessanalysis.cn/article/sxjm/chapter2/2-3.ht110.gif 变量,就可以把有各种情况需要分别讨论的线性规划问题统一在一个问题中讨论了。我们先介绍引入 http://www.businessanalysis.cn/article/sxjm/chapter2/2-3.ht110.gif 变量的实际问题,再研究解法。

3.1  引入 http://www.businessanalysis.cn/article/sxjm/chapter2/2-3.ht111.gif 变量的实际问题

    3.1.1 投资场所的选定——相互排斥的计划

    4  某公司拟在市东、西、南三区建立门市部。拟议中有7个位置(点) http://www.businessanalysis.cn/article/sxjm/chapter2/2-3.ht112.gif 可供选择。规定

    在东区:由 http://www.businessanalysis.cn/article/sxjm/chapter2/2-3.ht111.gif 三个点中至多选两个;

    在西区:由 http://www.businessanalysis.cn/article/sxjm/chapter2/2-3.ht111.gif 两个点中至少选一个;

在南区:由 http://www.businessanalysis.cn/article/sxjm/chapter2/2-3.ht111.gif 两个点中至少选一个。

    如选用 http://www.businessanalysis.cn/article/sxjm/chapter2/2-3.ht119.gif 元。问应选择哪几个点可使年利润为最大?

解题时先引入 http://www.businessanalysis.cn/article/sxjm/chapter2/2-3.ht121.gif

http://www.businessanalysis.cn/article/sxjm/chapter2/2-3.ht113.gif .

于是问题可列写成:

            http://www.businessanalysis.cn/article/sxjm/chapter2/2-3.ht122.gif

             s.t. http://www.businessanalysis.cn/article/sxjm/chapter2/2-3.ht123.gif

3.1.2 相互排斥的约束条件

有两个相互排斥的约束条件

http://www.businessanalysis.cn/article/sxjm/chapter2/2-3.ht125.gif

为了统一在一个问题中,引入 http://www.businessanalysis.cn/article/sxjm/chapter2/2-3.ht127.gif ,则上述约束条件可改写为:

   http://www.businessanalysis.cn/article/sxjm/chapter2/2-3.ht128.gif  

其中 http://www.businessanalysis.cn/article/sxjm/chapter2/2-3.ht129.gif 是充分大的数。

约束条件

        http://www.businessanalysis.cn/article/sxjm/chapter2/2-3.ht132.gif

可改写为

http://www.businessanalysis.cn/article/sxjm/chapter2/2-3.ht130.gif

如果有 http://www.businessanalysis.cn/article/sxjm/chapter2/2-3.ht133.gif 个互相排斥的约束条件:

http://www.businessanalysis.cn/article/sxjm/chapter2/2-3.ht135.gif

为了保证这 http://www.businessanalysis.cn/article/sxjm/chapter2/2-3.ht136.gif 个约束条件

    http://www.businessanalysis.cn/article/sxjm/chapter2/2-3.ht142.gif                         1

http://www.businessanalysis.cn/article/sxjm/chapter2/2-3.ht143.gif                                              2

就合于上述的要求。这是因为,由于(2), http://www.businessanalysis.cn/article/sxjm/chapter2/2-3.ht146.gif 中只有一个能取0值,设 http://www.businessanalysis.cn/article/sxjm/chapter2/2-3.ht147.gif ,代入(1),就只有 http://www.businessanalysis.cn/article/sxjm/chapter2/2-3.ht145.gif 的约束条件起作用,而别的式子都是多余的。



3.1.3 关于固定费用的问题(Fixed Cost Problem

在讨论线性规划时,有些问题是要求使成本为最小。那时总设固定成本为常数,并在线性规划的模型中不必明显列出。但有些固定费用(固定成本)的问题不能用一般线性规划来描述,但可改变为混合整数规划来解决,见下例。

5  某工厂为了生产某种产品,有几种不同的生产方式可供选择, 如选定的生产方式投资高(选购自动化程度高的设备),由于产量大,因而分配到每件产品的变动成本就降低;反之,如选定的生产方式投资低,将来分配到每件产 品的变动成本可能增加。所以必须全面考虑。今设有三种方式可供选择,令

http://www.businessanalysis.cn/article/sxjm/chapter2/2-3_2.89.gif 种方式时的产量;

http://www.businessanalysis.cn/article/sxjm/chapter2/2-3_2.91.gif 种方式时每件产品的变动成本;

http://www.businessanalysis.cn/article/sxjm/chapter2/2-3_2.93.gif 种方式时的固定成本。

为了说明成本的特点,暂不考虑其它约束条件。采用各种生产方式的总成本分别为

  http://www.businessanalysis.cn/article/sxjm/chapter2/2-3_2.95.gif .   

在构成目标函数时,为了统一在一个问题中讨论,现引入http://www.businessanalysis.cn/article/sxjm/chapter2/2-3_2.97.gif ,令

http://www.businessanalysis.cn/article/sxjm/chapter2/2-3_2.98.gif                       3

于是目标函数

          http://www.businessanalysis.cn/article/sxjm/chapter2/2-3_2.99.gif

3)式这个规定可表为下述3个线性约束条件:

              http://www.businessanalysis.cn/article/sxjm/chapter2/2-3_2.1.gif                                  4

其中http://www.businessanalysis.cn/article/sxjm/chapter2/2-3_2.6.gif 0时才有意义,所以(4)式完全可以代替(3)式。

3.2 http://www.businessanalysis.cn/article/sxjm/chapter2/2-3_2.7.gif 型整数规划解法之一(过滤隐枚举法)

http://www.businessanalysis.cn/article/sxjm/chapter2/2-3_2.11.gif ),这几乎是不可能的。因此常设计一些方法,只检查变量取值的组合的一部分,就能求到问题的最优解。这样的方法称为隐枚举法(Implicit Enumeration),分枝定界法也是一种隐枚举法。当然,对有些问题隐枚举法并不适用,所以有时穷举法还是必要的。

下面举例说明一种解http://www.businessanalysis.cn/article/sxjm/chapter2/2-3_2.12.gif 型整数规划的隐枚举法。

6  http://www.businessanalysis.cn/article/sxjm/chapter2/2-3_2.13.gif

        s.t. http://www.businessanalysis.cn/article/sxjm/chapter2/2-3_2.14.gif  

求解思路及改进措施:

i 先试探性求一个可行解,易看出http://www.businessanalysis.cn/article/sxjm/chapter2/2-3_2.16.gif

ii 因为是求极大值问题,故求最优解时,凡是目标值http://www.businessanalysis.cn/article/sxjm/chapter2/2-3_2.17.gif 的解不必检验是否满足约束条件即可删除,因它肯定不是最优解,于是应增加一个约束条件(目标值下界):

http://www.businessanalysis.cn/article/sxjm/chapter2/2-3_2.18.gif ,称该条件为过滤条件(Filtering Contraint)。从而原问题等价于:

  http://www.businessanalysis.cn/article/sxjm/chapter2/2-3_2.19.gif

        s.t.http://www.businessanalysis.cn/article/sxjm/chapter2/2-3_2.20.gif              http://www.businessanalysis.cn/article/sxjm/chapter2/2-3_2.21.gif

 

     若用全部枚举法,3个变量共有8种可能的组合,我们将这8种组合依次检验它是否满足条件(a)(e),对某个组合,若它不满足(a),即不满足过滤条件,则(b)(e)即可行性条件不必再检验;若它满足(a)(e)且相应的目标值严格大于3,则进行( iii )。

iii 改进过滤条件。

iv 由于对每个组合首先计算目标值以验证过滤条件,故应优先计算目标值http://www.businessanalysis.cn/article/sxjm/chapter2/2-3_2.22.gif 大的组合,这样可提前抬高过滤门槛,以减少计算量。

按上述思路与方法,例6的求解过程可由下表来表示:

http://www.businessanalysis.cn/article/sxjm/chapter2/2-3_2.23.gif

目标值

约束条件

过滤条件

a  b  c  d  e

http://www.businessanalysis.cn/article/sxjm/chapter2/2-3_2.24.gif

0

http://www.businessanalysis.cn/article/sxjm/chapter2/2-3_2.25.gif

 

http://www.businessanalysis.cn/article/sxjm/chapter2/2-3_2.26.gif

3

√ √ √ √ √

http://www.businessanalysis.cn/article/sxjm/chapter2/2-3_2.27.gif

http://www.businessanalysis.cn/article/sxjm/chapter2/2-3_2.28.gif

-2

http://www.businessanalysis.cn/article/sxjm/chapter2/2-3_2.29.gif

 

http://www.businessanalysis.cn/article/sxjm/chapter2/2-3_2.30.gif

5

√ √ √ √ √

http://www.businessanalysis.cn/article/sxjm/chapter2/2-3_2.31.gif

http://www.businessanalysis.cn/article/sxjm/chapter2/2-3_2.32.gif

1

http://www.businessanalysis.cn/article/sxjm/chapter2/2-3_2.33.gif

 

http://www.businessanalysis.cn/article/sxjm/chapter2/2-3_2.34.gif

8

√ √ √ √ √

http://www.businessanalysis.cn/article/sxjm/chapter2/2-3_2.35.gif

http://www.businessanalysis.cn/article/sxjm/chapter2/2-3_2.36.gif

6

http://www.businessanalysis.cn/article/sxjm/chapter2/2-3_2.37.gif

 

http://www.businessanalysis.cn/article/sxjm/chapter2/2-3_2.38.gif

3

http://www.businessanalysis.cn/article/sxjm/chapter2/2-3_2.39.gif

 

从而得最优解http://www.businessanalysis.cn/article/sxjm/chapter2/2-3_2.41.gif


蒙特卡洛法(随机取样法)

 

前面介绍的常用的整数规划求解方法,主要是针对线性整数规划而言,而对于非线性整数规划目前尚未有一种成熟而有效的求解方法,因为非线性规划本身的通用有效解法尚未找到,更何况是非线性整数规划。

然 而,尽管整数规划由于限制变量为整数而增加了难度;然而又由于整数解是有限个,于是为枚举法提供了方便。当然,当自变量维数很大和取值范围很宽情况下,企 图用显枚举法(即穷举法)计算出最优值是不现实的,但是应用概率理论可以证明,在一定的计算量的情况下,完全可以得出一个满意解。

7  已知非线性整数规划为:

http://www.businessanalysis.cn/article/sxjm/chapter2/2_4.ht28.gif

s.t. http://www.businessanalysis.cn/article/sxjm/chapter2/2_4.ht29.gif

 

对该题,目前尚无有效方法求出准确解。如果用显枚举法试探,共需计算 http://www.businessanalysis.cn/article/sxjm/chapter2/2_4.ht31.gif 个点,便可找到满意解,那么这种方法的可信度究竟怎样呢?

下面就分析随机取样采集 http://www.businessanalysis.cn/article/sxjm/chapter2/2%E2%80%94%E2%80%B20.gif 个点计算时,应用概率理论来估计一下可信度。

不失一般性,假定一个整数规划的最优点不是孤立的奇点。

假设目标函数落在高值区的概率分别为0.010.00001,则当计算 http://www.businessanalysis.cn/article/sxjm/chapter2/2%E2%80%94%E2%80%B21.gif 个点后,有任一个点能落在高值区的概率分别为

http://www.businessanalysis.cn/article/sxjm/chapter2/2%E2%80%94%E2%80%B22.gif

http://www.businessanalysis.cn/article/sxjm/chapter2/2%E2%80%94%E2%80%B23.gif

  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);

g(1)=sum(x)-400;

g(2)=x(1)+2*x(2)+2*x(3)+x(4)+6*x(5)-800;

g(3)=2*x(1)+x(2)+6*x(3)-200;

g(4)=x(3)+x(4)+5*x(5)-200;

ii )编写如下程序求问题的解:

rand('state',sum(clock));

p0=0;

tic

for i=1:10^5

   x=99*rand(5,1);

x1=floor(x);x2=ceil(x);

[f,g]=mengte(x1);

if sum(g<=0)==4

   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

 

§5  整数规划的计算机解法

整数规划问题的求解可以使用Lingo等专用软件。对于一般的整数规划规划问题,无法直接利用Matlab的函数,必须利用Matlab编程实现分枝定界解法和割平面解法。但对于指派问题等特殊的 http://www.businessanalysis.cn/article/sxjm/chapter2/2%E2%80%94%E2%80%B25.gif 是幺模矩阵时,有时可以直接利用Matlab的函数linprog

8  求解下列指派问题,已知指派矩阵为

   



解:编写Matlab程序如下:

c=

;

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]=linprog(c,[],[],a,b,zeros(25,1),ones(25,1))

求得最优指派方案为 http://www.businessanalysis.cn/article/sxjm/chapter2/2%E2%80%94%E2%80%B27.gif ,最优值为21

x=

0.0000
    0.0000
    0.0000
    0.0000
    1.0000
    0.0000
    0.0000
    1.0000
    0.0000
    0.0000
    0.0000
    1.0000
    0.0000
    0.0000
    0.0000
    0.0000
    0.0000
    0.0000
    1.0000
    0.0000
    1.0000
    0.0000
    0.0000
    0.0000
    0.0000





0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有