我正在向 Excel Solver 添加约束。
约束条件是位置 A3 处的输入数据必须为 0 或介于 3 和 8 之间。
如何在 Excel 求解器中添加此约束,因为我在求解器约束框中找不到“或”函数。它只有“>=”、“<=", "=", "int", "bin", "dif" operators there.
非常感谢
这有点破解,但您可以创建一个函数,当满足约束时该函数为零,而当不满足约束时该函数则为非零。例如,如果您(在命名范围内)有多个有效的单独值
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
语句...
它的用途是,如果一个条件也正确,那么它应该显示为真。