【问题标题】:Optimisation formula in excel [duplicate]excel中的优化公式[重复]
【发布时间】:2014-01-02 04:26:25
【问题描述】:

我正在创建一个我遇到的问题的 Excel 表。一个罐子要容纳所需体积的 32000L 化学品,我必须最小化表面积并获得罐子的半径和高度。我已经用数字解决了这个问题,但是我在 excel 上遇到了一个 IF 语句。

我正在使用黄金分割搜索优化方法。

我应该如何实现一个 IF 语句,其中 f(x2)>f(x1) 但同时放入 f(x1)>f(x2)。所以要么是一个,要么是其他。我可以使用=IF(G2<C2,D2,B3) 获得一个 IF 语句,但我不知道如何实现(否则使用此值)。

我希望我的解释是正确的,任何帮助都会有很大帮助,并提前致谢。

【问题讨论】:

  • 你不是已经这样做了吗?如果G2<C2(意思是f(x2)>f(x1))那么D2,否则如果G2>=C2(意思是f(x1)>f(x2))那么B3?只有>= 部分,但您可以在IF 函数的else 部分中使用另一个IF
  • 我搞糊涂了,哈哈,我有两个单元格可能会从上一次迭代中发生变化。如果我发现 f(xl)>f(x2) 则单元格 B3=f(x2) 但在此迭代的同一行中如果我发现 f(xu)>f(x1) 则单元格 H3=f(x1 )。所以我只需要出现两个语句之一。我应该在每个单元格中使用两个 IF 语句吗?

标签: excel optimization if-statement minimum


【解决方案1】:

使用http://en.wikipedia.org/wiki/Golden_section_search 的符号,您的搜索过程应该基于类似于迭代步骤的东西

  1. 从三个值 x1、x2 和 x3 开始,使得 x1
  2. 计算第四个值 x4,以便涉及它的某些差异也属于黄金比例
  3. 根据 f(x2) 是否大于或小于 f(x4),使用不同的规则从当前的一组值 {x1,x2,x3,x4} 中计算出一组新的值 {x1,x2,x3} .新值还满足 x1

虽然看起来有两种情况需要考虑 [根据 f(x2) 是否大于或小于 f(x4)],但实际上有 4 种情况需要考虑。

出现额外的情况是因为有两种方式可以排列 x1、x2 和 x3 的值,并且仍然满足上面 1. 中规定的条件。维基百科文章中的图表显示 x2 比 x3 更接近 x1。我将这种情况称为 RIGHT,因为 x1 和 x3 之间的两条线段中较长的一条出现在右侧。还有第二种情况,x2 更接近 x3,因此较长的段在左侧,我将其称为 LEFT。在这两种情况下 x4 的计算不同 - 对于 RIGHT 情况,x4 大于 x2,而在 LEFT 情况下,x4 应该小于 x2。根据当前的 x1、x2 和 x3 值是属于右排列还是左排列以及 f( x2) 大于或小于 f(x4) - 2 种可能性(右或左)乘以 2 种可能性(f(x2) 大于或小于 f(x4))总共给出 4 种可能的情况。此外,其中 2 种情况导致新的 x1、x2 和 x3 值属于 RIGHT 排列,2 种导致 LEFT 排列。

要正确管理迭代步骤,您需要正确识别这 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 情况来传递 x1 或 x3,然后将传递的值用作计算表达式的一部分x4。第二个公式使用嵌套的 IF(),您应该能够看到该公式如何表示上面讨论的 4 种情况。我将把它留给你作为练习来计算 x2 和 x3 的新值的公式,但它们都使用与上面第二个公式相同的嵌套 IF() 结构。您还可以使用相同的结构作为公式来提供新的 x1、x2 和 x3 值的新大小写排列。用铅笔和纸画出每个案例是制定所需公式的良好起点。

如果你能正确计算出所有的公式,那么你可以构建一个包含 7 列的列表

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

其中连续的行表示连续的迭代步骤。每行的第五个值是使用上面的第一个公式从同一行的前 4 个值计算出来的,第六个和第七个值是分别从同一行的第三个和第五个值计算出来的。第二个值是使用上一行中的值使用上面的第二个公式计算的。同样,第一个、第三个和第四个值是使用我留给您自己计算的公式计算的,但每个公式都将引用前一行的值。您可以添加第 8 列来告诉您迭代过程何时充分收敛 - 可能基于第 7 列和第 8 列之间的绝对差异。

作为最后的评论,除非您有特定原因使用迭代方法来查找函数最小值,否则使用微积分完全解决您的问题会容易得多 - 也许这就是您所说的意思“以数字方式完成问题”。

【讨论】:

    猜你喜欢
    • 2013-10-03
    • 2023-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多