Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 达到最大解算器变量数?_Vba_Excel_Solver - Fatal编程技术网

Vba 达到最大解算器变量数?

Vba 达到最大解算器变量数?,vba,excel,solver,Vba,Excel,Solver,我正在使用excel解算器解决优化问题(使用进化/遗传算法实现最大化)。然而,在为3-4个输入变量和大约1000个样本设置底部和顶部边界后,我没有遇到任何问题。适应度函数非常简单,只是调用的所有输出的总和。我曾经有一个(1000 x 4)输入矩阵和一个相应的(1000 x 1)输出列向量 现在,我有42个输入变量()。不幸的是,遗传算法没有找到最优的解决方案(它过滤掉了所有的输出;因此我只从我的列向量中调用了#NA)。我从“尝试”中了解到,只改变一个变量可以提高模型的适用性。因此,Solver/

我正在使用excel解算器解决优化问题(使用进化/遗传算法实现最大化)。然而,在为3-4个输入变量和大约1000个样本设置底部和顶部边界后,我没有遇到任何问题。适应度函数非常简单,只是调用的所有输出的总和。我曾经有一个(1000 x 4)输入矩阵和一个相应的(1000 x 1)输出列向量

现在,我有42个输入变量()。不幸的是,遗传算法没有找到最优的解决方案(它过滤掉了所有的输出;因此我只从我的列向量中调用了#NA)。我从“尝试”中了解到,只改变一个变量可以提高模型的适用性。因此,Solver/GA似乎在运行“爬山”时遇到问题

根据经验,我发现14个变量(设置为底部阈值)或5+5个变量(设置为底部+顶部阈值)是求解器可以处理的最大值。 设置非常标准,我检查了不同的修改

约束精度:0.001-0.000001 缩放:开/关

收敛(GA):0.001-0.000001 人口规模:01100200 突变率:0.01,0.075,0.2,0.5,0.9

在大约40次迭代之后,它停止并且没有调用任何输出(100%过滤掉)


是否有其他人遇到过此问题?我是否达到了Excel solver或GA的极限?如果是,是否有一个解决方案可以解决我在Excel中的问题,或者我必须使用Matlab/Python库,它可以处理这么多变量?

Excel解算器限制200个变量单元格。如果您点击任意超过200个可调单元格,您将看到此消息

您有两种选择:

  • 通过处理问题,减少可调整单元格的数量
  • 请尝试excel以外的其他可用解算器,这些解算器具有更高的可调单元格限制

我认为,如果你达到可变限制,你会收到一条信息,比如“太多可调单元格”,算法甚至无法启动。我怀疑还有其他事情会发生(比如进化算法生成无法评估的点)。您可以尝试GRG非线性解算器。