整数规划之割平面法

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

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

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

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

整数规划之割平面法_第2张图片
可以发现,现在的可行解还不是整数,所以现在要对其进一步优化,这也是割平面法关键步骤。

将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

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

整数规划之割平面法_第3张图片

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

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

整数规划之割平面法_第5张图片
经过换基迭代得到:
整数规划之割平面法_第6张图片
可以看到可行解为整数,因此该解为该整数规划的最优解。注意由于该问题进行计算时使用的是Max类型,因此最优值要取相反数,即55。

你可能感兴趣的:(运筹学,线性代数,动态规划,算法)