如何使用;或;Excel中的解算器约束

如何使用;或;Excel中的解算器约束,excel,excel-2010,Excel,Excel 2010,我正在向Excel解算器添加约束 约束条件是位置A3处的输入数据必须为0或介于3和8之间 由于在“解算器约束”框中找不到“或”函数,如何在Excel解算器中添加此约束。它只有“>=”,“这是一个小技巧,但您可以创建一个函数,当满足约束时为零,当不满足约束时为非零许多单独的值val_1,val_2等都是有效的,并且范围llim和ulim(下限和上限),如果满足条件,则以下方程式将计算为零: =(A3 - val_1) * (A3 - val_2) * FLOOR.PRECISE(ABS((A3 -

我正在向Excel解算器添加约束

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


由于在“解算器约束”框中找不到“或”函数,如何在Excel解算器中添加此约束。它只有“>=”,“这是一个小技巧,但您可以创建一个函数,当满足约束时为零,当不满足约束时为非零许多单独的值
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
之间时,地板内的表达式。PRECISE()函数将计算为小于1的值-因此地板为零

在单元格中输入该表达式,并约束该单元格必须为零……它应该可以工作。对我来说,它可以工作-优化函数为“3*A3”,限制设置为3和8,解决方案是
7.99999

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

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

=如果(A3用于情况正确的目的,如果一个条件也正确,则应显示为真