在上一篇我们列举了各式各样的整数与组合规划模型。一些是含离散约束的线性规划,一些是含整数变量的线性规划,还有一些是连续与整数组合的非线性规划。这些模型的求解方法也极为丰富,今天我们介绍精确优化(exact optimal)方法。
传送门:离散优化模型
1
全枚举法求解
如果一个模型只有少数离散变量,最有效的求解方法往往也是最直接的:列举出所有可能。这个称为全枚举法(total enumeration),它尝试离散变量取值的所有组合,计算出任何连续变量在每种情形下的最佳对应取值来解决离散优化问题。
比如瑞士钢铁“全或无”的案例中:
这个案例中,只有两个离散决策变量,前后只需要跑四次线性规划模型即可。要是遇到指数级增长的离散变量,该方法显然不再是一种可以考虑的途径。
2
松弛模型
松弛模型(relaxation)通过寻找与离散优化模型相关但更简单的建模来解决原问题,在给定的离散模型中,松弛模型要么削弱约束,要么削弱目标函数,或者同时削弱两者。
案例:野牛助力者
野牛助力者俱乐部支持他们正决定在下一个地区展会时采用什么方式为当地运动队筹款,一个选择是个性定制T恤衬衫,每件卖20美元;另一个选择是卖运动衫,每件30美元。历史数据表明,展销品都将在展会结束前卖光。
制作衬衫的材料都是当地商人捐赠,但是助力者必须租借定制用的设备。用来制作T恤衫的设备在展会期间的租用价格为550美元,制作运动衫的设备租价为720美元。展示空间也是需要考虑的另外一点。在展会上,助力者只有面积为300平方英尺的墙作为展示空间。每件T恤衫会占用1.5平方英尺,而每件运动衫会占用4平方英尺。那么,哪个计划将产生最大的净利润呢?
根据以上场景,转化为离散优化模型:
利用全枚举法,容易得到最优解为:
下面我们对约束条件进行放松,看看最优解的变化,以下列出了三种情况:
松弛模型应该遵循比原模型更易处理的原则,这样会让更加深入的分析变得可行。根据此,容量翻倍不满足要求,因为模型特征没有改变。第二个松弛更有效一点,因为解除了两种衬衫生产决策的联系。
第三种情况刻画了所有约束条件的松驰中最著名并且最常用的一种——线性规划松弛(linear programming relaxation),又称连续松弛(continuous relaxation):
连续松弛是一种约束条件的松弛:保留所有其他约束,但将任何离散变量都看成连续变量
并非所有松弛都是对约束条件的放松,有时候目标函数也会被弱化。我们定义一个完整的松弛模型:
对于优化问题(R)和优化问题(P),如果满足(i)每一个P的可行解在R中也都可行,并且(ii)P中每个可行解在R中的目标值与其在P中的目标相比都相等或更好,那么优化问题R是优化问题P的松弛
用数学符号表达就是:
进一步,我们有结论:如果一个松弛是不可行的,那么它的原模型也是不可行的
下面韦恩图展示了原问题与松弛问题的可行解关系:
注意,松弛模型提供了原问题最优解的确界(最大值问题是上界,最小问题是下界)。比如EMS模型,如果把离散变量全部改为连续变量获得松弛模型,利用单纯形法很容易得到一个最优解: