我有一个包含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个样本)
答案 0 :(得分:1)
这种方式的实施使这成为一个令人讨厌的问题。 IF/AND
运算导致它非常非线性且不连续且不可微分。即使用传统的基于梯度的方法进行优化并不容易。进化算法在我看来是正确的尝试。实际上,默认情况下,每次运行时都会使用不同的种子。您可以通过将RandomSeed
设置为正数来更改解算器选项中的值。
我认为这个问题可以解决为线性混合整数规划问题。需要一些工作,但这可以找到有保证的最佳解决方案。我会看看我是否可以试试这个。
由于我们需要进行多次线性化,因此数学模型有点复杂。这就是我所拥有的:
注意:
不同K的一些结果:
这个数据集并不那么有趣。如果增加最小/最大窗口的大小突然导致低值点进入解决方案,那将更有趣。