如何在C#中实现Excel Solver功能?

时间:2010-04-15 15:00:46

标签: c# excel optimization solver

我在C#中有一个应用程序,我需要做一些优化计算,就像Excel Solver Add-in一样,一个选项肯定是编写我自己的求解器实现,但是我有点时间,所以我'我正在研究已经存在的图书馆,可以帮助我解决这个问题。

我一直在尝试Microsoft Solver Foundation,这看起来非常整洁和酷,问题是它似乎不能用于我需要做的计算。

在这个问题的最后,我正在添加有关我需要执行和优化的计算的信息。

所以基本上我的问题是,如果你们中的任何人知道我可以用于此目的的任何其他库,或任何可以帮助我自己的解算器的教程,或任何能让我领导解决这个问题的想法。

感谢。

其他信息:

这是我需要计算的数据:

我有7个变量,我们称之为var1,var2,...,var7

这些变量的约束是:

  • 所有这些都需要为0< = varn< = 0.5(其中n是变量的数量)
  • 所有变量的总和应等于1

目标是最大化目标公式,在Excel中如下所示:

 (MMULT(TRANSPOSE(L26:L32),M14:M20)) / (SQRT(MMULT(MMULT(TRANSPOSE(L26:L32),M4:S10),L26:L32))) 

您在此公式中看到的范围L26:L32实际上是包含上述变量的范围,var1,var2,...,varn。

M14:M20和M4:S10是我从不同来源获得的数据的范围,更有可能是十进制值。

正如我之前所说,我使用的是Microsoft Solver Foundation,我用它来模拟几乎所有内容,我创建了处理目标公式操作的函数,但是当我尝试解决模型时它总是失败,我认为它是因为操作的复杂性。

无论如何,我只想展示这些数据,以便您了解我需要实施的计算类型。

1 个答案:

答案 0 :(得分:2)

以下是一些商业.NET库,包含不同类型的多变量优化函数,可以替代Excel的求解器:

如果您为此找到了一个好的非商业/开源图书馆,请告诉我。