2013-10-11 28 views
0

我正在向Excel求解器添加約束。如何在Excel求解器約束中使用「或」

約束是說在位置A3的輸入數據必須是0或和8

之間3

我怎麼能在Excel求解添加此約束,因爲我無法找到「或」在求解約束框功能。它只有「> =」,「< =」,「=」,「int」,「bin」,「dif」運算符。

非常感謝

回答

0

這是一個黑客的一點點,但你可以創建一個功能,就是零,當你滿足約束條件,並非零的時候都沒有。例如,如果您有(在命名範圍內)一些個別值val_1,val_2等等全部有效,範圍llimulim(下限和上限),則下列等式將評估爲零,如果您的條件滿足:

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

當細胞A3或者是val_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語句...