我正在向Excel求解器添加約束。如何在Excel求解器約束中使用「或」
約束是說在位置A3的輸入數據必須是0或和8
之間3我怎麼能在Excel求解添加此約束,因爲我無法找到「或」在求解約束框功能。它只有「> =」,「< =」,「=」,「int」,「bin」,「dif」運算符。
非常感謝
我正在向Excel求解器添加約束。如何在Excel求解器約束中使用「或」
約束是說在位置A3的輸入數據必須是0或和8
之間3我怎麼能在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)))
當細胞A3
或者是val_1
或val_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
語句...