混合整数线性规划(MILP)
线性规划模型(Linear Programming, LP):LP的定义比较简单,它指的就是目标函数是线性的,所有约束也是线性的,最后,决策变量可以取任何的实数。如果在线性规划问题中有部分决策变量要求必须是整数, 那么这时的规划问题就转变成混合整数线性规划问题了。也就是说优化问题不止有条件约束,还有整数约束。
举例:
min x1+x2 “数学问题描述”
x1-2x2>=6 “条件约束”
x1 in integer“整数约束”,x2>=0 “条件约束”
求解:
在MatLab中,线性规划类问题的求解基本上有两种解决方案,最简单的是直接调用求解器(solver)求解,这叫做solver-based linear programming,求解的命令是linprog和intlinprog。这种方案简单,但需要我们手动列出所有系数矩阵、向量(Ax<=b;Aeq.x<=beq;and so on)。当约束增多,这个工作几乎是不可行的。
MatLab提供了基于问题的求解方案(problem_based linear programming)。这种方案更加直观,缺点是需要自己一步步实现,它实际上上也是调用了求解器,使用单纯形法、内点法等方法求解(可以指定)。
混合整数线性规划模型的求解算法主要包括 精确算法 和 启发式算法 两类,其中 精确算法 包括 分支定界法、列生成法等, 启发式算法 包括 遗传算法、蚁群算法、粒子群算法、模拟退火算法等。
其中,精确算法能够求得模型的精确最优解,但其缺点在于在现有计 算机技术下、在有限的计算时间内无法处理决策变量较多的问题。而启发 式算法虽然能够处理决策变量较多的问题,但其得到的最优解为近似最优 解,且比较容易陷入局部最优解,所求得的近似最优解与实际最优解之间 的差距无法衡量和估计。