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

时间:2013-10-11 01:35:52

标签: excel excel-2010

我正在为Excel Solver添加约束。

约束是说位置A3的输入数据必须是0或3到8之间。

如何在Excel Solver中添加此约束,因为我在求解器约束框中找不到'或'函数。它只有“> =”,“< =”,“=”,“int”,“bin”,“dif”运算符。

非常感谢

2 个答案:

答案 0 :(得分:0)

这有点像黑客攻击,但你可以创建一个在满足约束时为零的函数,而在不满足约束时则为非零函数。例如,如果您(在命名范围内)有多个单独的值val_1val_2等等都是有效的,范围llimulim(更低)如果符合条件,则下面的等式将评估为零:

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

当单元格A3val_1val_2时,您将表达式乘以零;当A3介于llimulim之间时,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语句...

答案 1 :(得分:-2)

用于一种情况,即如果一个条件也正确,则应显示为真。