Excel 寻找最佳范围以最大化数据的过程
Excel process to find optimal range to maximize data
我有一个包含 5 列 A、B、C、D 和 E 的跨页 sheet,所有列的长度都相同,都包含数字数据。
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.
中的平均值
我不知道使用求解器是否是解决此问题的最佳方法,但如果有人对如何在不进行繁琐的反复试验的情况下更好地解决此问题有任何建议,那将非常有帮助
我的点差[=28=] 如下所示:
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 语句检查相关列 (A B C) 是否在指定的最大和最小范围内,如果 A B 和 C 在 MAX 和 MIN 行的范围内,它会在 E 中发布 D 的值,否则它离开它是空白的。我正在使用求解器更改 MAX / MIN 行中的值,以尝试找到 ABC 的最大值和最小值的最佳组合,这将导致列 E.
的最高平均值
我设置的唯一约束是最大值和最小值在 10 到 -10 之间,最小计数为 10,最大值必须 > 最小值
(在实际传播中sheet 数据持续 100 个样本)
这种实现方式使它成为一个棘手的问题。 IF/AND
操作导致其高度非线性、不连续且不可微分。 IE。使用传统的基于梯度的方法不太容易优化。在我看来,进化算法是值得尝试的正确方法。事实上,默认情况下每次它都会使用不同的种子 运行。您可以通过将 RandomSeed
设置为正数来在求解器选项中更改它。
我认为这个问题可以作为一个线性混合整数规划问题来解决。需要做一些工作,但这将使找到有保证的最佳解决方案成为可能。我看看能不能试试这个。
数学模型有点复杂,因为我们需要做几个线性化。这是我拥有的:
备注:
- 变量 b 指示数据单元格是太低还是太高
- 变量 delta 表示数据行的所有值是否都在边界内
- 一个变量除以一个变量,均值的计算比较复杂,所以需要线性化
- 我们补充说我们可以设置至少 K 个选定行
不同K的一些结果:
这个数据集不是很有趣。如果增加 min/max window 的大小突然导致低值点进入解决方案会更有趣。
我有一个包含 5 列 A、B、C、D 和 E 的跨页 sheet,所有列的长度都相同,都包含数字数据。
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.
中的平均值我不知道使用求解器是否是解决此问题的最佳方法,但如果有人对如何在不进行繁琐的反复试验的情况下更好地解决此问题有任何建议,那将非常有帮助
我的点差[=28=] 如下所示:
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 语句检查相关列 (A B C) 是否在指定的最大和最小范围内,如果 A B 和 C 在 MAX 和 MIN 行的范围内,它会在 E 中发布 D 的值,否则它离开它是空白的。我正在使用求解器更改 MAX / MIN 行中的值,以尝试找到 ABC 的最大值和最小值的最佳组合,这将导致列 E.
的最高平均值我设置的唯一约束是最大值和最小值在 10 到 -10 之间,最小计数为 10,最大值必须 > 最小值 (在实际传播中sheet 数据持续 100 个样本)
这种实现方式使它成为一个棘手的问题。 IF/AND
操作导致其高度非线性、不连续且不可微分。 IE。使用传统的基于梯度的方法不太容易优化。在我看来,进化算法是值得尝试的正确方法。事实上,默认情况下每次它都会使用不同的种子 运行。您可以通过将 RandomSeed
设置为正数来在求解器选项中更改它。
我认为这个问题可以作为一个线性混合整数规划问题来解决。需要做一些工作,但这将使找到有保证的最佳解决方案成为可能。我看看能不能试试这个。
数学模型有点复杂,因为我们需要做几个线性化。这是我拥有的:
备注:
- 变量 b 指示数据单元格是太低还是太高
- 变量 delta 表示数据行的所有值是否都在边界内
- 一个变量除以一个变量,均值的计算比较复杂,所以需要线性化
- 我们补充说我们可以设置至少 K 个选定行
不同K的一些结果:
这个数据集不是很有趣。如果增加 min/max window 的大小突然导致低值点进入解决方案会更有趣。