2013-12-14 198 views
0

我正在創建一個我有問題的Excel表格。一個容器需要容納所需量的32000L化學品,我必須儘量減少表面積並獲得容器的半徑和高度。我用數字方式解決了這個問題,但是我堅持在excel上使用IF語句。Excel中的優化公式

我正在使用黃金分割搜索優化方法。

我應該如何實現一個IF語句,其中,f(x2)> f(x1),但同時放入f(x1)> f(x2)。所以它是一個或其他人。我可以使用=IF(G2<C2,D2,B3)獲得一條IF語句,但我不知道如何實現(否則使用此值)。

我希望我解釋說,正確的,任何幫助將會走很長的路,並提前感謝。

+0

你不是已經這麼做了嗎?如果'G2 f(x1))則爲'D2',否則,如果'G2> = C2'(意思f(x1)> f(x2)只有'> ='部分,但是你可以在'IF'函數的else部分中使用另一個'IF'。 – Jerry

+0

我得到自己困惑哈哈,我有兩個單元格可能會從以前的迭代轉移。如果我發現f(xl)> f(x2),那麼單元格B3 = f(x2),但如果我找到f(xu)> f(x1),則在此迭代的同一行中,那麼單元格H3 = f(x1 )。所以我只需要發生兩個陳述中的一個。我應該在每個單元格中使用兩個IF語句嗎? – user3102056

回答

0

使用的http://en.wikipedia.org/wiki/Golden_section_search的符號,你的搜索程序應基於類似的迭代步驟,

  1. 開始與三個值X1,X2和X3,使得X1 < X2 < X3和 的差異以黃金比率
  2. 計算第四值x4,使得涉及它的某些差異也落入黃金比例
  3. 從當前值集合{x1}計算新的一組值{x1,x2,x3} ,x2,x3,x4}我們根據f(x2)是大於還是小於f(x4)來選擇不同的規則。新值也滿足條件,即x1和x3分別代表黃金比例下降和設置下一次迭代的起始值。

雖然看起來好像有兩種情況下,你必須要考慮[根據F(X2)是否大於F以下(X4)]其實有4例考慮。

由於有兩種方法可以排列值x1,x2和x3,並且仍然滿足上述1.中所述的條件,所以會出現其他情況。維基百科文章中的圖表顯示x2比x3更接近x1。我將這種情況稱爲RIGHT,因爲x1和x3之間的兩條線段中的較長者出現在右邊。還有第二種情況,其中x2更接近x3,因此較長的段位於左側,我將其稱爲「左側」。在這兩種情況下,x4的計算方法不同 - 對於右側情況x4大於x2,而在左側情況下x4應該小於x2。根據當前的x1,x2和x3值是否落入右或左排列以及是否f(x,x2,x3)是否存在,從當前x1,x2,x3,x4值確定下一組x1,x2,x3有4種情況或映射。 x2)大於或小於f(x4) - 2個可能性(RIGHT或LEFT)乘以2個可能性(f(x2)大於或小於f(x4))總共給出4個可能的情況。另外,這些情況中的2個導致新的x1,x2和x3值落入右側佈置,並且2導致左側佈置。

要正確管理迭代步驟,您需要正確識別這4種情況。使用Excel狀符號,用於計算X4式(每個迭代步驟中的部分2)是

=x2*(1 + 1/r) - IF(case="RIGHT", x1, x3)/r [where r is the golden ratio] 

的公式用於計算新X1值(部分3的一部分。每個迭代步驟的)是

=IF(case="RIGHT",IF(f(x4)<f(x2), x2, x1), IF(f(x4)<f(x2), x1, x4)) 

第一公式使用一個IF()根據X1,X2和X3的當前安排是否分別和然後採用符合RIGHT或LEFT情況下,提供X 1或X 3這個值作爲計算x4的表達式的一部分。第二個公式使用嵌套的IF(),你應該能夠看到公式如何代表上面討論的4種情況。我會把它留給你作爲練習來計算x2和x3新值的公式,但它們都使用與上面第二個公式相同的嵌套IF()結構。您也可以使用相同的結構作爲公式來提供新的x1,x2和x3值的新案例排列。使用鉛筆和紙張繪製每個案例是計算所需公式的一個很好的起點。

如果你能找出所有的公式正確,那麼你可以構建具有7列

case, x1, x2, x3, x4, f(x2), f(x4)

在連續行表示連續的迭代步驟的列表。每行中的第五個值是使用上面第一個公式從同一行中的前4個值計算出來的,第六個和第七個值分別是根據同一行中的第三個和第五個值計算得出的。第二個值是使用上面第二個公式使用前一行的值計算的。同樣,第一,第三和第四個值是使用我爲您自己制定的公式計算出來的,但每個公式都會引用前一行中的值。您可以添加第8列來告訴您迭代過程何時充分收斂 - 可能是基於第7列和第8列之間的絕對差異。作爲最終評論,除非你有一個使用迭代方法來找到你的函數最小值的特定原因,否則使用微積分來解決你的問題要容易得多 - 也許這就是你的陳述意味着你「用數字來解決問題」。