我正在尝试在.NET中解决一些简单的方程式。我遇到Math.NET并对其进行评估。
Solver()
方法似乎是我需要的方法,但我无法弄清楚如何在这种方法中使用副条件。
为了说明我的问题,我会给你一个样本:
Given:
0 <= a_i <= 100
0 <= b <= 100
0 <= c
a_i, b and c are given
x_1, ..., x_n should be optimized
f(x) = x_1*a_1 + x_2*a_2 + ... + x_n*a_n = b
Side conditions:
g(x) = x_1 + x_2 + ... + x_n = c
0 <= x_i
是否可以使用求解方法或Math.NET的任何其他组件解决此类问题,或者您是否知道可以用于解决此问题的任何(免费用于商业用途).NET库? 我不想自己为这样一个常见问题写一个算法。
最好的问候&amp;提前谢谢
答案 0 :(得分:2)
ALGLIB非常适合这些任务。在constrained optimization上查看他们的页面。
编辑:它有免费许可证(GPL)和商业许可证,起价为370美元。
答案 1 :(得分:2)
恕我直言Microsoft Solver Foundation是实现这一目标的方法。 Express版本是免费的AFAIK,功能强大,适用于大多数小型应用程序。
正如我现在看到的那样,Express版本只是为了探索而缩进 - 但是(现在?)有一个用于MSDN订阅者的Standard-Lib,因此我还没有删除此帖子,因为您可能有MSDN订阅。
答案 2 :(得分:1)
您需要一个带有simplex方法或Marquardt非线性优化等约束的优化器。