如何在Excel Solver约束中使用“或”

问题描述 投票:0回答:2

我正在向 Excel Solver 添加约束。

约束条件是位置 A3 处的输入数据必须为 0 或介于 3 和 8 之间。

如何在 Excel 求解器中添加此约束,因为我在求解器约束框中找不到“或”函数。它只有“>=”、“<=", "=", "int", "bin", "dif" operators there.

非常感谢

excel excel-2010
2个回答
0
投票

这有点破解,但您可以创建一个函数,当满足约束时该函数为零,而当不满足约束时该函数则为非零。例如,如果您(在命名范围内)有多个有效的单独值

val_1
val_2
等,以及范围
llim
ulim
(下限和上限),则以下内容如果满足您的条件,方程将计算为零:

=(A3 - val_1) * (A3 - val_2) * FLOOR.PRECISE(ABS((A3 - (llim + ulim) / 2) / ((ulim - llim) / 2)))

当单元格

A3
val_1
val_2
时,您将把表达式乘以零;当
A3
位于
llim
ulim
之间时,FLOOR.PRECISE() 函数内的表达式的计算结果将小于 1 - 因此 FLOOR 将为零。

在单元格中输入该表达式,并限制该单元格必须为零......它应该起作用。它对我有用 - 优化功能为“3 * A3”,限制设置为 3 和 8,解决方案是

7.99999

注意 - 这样做的一个问题是,您很可能会让求解器“卡在”一个区间内 - 它永远不会注意到其他可能的值。如果这很重要,您可能必须将连续变量转换为具有离散值和范围的变量。示例:

=IF(A3<-1,val_1,IF(A3<0,val_2,llim+(ulim-llim)*ATAN(A3)*2/PI()))

现在

A3
可以在整个范围内变化,但包含此公式的单元格中将始终具有“有效”值。同样,如果您需要更多固定值,您可以添加更多嵌套
IF
语句...


-4
投票

它的用途是,如果一个条件也正确,那么它应该显示为真。

© www.soinside.com 2019 - 2024. All rights reserved.