混合整数线性规划 (MILP) 算法
混合整数线性规划定义
混合整数线性规划 (MILP) 问题具有以下要素:
-
线性目标函数 fTx,其中 f 是由常数组成的列向量,x 是由未知数组成的列向量
-
边界和线性约束,但没有非线性约束(有关定义,请参阅编写约束)
-
对 x 的某些分量的限制,使其必须具有整数值
以数学语言表达,即根据向量 f、lb 和 ub,矩阵 A 和 Aeq,对应的向量 b 和 beq,以及索引集 intcon
,求解向量 x 使下式成立
intlinprog 算法
算法概述
intlinprog
使用此基本策略来求解混合整数线性规划。intlinprog
可以在任一阶段完成问题的求解。如果它在某个阶段成功求解了问题,intlinprog
不会执行后面的阶段。
-
使用线性规划预处理缩减问题的规模。
-
使用线性规划求解初始松弛(非整数)问题。
-
执行混合整数规划预处理以收紧混合整数问题的 LP 松弛。
-
尝试切割生成以进一步收紧混合整数问题的 LP 松弛。
-
尝试使用启发式方法求得整数可行解。
-
使用分支定界算法系统地搜索最优解。此算法通过限制整数变量的可能值范围来求解 LP 松弛问题。它尝试在最优目标函数值上生成一系列更新边界。
线性规划预处理
根据混合整数线性规划定义,矩阵 A 和 Aeq 以及对应的向量 b 和 beq 以如下形式编写一组线性不等式和线性等式
A · xAeq · x≤b=be