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

两个正变量取min的非线性约束线性化(NLP场景求解困惑)

在非线性规划中处理min(A,B)约束的方案

已知A、B始终为正,以下是无需二进制变量的精确处理方式,不用依赖近似方法:

1. 约束转化法(最常用)

如果是要让min(A,B)满足某个约束(比如min(A,B) ≥ C),直接拆成两个线性约束即可:

  • A ≥ C
  • B ≥ C

如果是目标函数包含min(A,B)(比如要最大化/minimize min(A,B)),可以引入新变量t,添加以下约束:

  • t ≤ A
  • t ≤ B
  • t ≥ 0
    之后将目标函数替换为对t的优化。这种方式完全精确,且约束都是线性的,NLP求解器可以直接处理。

2. 精确光滑函数表达

如果必须将min(A,B)写成单一非线性表达式(比如嵌入复杂方程),可以用以下完全精确的形式:
min(A,B) = (A + B - |A - B|)/2
大部分NLP求解器支持绝对值这类分段光滑函数。如果求解器不支持绝对值,可替换为平方开根号的形式:
min(A,B) = (A + B - sqrt((A - B)^2))/2
该表达式无任何近似误差,因为sqrt((A-B)^2)等价于|A-B|,对正实数A、B完全适用。

3. 放弃不必要的近似

你之前尝试的带误差项的近似方法完全没必要,上述两种方法都能精确实现min(A,B)的逻辑,不会引入精度损失。

内容的提问来源于stack exchange,提问作者Rogério Rocha

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 14:02:37