整数规划之割平面法

上文讲了分支定界法,但是太过繁琐,所以人为计算时很少使用。割平面法同样也是计算整数问题的常用方法之一,但是相对于分支定界法,计算量要小许多,不用每次都要分两种情况进行讨论,而是用它特有的简便方法进行选择。

下面我们同样在实战中进行讲解怎样使用割平面法,以下图(I)问题为例:

在这里插入图片描述
和分支定界法不同的是,割平面法第一步不仅需要暂时不考虑整数这一条件,而且需要将约束条件左右两端都化为整数,进一步化为标准型。

然后用单纯形法进行求解,可以得出下表:

在这里插入图片描述
可以发现,现在的可行解还不是整数,所以现在要对其进一步优化,这也是割平面法关键步骤。

将x1和x2的值化成整数+小数的形式,但是要求小数必须是正数,而且是能化成的最小正数。例如:x1 = 4 + 12,x2=3 + 12。这里本应取小数最大的一列进行下一步运算,但是两行的小数相等,所以只能比较每一行对应的其余小数值之和,较小的那一行进行下一步运算。具体实现如下:

x1 这一行其余值为:-1 + 2122和0 + 322,即和值为2422
x2 这一行其余值为:0 + 722和0 + 122,即和值为822

因此选择x2对应的这一行进行下一步运算:

也就是根据这一行添加一个新的约束条件,但用的是原来的值中的小数部分:
12 <= 722x3 + 822x4

添加松弛变量后为:
-722 x3 - 122 x4 + y1 = -12

将上面的式子作为约束条件加入单纯性表中为:

在这里插入图片描述

这里由于y1的值为负值,所以需要使用对偶单纯形法,然后得到:

在这里插入图片描述
可以看到,x1和x3的值仍然是小数,所以需要继续使用上面所说的方法进行计算哪一行可以作为约束条件进行进一步计算。经过上述方法计算可以得到x1更为合适,因此将其代入单纯性表中可以得到:

在这里插入图片描述
经过换基迭代得到:
在这里插入图片描述
可以看到可行解为整数,因此该解为该整数规划的最优解。注意由于该问题进行计算时使用的是Max类型,因此最优值要取相反数,即55。

  • 18
    点赞
  • 138
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
平面(Cutting Plane Method)是一种求解线性规划问题的方。它通过在每一步迭代中添加一个平面来逐渐逼近最优解。下面是用MATLAB实现平面的一般步骤: 1. 首先,确定线性规划问题的标准型表达式,其中包括目标函数和约束条件。 2. 初始化初始可行解,可以使用单纯形等方得到。 3. 对于初始可行解,计算其对应的目标函数值,如果目标函数值满足优化标准,则停止计算,当前解即为最优解。 4. 如果目标函数值不满足优化标准,选择一个违反约束条件的初始可行解,并在其基础上构造一个平面。 5. 构造平面的方可以使用最大流算法,如网络简单算法。 6. 利用平面更新目标函数值,得到新的可行解。 7. 重复步骤3-6,直到得到满足优化标准的最优解。 MATLAB可以通过线性规划工具箱来实现平面。它提供了一些函数,如linprog等,可以直接调用。首先,需要构造目标函数和约束条件的系数矩阵,并指定目标函数的最小化/最大化。然后,将这些参数传递给linprog函数,并调用它来求解最优解。 平面在线性规划问题中具有一定的优势,它可以不断逼近最优解,并且对于复杂的大规模问题也可以有效求解。然而,需要注意的是,平面可能在处理某些问题时存在困难,并且迭代次数较多,导致计算时间较长。因此,在实际应用中,需要综合考虑问题的复杂度和计算效率。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值