gpt4 book ai didi

linear-programming - 整数线性规划 (ILP) 中具有多重赋值的 If-Then-Else

转载 作者:行者123 更新时间:2023-12-04 07:52:13 24 4
gpt4 key购买 nike

我有一个 ILP 问题,我在其中表达了实现 A OR B 的一些约束,其中 A 和 B 是逻辑与的结果(假设 A = A1 AND A2,B = B1 AND B2 AND B3)。在我的问题的这一点上,A和B之间的一个被称为等于1。A和B都是二元变量。

我想用 If-Then-Else 表达这个断言:

if (A == true)
/* Choose one between C and D */
C_OR_D >= C;
C_OR_D >= D;
C_OR_D <= C + D;
C_OR_D = 1;
else /* or if (B == true), that's the same */
/* Choose one between E and F */
E_OR_F >= E;
E_OR_F >= F;
E_OR_F <= E + F;
E_OR_F = 1;

我知道如何编写简单的 If-Condition,例如

/* if (x == true) then y = true */
y >= x;

但我不知道如何写一组约束来表达一个“复杂”的if。

你们中有人知道如何在 LPSolve 中解决这个问题吗?

最佳答案

回答第一部分:

AND 可以建模为

A >= A1 + A2 -1
A <= A1
A <= A2

OR 可以建模为

B >= B1
B >= B2
B <= B1 + B2

要对 if-else 约束建模,您可以使用“大 M”技术。

设 M 是一个足够大的数。

您可以通过在不等式的一侧添加 M 来“禁用”不等式。那么无论变量值如何,不等式都成立。

例如

if (A == 1)
C_OR_D >= C;
else
E_OR_F >= E;

可以建模为

(1-A) * M + C_OR_D >= C
A * M + E_OR_F >= E

关于linear-programming - 整数线性规划 (ILP) 中具有多重赋值的 If-Then-Else,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24838371/

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