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

Vic*_*Vic 5 c# excel optimization solver

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

我一直在尝试微软解决方案基金会,这看起来非常整洁和酷,问题是它似乎不适用于我需要做的那种计算.

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

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

谢谢.

附加信息:

这是我需要计算的数据:

我有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))) 
Run Code Online (Sandbox Code Playgroud)

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

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

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

在任何情况下,我只是想显示这些数据,以便您可以了解我需要实现的计算类型.

Doc*_*own 2

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

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