在Excel中有1000x1000matrix时如何提高效率?

使用OpenSolver ,我试图解决问题大小为1000的基本分配问题 。

所以excel文件有一个1000×1000的matrix。 matrix内的每个值可以是0或1。

解决一个样本问题需要超过10个小时才能完成,并有100个样本。 但我有一个星期完成整个事情。

我怀疑效率低下的主要原因是由matrix造成的,Excel如何处理它。

有什么办法可以加快这个过程吗? 有任何想法吗?

任何帮助表示赞赏! 谢谢。

我同意,这可能是由于数据进出Excel的时间。 这个大小的分配问题的解决时间最多应该是几分钟。 看到这里的一些时间。 问题不是很小:1000 x 1000表示2k方程和1e6variables。 然而,分配问题结构简单,解决得非常快。 看来你想要连续运行几个数据集,所以这是一个比交互式任务更多的批处理操作。

一个简单的方法是编写一些代码,生成一个数据集的LP文件,然后在求解器(公有领域求解器将执行,例如CBC,GLPK)中input。 然后创build一个运行所有数据集的batch file。

这1000个1000个单元是由链接和引用组成的吗? 或者你有脚本写这些1和0? 如果刷新1000 x 1000个链接,则工作簿将减慢爬行速度。 请做一个复制>粘贴特殊值>,如果可以的话,所以工作簿不会不断更新。

另外,看到这个。

http://datapigtechnologies.com/blog/index.php/ten-things-you-can-do-to-speed-up-your-excel-vba-code/

1000×1000的matrix。 matrix内的每个值可以是0或1。

解决scheme是math的。 尝试find一些块对angular线结构,并对每个块进行对angular化。 这是一个非常难的问题。

http://mathworld.wolfram.com/BlockDiagonalMatrix.html

如果您喜欢OpenSolver并想坚持下去,请尝试使用QuickSolve选项。 它可能会或可能不适用于您,这取决于后续100次优化中的哪些更改。 OpenSolver通常会很慢地解决问题,但是如果大部分时间都花在初始化模型上,那么100个优化的其余部分可以在几分钟内解决。 你甚至可以让VBA为你做这个。
或者你可以采取一步,尝试SolverStudio。