gpt4 book ai didi

linear-programming - 如何在 AMPL 中相对于另一个变量分配二进制变量

转载 作者:行者123 更新时间:2023-12-04 07:57:59 25 4
gpt4 key购买 nike

我对 AMPL 建模有疑问。你能帮我定义一个二元变量 u 吗?当另一个变量 x 也等于 0 时,u 应该等于 0;当 x 不等于 0 时,u 应该等于 1?

我试图使用逻辑表达式,但我正在使用的求解器(cplex 和 minos)不允许它。

我的想法是:

subject to:
u || x != u && x

最佳答案

M一个“大”常量,例如 x < M成立,并假设 x是一个整数(如果 x >= 1 是连续的,则为 x)。您可以使用两个约束:

 u <= x     (if x=0, then u=0)
x <= M*u (if x>0, then u=1)

u一个二进制变量。

如果现在x是连续的且不一定大于 1,您将必须调整上述约束(例如,此处的第一个约束不会用 x=0.3u=1 验证)。

一般的想法是,您可以(在许多情况下)用不等式替换那些逻辑约束,使用 if a 的事实。和 b是 bool 变量,那么语句“a 表示b”可以写成b>=a (如果 a=1 ,则 b=1 )。

关于linear-programming - 如何在 AMPL 中相对于另一个变量分配二进制变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16470413/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com