我正在使用 Excel 求解器来解决优化问题(使用进化/遗传算法进行最大化)。然而,在为大约 3-4 个输入变量和大约 1,000 个样本设置底部和顶部边界后,我没有遇到任何问题。适应度函数非常简单,只是调用的所有输出的总和。我曾经有一个(1000 x 4)输入矩阵和相应的(1000 x 1)输出列向量吗?
现在,我有 42 个输入变量(小于求解器应处理的变量最大大小)。不幸的是,GA 没有找到最佳解决方案(它过滤掉所有输出;所以我只从我的列向量中调用 #NA)。我从“尝试”中知道,仅改变一个变量就可以提高模型的适应性。所以求解器/GA 似乎在运行“爬山”时遇到问题。
根据经验,我发现设置为底部阈值的 14 个变量或设置为底部 + 顶部阈值的 5+5 个变量是求解器可以处理的最大数量。 设置非常标准,我检查了不同的修改。
约束精度:0.001 - 0.000001 缩放:开/关
收敛性(GA):0.001 - 0.000001 人口规模:0、100、200 突变率:0.01、0.075、0.2、0.5、0.9
大约 40 次迭代后,它停止,并且没有调用任何输出(100% 过滤掉)。
其他人也遇到过这个问题吗?我是否达到了 Excel 求解器或 GA 的极限?如果是的话,有没有解决方案可以解决我在 Excel 中的问题,或者我是否必须使用可以处理这么多变量的 Matlab/Python 库?
Excel 求解器的变量单元格数量限制为 200 个。如果您点击的可调整单元格超过 200 个,您将看到此消息。
您有 2 个选择:
使用 Libreoffice。这就是我所做的,似乎没有限制,并且是一个更好的开源求解器。以前从来没有出现过这种情况,但现在检查一下。