我有一个 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,我用它建模了几乎所有东西,我创建了处理目标公式运算的函数,但是当我尝试求解模型时它总是失败,我认为这是因为操作的复杂性。
无论如何,我只是想展示这些数据,以便您了解我需要实现的计算类型。