zoukankan      html  css  js  c++  java
  • Integer Programming

    Integer Programming


    Model 1(Linearization of nonlinear integer programming problem)

    When there is a product (x_1,cdots,x_k) of k 0-1 variables (x_j), we call the problem is nonlinear problem. So we deal with the problem with following methods:

    1. Introduce 0-1 variable y to replace product and add two constraint conditions:

      [egin{aligned}&sum_{j=1}^kx_j-yle k-1\ &-sum^k_{j=1}x_j + ky le 0\ &x_j = 0,1,quad j=1,cdots,k\ &y=0,1end{aligned} ]

    2. Introduce non-negative variables (y) to replace the product term (x_1x_2cdots x_k),and we add ((k+1)) limit constraint conditions:

      [egin{aligned} &sum^k_{j=1}x_j - yle k-1,\ &y le x_j,quad j=1,cdots, k\ &y ge 0,\ &x_j = 0,1,quad j=1,cdots, k end{aligned} ]

    Model2 (Linearization of nonlinear integer programming problem)

    problem describe

    [max f(x_1) = egin{cases}10x_1 -100,当x_1 > 0\0quad quad quad quad ,当x_1 = 0 end{cases} ]

    we get

    [max Z = 10x_1 - 100y_1\ x_1 le My_1\ x_1 ge 0,y_1 = 0,1 ]


    The Cutting Plane Method of Pure Integer Programming

    The Geometric Characteristics of Cutting Plane Method

    Mark the integer programming as AIP, it's feasible region is marked as (K_{AIP}). If we get rid of the constraint condition that variables have to be integers, then we get a linear problem (LP), it's feasible region is (K_{LP}).

    The cutting plane method essentially use the same method of solving linear programming to solve integer programming. It's basic idea is:

    When we solve the problem (LP), if the best solve (X^*) is an integer result, then (X^*) is of course the best result of AIP; if not, we try to add a linear constraint condition (call it cutting plane) to split a set out that does not include integer results from (LP)'s feasible region (K_{LP}), then we try to get the best result (X^{**}) of new linear programming. If (X^{**}) is still not the optimal solution of (AIP), then repeat the above process.

    The Comory Cut

    The key point of the cutting plane method is to find an appropriate cut constraint condition. Let's discuss it.

    We import some signs:

    (lfloor x floor) represents the largest integer that does not exceed x, (lceil x ceil) represents the smallest integer that does not less than x. $langle x angle = x - lfloor x floor $

    Say B is a base of (LP), X is a feasible solution of (AIP), as (K_{AIP} in K_{LP}), so X is also a feasible solution of (LP), then X satisfy the equation set:

    [x_{B_j} + sum_{jin I_D}y_{ij}x_j = overline b_i;quad i=1,2,cdots,m ]

    As (X ge 0,lfloor y_{ij} floor le y_{ij}), so

    [x_{B_j} + sum_{jin I_D}lfloor y_{ij} floor x_j le overline b_i;quad i=1,2,cdots,m ]

    As left side is always an integer, so

    [x_{B_j} + sum_{jin I_D}lfloor y_{ij} floor x_j le lfloor overline b_i floor;quad i=1,2,cdots,m ]

    So

    [sum_{jin I_D}(y_{ij} - lfloor y_{ij} floor)x_j ge overline b_i - lfloor overline b_i floor, i=1,2,cdots,m ag{5-20} ]

    This is the necessary condition for every feasible solution in (AIP), we call it the Comory cut.

    Assume B is the optimal base of (LP), X* is the optimal solution about base B of (LP) and X* is not an integer solution. Now then, (x^*_j = 0(jin I_D), x^*_{B_i} = overline b_i(i=1,cdots,m)), and at least one of (overline b_k) is not an integer.

    Now, we choose (i=k) for inequation(5-20), it's left side equal to 0, and the right side is not. In another word, it definitely does not satisfy the Comory cut, so we need to split the X* out. Then we import a slack variable (x_{n+1}) and get a new constraint condition:

    [-sum_{jin I_D}langle y_{ki} angle x_j + x_{n+1} = -langle overline b_k angle ]

    The Comory Cutting Plane Method

    Assume the feasible region (K_{LP}) of (LP) that corresponds to (AIP) is not null and bounded, we give the following calculation steps:

    • Solve (LP) with simplex method, get basic optimal solution X*, optimal base B and optimal table T(B)
    • If X* is not an integer solution, let (langle overline b_k angle = max {langle overline b_i angle|1le ile m}), add the new constraint condition (-sum_{jin I_D}langle y_{ki} angle x_j + x_{n+1} = -langle overline b_k angle) to (LP) to get a new (LP). Then solve this new (LP).
    • If we get the best integer solution, done. If not, repeat the above process.
    • Tip: When we find a slack variable (x^{'}) become basic variable again after the spinning the spindle, delete the row and the column corresponding to the (x^{'}) may be a better option.
    我愿潇洒如鹰,远离地上宿命
  • 相关阅读:
    Kubernetes Dashboard不能用谷歌浏览器登录,只能用火狐浏览器登录的问题。
    kubernetes集群(centos7)
    监控java进程是否正常运行
    电脑上文件的后缀名被隐藏,把一个文本文件改成.bat时,默认打开的还是文本。
    光猫&路由器网络配置
    python3查询Excel中A表在B表没有的数据,并保存到新的Excel,这里用的是“xlrd”和“xlwt”
    linux服务开机启动
    python_字符串,元组,格式化输出
    adb命令
    jenkins发送邮件
  • 原文地址:https://www.cnblogs.com/lunar-ubuntu/p/12742106.html
Copyright © 2011-2022 走看看