我正在向 Excel Solver 添加一个约束。
约束是说位置 A3 的输入数据必须是 0 或介于 3 和 8 之间。
由于在求解器约束框中找不到“或”函数,如何在 Excel 求解器中添加此约束。它只有 ">="、"<="、"="、"int"、"bin"、"dif" 运算符。
非常感谢
我正在向 Excel Solver 添加一个约束。
约束是说位置 A3 的输入数据必须是 0 或介于 3 和 8 之间。
由于在求解器约束框中找不到“或”函数,如何在 Excel 求解器中添加此约束。它只有 ">="、"<="、"="、"int"、"bin"、"dif" 运算符。
非常感谢
这有点小技巧,但是您可以创建一个在满足约束时为零的函数,而在不满足约束时创建非零函数。例如,如果您(在命名范围内)有多个有效的单个值val_1
等val_2
,以及一个范围llim
和ulim
(下限和上限),那么如果满足您的条件,则以下等式将计算为零:
=(A3 - val_1) * (A3 - val_2) * FLOOR.PRECISE(ABS((A3 - (llim + ulim) / 2) / ((ulim - llim) / 2)))
当 cellA3
是val_1
orval_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
语句......
它用于这种情况的目的,即如果一个条件也正确,那么它应该显示为真。