我正在将约束添加到Excel解算器。该约束是说在位置A3处的输入数据必须是0或在3和8之间。我怎么能在Excel中添加这个约束,因为我找不到'或'功能在求解器约束框。它只有“>=",“<=",“=",“int”,“bin”,“dif”操作符。谢谢
7cjasjjr1#
这是一个小技巧,但你可以创建一个函数,当你的约束满足时为零,当它们不满足时为非零。例如,如果您有(在命名范围内)多个单独的值val_1,val_2等。都有效,范围llim和ulim(下限和上限),则如果满足您的条件,下面的等式将计算为零:
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。注意-这样做的一个问题是,您很可能会在一个时间间隔内“卡住”求解器-它永远不会注意到其他可能的值。如果这很重要,您可能必须将连续变量转换为具有离散值和范围的变量。示例:
A3
7.99999
=IF(A3<-1,val_1,IF(A3<0,val_2,llim+(ulim-llim)*ATAN(A3)*2/PI()))
现在A3可以在整个范围内变化,但是包含这个公式的单元格中总是有一个“有效”值。同样,如果你需要更多的固定值,你可以添加更多的嵌套IF语句。
IF
yruzcnhs2#
它用于这样的情况,如果一个条件也是正确的,那么它应该显示为真。
2条答案
按热度按时间7cjasjjr1#
这是一个小技巧,但你可以创建一个函数,当你的约束满足时为零,当它们不满足时为非零。例如,如果您有(在命名范围内)多个单独的值
val_1
,val_2
等。都有效,范围llim
和ulim
(下限和上限),则如果满足您的条件,下面的等式将计算为零:当单元格
A3
为val_1
或val_2
时,将表达式乘以零;当A3
在llim
和ulim
之间时,FLOOR.PRECISE()函数中的表达式将计算为小于1的值,因此FLOOR将为零。在一个单元格中输入该表达式,并使此单元格必须为零的约束条件...应该能成功对我来说确实如此--要优化的函数是“3 * A3”,限制设置为3和8,解决方案是
7.99999
。注意-这样做的一个问题是,您很可能会在一个时间间隔内“卡住”求解器-它永远不会注意到其他可能的值。如果这很重要,您可能必须将连续变量转换为具有离散值和范围的变量。示例:
现在
A3
可以在整个范围内变化,但是包含这个公式的单元格中总是有一个“有效”值。同样,如果你需要更多的固定值,你可以添加更多的嵌套IF
语句。yruzcnhs2#
它用于这样的情况,如果一个条件也是正确的,那么它应该显示为真。