Excel流程以找到最佳范围以最大化数据

时间:2016-03-15 21:25:21

标签: excel analysis solver maximize

我有一个包含5列A,B,C,D和E的电子表格,所有相同的长度都包含数字数据。

A,B和C列的值均为-10到+10,D列为结果。在E列中我有一个If AND公式,只有当A,B或C落在一个范围内时,才会显示D的相应结果。范围由IF AND公式引用的单独单元格设置。

我想为3列中的每一列找到一个单独的范围,这将最大化相邻列E中的平均值。我试图使用进化求解器,但它每次都给我不同的结果。其他求解器方法似乎不起作用,但我是求解器函数的新手,所以我可能错了。

我正在寻找的结果的一个例子是; A必须在0到5之间,B可以在-10到+10之间,C是-2到0.这个标准最大化了相邻单元格E中的平均值。

我不知道使用解算器是否是最好的方法,但如果有人对如何更好地处理这个问题有任何建议而没有繁琐的试错,那将是非常有帮助的

我的电子表格如下所示:

                A |  B  |  C  |  D   |   E
                1    3     4     6       6
                3   -5   -0.2   -2      -2
               0.5  -1     2     1       1
                2    4     6     2       2 
               -1    2     1    10      10

               A    B     C
        Max   10    10    10 
        Min  -10   -10   -10 

    E count: 5 
 E avg: 3.4

A B C D都是粘贴的值, E使用IF语句检查相关列(ABC)是否在指定的最大和最小范围内,如果AB和C在MAX和MIN行的范围内,它在E中发布D的值,否则它离开它一片空白。我正在使用求解器来更改MAX / MIN行中的值,以尝试找到ABC的最大和最小混合,这将导致E列的最高平均值。

仅设置的约束是max和min在10到-10之内,最小计数是10,max必须>分  (在实际的电子表格中,数据会持续100个样本)

1 个答案:

答案 0 :(得分:1)

这种方式的实施使这成为一个令人讨厌的问题。 IF/AND运算导致它非常非线性且不连续且不可微分。即使用传统的基于梯度的方法进行优化并不容易。进化算法在我看来是正确的尝试。实际上,默认情况下,每次运行时都会使用不同的种子。您可以通过将RandomSeed设置为正数来更改解算器选项中的值。

我认为这个问题可以解决为线性混合整数规划问题。需要一些工作,但这可以找到有保证的最佳解决方案。我会看看我是否可以试试这个。

由于我们需要进行多次线性化,因此数学模型有点复杂。这就是我所拥有的:

enter image description here enter image description here enter image description here

注意:

  • 变量b表示数据单元格是否太低或太高
  • 变量delta表示数据行的所有值是否在边界内
  • 平均值的计算很复杂,因为我们将变量除以变量,因此我们需要线性化
  • 我们补充说,我们可以设置所选行的最小K

不同K的一些结果:

enter image description here enter image description here enter image description here

这个数据集并不那么有趣。如果增加最小/最大窗口的大小突然导致低值点进入解决方案,那将更有趣。