You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对决策变量应用取整函数并线性化含取整函数的约束

线性规划中Floor/Ceiling函数的线性化方法

一、Floor函数的线性化(y = floor(x))

假设x是连续决策变量,y是整数决策变量,要实现y等于x的向下取整值(即y是不大于x的最大整数,比如x=4.2时y=4),需要添加以下3组约束:

  • y ≤ x:确保y不会超过x的取值
  • x ≤ y + 1 - ε:这里的ε是一个极小的正数(例如1e-6),用来替代严格不等式x < y+1——因为线性规划求解器不支持严格约束,用这个近似可以避免整数边界的精度问题
  • y ∈ ℤ:明确声明y必须是整数类型的决策变量

示例验证:当x=4.2时,代入约束:

  1. y ≤4.2
  2. 4.2 ≤ y +1 -0.000001 → 计算得y ≥3.200001
    结合y是整数的要求,y只能取4,完全符合需求。

二、Ceiling函数的线性化(y = ceiling(x))

如果要实现y等于x的向上取整值(即y是不小于x的最小整数,比如x=4.2时y=5),同样用连续变量x和整数变量y,添加以下约束:

  • y ≥ x:确保y不会小于x的取值
  • x ≥ y -1 + ε:用该式替代严格不等式x > y-1,ε取极小正数(如1e-6)
  • y ∈ ℤ:声明y为整数决策变量

示例验证:当x=4.2时,代入约束:

  1. y ≥4.2
  2. 4.2 ≥ y -1 +0.000001 → 计算得y ≤5.199999
    结合整数要求,y只能取5,符合预期。

三、含Floor/Ceiling的约束线性化

如果原约束中直接包含Floor或Ceiling函数(例如floor(x) ≤ z或z ≤ ceiling(x)),可以按以下步骤处理:

  1. 引入整数变量y,让y等于对应的Floor/Ceiling值(按上述两种情况添加约束)
  2. 将原约束中的Floor/Ceiling函数替换为y,得到线性约束(比如y ≤ z或z ≤ y)

注意事项

  • ε的取值要合理:太小可能触发求解器的精度误差,太大可能导致逻辑偏差,通常取1e-6到1e-9之间,可根据求解器的精度调整
  • 必须确保y被声明为整数变量,否则无法实现取整效果

内容的提问来源于stack exchange,提问作者bimal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 09:40:08