整数编程

用整数约束解决优化问题

整数规划算法最小化或最大化受等式、不等式和整数约束的函数。整数约束限制优化问题中的部分或所有变量仅采用整数值。这使得涉及离散数量(如股票份额)或是或否决策的问题的精确建模成为可能。当只有部分变量存在整数约束时,该问题称为混合整数规划(MIP)。整数规划问题的例子包括投资组合优化在能源生产中的金融,最佳调度(单位承诺),设计优化在工程和调度和运输和供应链应用中的调度和路由。

整数编程是查找要最小化函数的向量\(X \)的数学问题:

\ [\ min_x f(x)\]

受限制:

\[\begin{eqnarray}g(x)\leq 0&\quad&\text{(不等式约束)}\\h(x)=0&\quad&\text{(等式约束)}\\x\u i\in\mathbb{Z}&\quad&\text{(整数约束)}\end{eqnarray}]

这是最常见的整数编程形式,称为混合整数非线性程序(MINLP)。

只有线性目标和约束可以配制许多问题。在这种情况下,整数程序称为混合整数线性程序(MILP),并编写为:

\ [\ min_ {x} \ left \ {f ^ {\ mathsf {t}} x \ rick \} \]

受限制:

\ [\ begin {eqnarray} ax \ leq b&\ quad&\ text {(不等式约束)} \\ a_ {eq} x = b_ {eq}&\ quad&\ text {(平等约束)} \\ lb\ LEQ X \ LEQ UB&quad&\ text {(绑定约束)} \\ x_i \ in \ mathbb {z}&\ quad&\ text {(整数约束)} \ neg {eqnarray} \]

整数编程算法可以用诸如MATLAB的软件中实现®. 解决MILP通常需要使用多种技术组合来缩小解决方案空间,找到整数可行解决方案,并丢弃解决方案空间中不包含更好整数可行解决方案的部分。整数规划的常用技术包括:金宝搏官方网站

  • 切割平面图:为减少搜索空间的问题添加其他约束。
  • 启发式:搜索整数可行解。金宝搏官方网站
  • 分支和绑定:系统地搜索最佳解决方案。算法解决了线性规划放宽具有整数变量可能值的受限范围。

优化工具箱™中的MILP求解器实现了这些技术。

通过将这些整数规划技术应用于非线性函数,或通过将非线性函数线性化并求解MILP序列,可以解决一些MINLP。当非线性函数只能在积分点处计算时,需要其他技术。全局优化工具箱中实现了两种适用于这类整数程序的算法:

  • 遗传算法:模拟自然选择过程,该过程反复修改限制为整数值的单个解决方案的总体。金宝搏官方网站
  • 代理优化:自动构建一个可以放松的问题的代理模型,然后通过将MILP技术对MINLP的改编来解决。

有关整数编程的更多信息,请参阅优化工具箱全局优化工具箱




混合整数线性编程示例



也可以看看:优化工具箱全局优化工具箱线性规划二次编程非线性编程遗传算法投资管理能源交易规定性分析